Edward SandovalThomas Nguyen
Published

Toddler's toy, AKA, c l o u t b o x

A box that has leds that can be switched between to make sound

BeginnerFull instructions provided5 hours586
Toddler's toy, AKA, c l o u t b o x

Things used in this project

Story

Read more

Code

code

Arduino
#include <avr/wdt.h>

void softwareReset( uint8_t prescaller) {
  // start watchdog with the provided prescaller
  wdt_enable( prescaller);
  // wait for the prescaller time to expire
  // without sending the reset signal by using
  // the wdt_reset() method
  while(1) {}
}
const int sampleWindow = 250; // Sample window width in mS (250 mS = 4Hz)
unsigned int clap;
const int LED_1 = 12;
const int LED_2 = 11;
const int LED_3 = 10;
int pot = A2;
int btn1 = 6;
int btn2 = 5;
int btn3 = 4;
const int buzz1 = 3;
const int buzz2 = 2;

boolean state1 = false;
boolean state2 = false;
boolean state3 = false;
boolean state4 = false;
boolean state5 = false;
boolean state6 = false;

void setup() {
  pinMode(btn1, INPUT_PULLUP);
  pinMode(btn2, INPUT_PULLUP);
  pinMode(btn3, INPUT_PULLUP);
  pinMode(pot, INPUT_PULLUP);
  pinMode(buzz1, OUTPUT);
  pinMode(buzz2, OUTPUT);
  
}

void loop() {
   unsigned long start= millis();  // Start of sample window
 unsigned int peakToPeak = 0;   // peak-to-peak level

 unsigned int signalMax = 0;
 unsigned int signalMin = 1024;
 
  int btnState1 = digitalRead(btn1);
  int btnState2 = digitalRead(btn2);
  int btnState3 = digitalRead(btn3);
  int potValue = analogRead(pot)/3;
  Serial.println(potValue);


  // collect data for 250 miliseconds
 while (millis() - start < sampleWindow)
 {
   clap = analogRead(1);
      if (clap < 1024)  //This is the max of the 10-bit ADC so this loop will include all readings
      {
         if (clap > signalMax)
         {
           signalMax = clap;  // save just the max levels
         }
      else if (clap < signalMin)
        {
         signalMin = clap;  // save just the min levels
         }
     }
 }
 peakToPeak = signalMax - signalMin;  // max - min = peak-peak amplitude
 double volts = (peakToPeak * 3.3) / 1024;  // convert to volts

Serial.println(volts);
 if (volts >=.20){
  softwareReset( WDTO_60MS);
 }

  if(state1 == true){
  //turn on LED L1
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }

  if (state2 == true){
  //turn on LED L2
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }

  if(state3 == true){
  //turn on LED L3
  pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, HIGH);
  }

  if(state4 == true){
  //turn on LED L4
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);
  }

  if(state5 == true){
  //turn on LED L5
  pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, HIGH);
  }
  if(state6== true){
  //turn on LED L6
  pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);
  }  
  
//state1 ONE
if (potValue > 0 && potValue < 42)
{
  delay(100);

  if(state1 == false){
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW); 
  }
  if(state1 == true ){
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }
  
  if (state1 == false){
    if (btnState1 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
  state1 = true;
    }
  }
  
  if (state1 == true){
    if (btnState1 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
   state1 = true;
    }
  }

 /* if(state1 == true){
  //turn on LED L1
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }
  if(state1 == false){
  //turn off LED L1
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }*/
}

//led2 TWO
if (potValue > 42 && potValue < 84)
  {
  delay(100);

  if(state2 == false){
    pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }
  if(state2 == true){
    pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }

  if (state2 == false){
    if (btnState1 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
  state2 = true;   
    }
  }
  if (state2 == true){
    if (btnState1 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
      state1 = true;
    }
  }

  /*if (state2 == true){
  //turn on LED L2
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }
  if (state2 == false){
  //turn off LED L2
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  }*/
}  


//led3 THREE
  if (potValue > 84 && potValue < 126){
  delay(100);

  if (state3 == false){
    pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, HIGH);
  delay(500);
  pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, LOW);
  }
  if (state3 == true){
    pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, HIGH);
  }

  if (state3 == false){
    if (btnState2 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
  state3 = true;
    }
  }
  if (state3 == true){
    if (btnState2 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
   state3 = true;
    }
  }

  /*if(state3 == true){
  //turn on LED L3
  pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, HIGH);
  }
  if(state3 == false){
  //turn on LED L3
  pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, LOW);
  }*/
}

//led4 FOUR
if (potValue > 126 && potValue < 168){
  delay(100);

  if(state4 == false){
   pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);
  }
  if(state4 == true){
   pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);
  }

  if (state4 == false){
    if (btnState2 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
      state4 = true;
    }
  }
  if (state4 == true){
    if (btnState2 == HIGH){
      state4 = true;
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
      state4 = true;
    }
  }

  /*if(state4 == true){
  //turn on LED L4
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);
  }
  if(state4 == false){
  //turn on LED L4
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);
  }*/
}


//led5 FIVE
if (potValue > 168 && potValue < 210){
  delay(100);

  if (state5 == false){
     pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, HIGH);
  delay(500);
  pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, LOW);
  }
  if (state5 == true){
     pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, HIGH);
  }

  if (state5 == false){
    if (btnState3 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
      state5 = true;
    }
  }
  if (state5 == true){
    if (btnState3 == HIGH){
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
      state5 = true;
    }
  }

  /*if(state5 == true){
  //turn on LED L5
  pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, HIGH);
  }
  if(state5 == false){
  //turn off LED L5
  pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, LOW);
  }*/
} 

//led6 SIX
  if (potValue > 210 && potValue < 252){
  delay(100);

  if(state6 == false){
    pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);
  }
  if(state6 == true){
    pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);
  delay(500);
  pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);
  }

  if (state6 == false){
    if (btnState3 == HIGH){
      state6 = true;
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
      state6 = true;
    }
  }
  if (state6 == true){
    if (btnState3 == HIGH){
      state6 = true;
  tone(buzz1, 1000);
  tone(buzz2, 1000);
  delay(20);
  noTone(buzz1);
  noTone(buzz2);
      state6 = true;
    }
  }

  /*if(state6== true){
  //turn on LED L6
  pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);
  }  
  if(state6== false){
  //turn off LED L6
  pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);
  }*/
}
}

Credits

Edward Sandoval
2 projects • 1 follower
Contact
Thomas Nguyen
1 project • 0 followers
Contact
Thanks to Thomas N..

Comments

Please log in or sign up to comment.