/* MUSICAL LED DICE USING ARDUINO (NANO OR UNO) Programmed and Developed by: Sartaj Singh Virdi TECHNOTAJ.COM You are free to change the code and use for non commercial purpose only. */ #define DEBUG 0 int first = 2; // LED defined to the pins of arduino int second = 3; int third = 4; int fourth = 5; int fifth = 6; int sixth = 7; const int buzzer = 8; //buzzer is on pin 8 int button = 12; int pressed = 0; int j = 0; // variable for number of beeps // initialize digital pins void setup() { pinMode(buzzer, OUTPUT); for (int i = first; i <= sixth; i++) { pinMode(i, OUTPUT); } pinMode(button, INPUT); randomSeed(analogRead(0)); #ifdef DEBUG Serial.begin(9600); //check the numbers on the compiler #endif } void buildUpTension() { for (int i = first; i <= sixth; i++) { if (i != first) { digitalWrite(i - 1, LOW); } digitalWrite(i, HIGH); delay(100); } for (int i = sixth; i >= first; i--) { if (i != sixth) { digitalWrite(i + 1, LOW); } digitalWrite(i, HIGH); delay(100); } } void showNumber(int number) { digitalWrite(first, HIGH); if (number >= 2) { digitalWrite(second, HIGH); } if (number >= 3) { digitalWrite(third, HIGH); } if (number >= 4) { digitalWrite(fourth, HIGH); } if (number >= 5) { digitalWrite(fifth, HIGH); } if (number == 6) { digitalWrite(sixth, HIGH); } for (int j = 1; j <= number; j++) { tone(buzzer, 1000); delay(200); noTone(buzzer); delay(200); } } int throwDice() { // get a random number in the range [1,6] int randNumber = random(1, 7); #ifdef DEBUG Serial.println(randNumber); #endif return randNumber; } void setAllLEDs(int value) { for (int i = first; i <= sixth; i++) { digitalWrite(i, value); } } void loop() { //www.technotaj.com pressed = digitalRead(button); if (pressed == HIGH) { // remove previous number setAllLEDs(LOW); buildUpTension(); int thrownNumber = throwDice(); showNumber(thrownNumber); } }