Sunday, April 8, 2018

How to make Arduino lucid dreaming machine?

How to make Arduino lucid dreaming machine?

Lucid dreaming is the phenomenon where you are aware that you are dreaming while you are actually dreaming.

Many people have the ability to be aware while they are dreaming deliberately. While others can get aware only by coincidence.

However, there are many techniques to train your brain to become aware while asleep.

One of those techniques is creating a signal that triggers while you are at the REM Rapid Eye Movement stage of your sleep ( i.e. You are having a dream and your eyes are moving ) and this signal gets your brain’s attention to the fact that it’s a dream.

This technique has been applied using many devices and gadgets under the general name of lucid dreaming masks.

Some masks detect REM stage by monitoring eye movement while other masks can be simpler.

This simple circuit can induce lucid dream by blinking 2 LEDs periodically to catch the REM stage by chance.

If this happens, you become aware that you are inside a dream and start to control your dream world.

The circuit consists of microcontroller, battery, switch and 2 LEDs.

ATtiny85
2 LEDs
3Volts coin battery
IC socket

Connection




Circuit



Final Assembly


Code




/*
  Inception Sleep Goggles
  LEDs in the goggles blink an a timed pattern to alert you when you
  are dreaming. The program waits 2 hours for you to fall asleep 
  before starting the blink sequence every 10 minutes.
 
  This example code is in the public domain.
 */

void setup() {                
  // initialize the digital pin as an output.
  // We are using Pin 2 on the Attiny85 microcontroller
  pinMode(2, OUTPUT); 
  
  digitalWrite(2, HIGH);// blink LEDs once to signal power on
  delay(2000);
  digitalWrite(2, LOW);
  
  delay(7200000); // Wait 2 hours for sleep to start
}

void loop() {  
  digitalWrite(2, HIGH);   // set the LED on
  delay(1000);             // wait for a second
  digitalWrite(2, LOW);    // set the LED off
  delay(500);             // wait for a second
  digitalWrite(2, HIGH);   
  delay(500);              
  digitalWrite(2, LOW);    
  delay(500);              
  digitalWrite(2, HIGH);
  delay(250);
  digitalWrite(2, LOW);
  delay(250);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(600000);         //Wait 10 minutes
  
}














No comments: