World of Electronics and Cyber Consultancy

LED Memory Game Built with Arduino and GIANT push buttons from C.B.Electronics Beirut Lebanon WITH CODE

LED Memory Game Built with Arduino and GIANT push buttons from C.B.Electronics Beirut Lebanon

Items Needed:

  1. Arduino UNO
  2. BreadBord
  3. Jumper Wires Male to Male
  4. Jumper Wires Kit
  5. 12V 1A Power Adaptor
  6. Push Buttons 100 mm (10 cm diameter)
  7. Push Button 60 mm (6 cm diameter)
  8. Battery Coss Connector (DJ621)
  9. NPN Transistor PN2222 (2N2222)
  10. Resistor 4.7 KOhm 0.5 Watt
  11. LCD 2 Lines I2C
  12. Jumper Wires Male to Female

Video:

Code:

//Simon says in LEDS. The game here ra7 betdawe leds w ba3den l player bado y3idoun.

int buttonPins [] ={2,3,4,5,6};
int ledPins [] = {7,8,9,10,11};

int numberButtons = 5;

int roundCounter = 0;
int roundLedCounter = 3;

unsigned long roundDuration = 10000; // 10 seconds la kel round

int BoardLEDS [50];
int userBoardLEDS[50];

int resetButtonPin = 13;
int resetLedPin = 12;

bool start = false;

//LCD stuff

#include "LCD.h"
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27 // <<----- Add your address here. Find it from I2C Scanner
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7


LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);




void setup() {
// put your setup code here, to run once:

Serial.begin(9600);

lcd.begin(20,4);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);

lcd.setCursor(0,0);
lcd.print("C.B.ELECTRONICS");
delay(500);
lcd.setCursor(0,1);
lcd.print("Lebanese Park");
delay(500);
lcd.clear();

lcd.setCursor(0,0);
lcd.print("Press");
lcd.setCursor(0,1);
lcd.print("reset button");

randomSeed(analogRead(0));

for(int i=0;i<5;i++)
{
pinMode(buttonPins[i], INPUT_PULLUP);
pinMode(ledPins[i], OUTPUT);
}
pinMode(resetButtonPin, INPUT_PULLUP);
pinMode(resetLedPin, OUTPUT);

TurnONLEDS();
ResetFunc();
TurnOFFLEDS();

lcd.clear();


}

void loop() {
// put your main code here, to run repeatedly:
PlayRound();
}

void PlayRound()
{
delay(1000);
lcd.setCursor(0,0);
lcd.print("Round: ");
lcd.print(roundCounter+1);

for (int i=0;i<roundLedCounter;i++)
{
BoardLEDS[i]=random(7,12);
}

for (int i=0;i<roundLedCounter;i++)
{
digitalWrite(BoardLEDS[i], HIGH);
delay(3000);
digitalWrite(BoardLEDS[i], LOW);
delay(300);
}

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Balachna 1s");
delay(1000);

unsigned long startTime = millis();

int counter = 0;

while( (millis() - startTime) < roundDuration)
{

lcd.setCursor(0,1);
lcd.print((roundDuration - (millis() - startTime)) / 1000);

for(int i=0;i<numberButtons;i++)
{

if(digitalRead(buttonPins[i])==LOW)
{
Serial.println(i);
Serial.println("Hayda l butoon makbous");
userBoardLEDS[counter]=ledPins[i];

digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
delay(100);
counter ++;
while(digitalRead(buttonPins[i])==LOW)
{
//do nothing
}

}

}


bool win = true;
if (counter == roundLedCounter)
{
for(int i=0;i<roundCounter;i++)
{
if (BoardLEDS[i]!=userBoardLEDS[i])
{
win = false;
lcd.clear();
lcd.print("KHseret");
delay(1000);
}
}

if(win==true)
{
lcd.clear();
lcd.print("rbe7et");
}
}
}


roundCounter++;
roundLedCounter++;
roundDuration = roundDuration +1;
}

void TurnONLEDS()
{
for(int i=0;i<numberButtons;i++)
{
digitalWrite(ledPins[i], HIGH);
}
}
void TurnOFFLEDS()
{
for(int i=0;i<numberButtons;i++)
{
digitalWrite(ledPins[i], LOW);
}
}
void ResetFunc()

{
while(!start)
{
if (digitalRead(resetButtonPin) == LOW)
{
start = true;
roundCounter = 0;
roundLedCounter = 3;
}
}

digitalWrite(resetLedPin, HIGH);

}