Josh From BreakoutBros.com
Published © CC BY-NC

BreakoutBros Halloween Day Special: Stranger Things Board

Make a Stranger Things Digital Ouija board using regular LEDs.

BeginnerFull instructions provided2 hours6,805
BreakoutBros Halloween Day Special: Stranger Things Board

Things used in this project

Story

Read more

Schematics

Digital Ouija Board Schematic

Code

Stranger Things Light Board Code

C/C++
This is the full code for displaying "Help Me"
typedef struct // Create a structure to convert Binary of the PORTs for the correspinding Letter
{
  byte portd;
  byte portb;
}letter_data_t;

const letter_data_t letter[] =
{
  {B00000100,B11111110}, //A
  {B00000100,B11111101}, //B
  {B00000100,B11111011}, //C
  {B00000100,B11110111}, //D
  {B00000100,B11101111}, //E
  {B00001000,B11111110}, //F
  {B00001000,B11111101}, //G
  {B00001000,B11111011}, //H
  {B00001000,B11110111}, //I
  {B00001000,B11101111}, //J
  {B00010000,B11111110}, //K
  {B00010000,B11111101}, //L
  {B00010000,B11111011}, //M
  {B00010000,B11110111}, //N
  {B00010000,B11101111}, //O
  {B00100000,B11111110}, //P
  {B00100000,B11111101}, //Q
  {B00100000,B11111011}, //R
  {B00100000,B11110111}, //S
  {B00100000,B11101111}, //T
  {B01000000,B11111110}, //U
  {B01000000,B11111101}, //V
  {B01000000,B11111011}, //W
  {B01000000,B11110111}, //X
  {B01000000,B11101111}, //Y
  {B10000000,B11111111}, //Z
  {B00000000,B00000000}  //26 = 0ff
};
  

void setup() {
  // setup each pin used as an output
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);

}

void loop() {
  flickerRandom();
  delay(2000);
  runHelpme();
  delay(2000);
  flickerRandom();
  flickerRandom();
  runRandom();
}

void runHelpme()
{

  PORTD = letter['h'-'a'].portd;
  PORTB = letter['h'-'a'].portb;
  delay(1000);
  PORTD = letter['e'-'a'].portd;
  PORTB = letter['e'-'a'].portb;
  delay(1000);
  PORTD = letter['l'-'a'].portd;
  PORTB = letter['l'-'a'].portb;
  delay(1000);
  PORTD = letter['p'-'a'].portd;
  PORTB = letter['p'-'a'].portb;
  delay(1000);
  PORTD = letter[26].portd;
  PORTB = letter[26].portb;
  delay(1000);
  PORTD = letter['m'-'a'].portd;
  PORTB = letter['m'-'a'].portb;
  delay(1000);
  PORTD = letter['e'-'a'].portd;
  PORTB = letter['e'-'a'].portb;
  delay(1000);
  PORTD = letter[26].portd;
  PORTB = letter[26].portb;
  delay(1000);
  }

void runRandom()
{
  for(int i = 0; i<=15; i++)
  {
    int x = random(0,25);
    PORTD = letter[x].portd;
    PORTB = letter[x].portb;
    delay(random(40,200));
    delay(random(40,200));
    delay(random(40,200));
  }
}

void flickerRandom()
{
  int x = random(0,25);
  for(int i = 0; i<=5; i++)
  {
    PORTD = letter[x].portd;
    PORTB = letter[x].portb;
    delay(random(40,500));
    PORTD = letter[26].portd;
    PORTB = letter[26].portb;
    delay(random(40,500));
  }
}

Credits

Josh From BreakoutBros.com

Josh From BreakoutBros.com

14 projects • 88 followers
At BreakoutBros we try to be a link between electronics designers and hobbyists. We make electronics tinkering easy for everyone but teach professional methods.

Comments