#include <LiquidCrystal.h>
#include <Keypad.h>
//LCD Display Anschließen:
LiquidCrystal lcd(16,17,18,19,20,21);
//Keypad anschließen:
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char Taste[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 5, 4, 3, 2 };
uint8_t rowPins[ROWS] = { 9, 8, 7, 6 };
Keypad keypad = Keypad(makeKeymap(Taste), rowPins, colPins, ROWS, COLS);
//LED pins definieren
const int Button=13;
const int LED1R=A15;
const int LED1G=A14;
const int LED1B=A13;
const int LED2R=A12;
const int LED2G=A11;
const int LED2B=A10;
const int LED3R=A9;
const int LED3G=A8;
const int LED3B=A7;
const int LED4R=A6;
const int LED4G=A5;
const int LED4B=A4;
int status = 0;
int lauf = 0;
int difA = 0;
int difB = 0;
int difC = 0;
const int ON = 1024;
const int OFF = 0;
int ein1 = -5;
int ein2 = -5;
int ein3 = -5;
int ein4 = -5;
char difficulty = 'z';
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
//LED Outputs
pinMode(LED1R,OUTPUT);
pinMode(LED1G,OUTPUT);
pinMode(LED1B,OUTPUT);
pinMode(LED2R,OUTPUT);
pinMode(LED2G,OUTPUT);
pinMode(LED2B,OUTPUT);
pinMode(LED3R,OUTPUT);
pinMode(LED3G,OUTPUT);
pinMode(LED3B,OUTPUT);
pinMode(LED4R,OUTPUT);
pinMode(LED4G,OUTPUT);
pinMode(LED4B,OUTPUT);
}
void loop()
{
if(status == 0)
{
lcd.clear();
lcd.print("WELCOME");
delay(2000);
status = 1;
}
if(status == 1)
{
lcd.clear();
lcd.print("Press a Button");
lcd.setCursor(0,1);
lcd.print("to start");
status = 2;
}
if(status == 2)
{
char startbutton = keypad.getKey();
if(startbutton != NO_KEY)
{
status = 3;
}
}
if(status == 3)
{
lcd.clear();
lcd.print("Select a");
lcd.setCursor(0,1);
lcd.print("difficulty...");
delay(1700);
status = 4;
}
if(status == 4)
{
lcd.clear();
lcd.print("by pressing");
lcd.setCursor(0,1);
lcd.print("A, B or C:");
status = 5;
}
if(status == 5)
{
difficulty = keypad.getKey();
if(difficulty == 'A' || difficulty == 'B' || difficulty == 'C')
{
lcd.clear();
lcd.print("Selected");
lcd.setCursor(0,1);
lcd.print("difficulty: ");
lcd.print(difficulty);
status = 6;
}
}
if(status == 6)
{
int ran1 = random(1,10);
int ran2 = random(1,10);
int ran3 = random(1,10);
int ran4 = random(1,10);
if(difficulty == 'A')
{
if(difA == 0)
{
lcd.clear();
lcd.print(difficulty);
lcd.print(" is the easiest");
lcd.setCursor(0,1);
lcd.print("Mode...");
delay(2500);
lcd.clear();
lcd.print("That means:");
delay(2500);
lcd.clear();
lcd.print("Red = False");
lcd.setCursor(0,1);
lcd.print("num and pos");
delay(3000);
lcd.clear();
lcd.print("Yellow = right");
lcd.setCursor(0,1);
lcd.print("num, false pos");
delay(3000);
lcd.clear();
lcd.print("Green = right");
lcd.setCursor(0,1);
lcd.print("num and pos");
delay(5000);
lcd.clear();
lcd.print(" Lets go! ");
delay(3000);
difA = 1;
}
if(difA == 1)
{
Serial.print(lauf);
if(lauf == 0)
{
lcd.clear();
lcd.print("Select Numbers");
lcd.setCursor(0,1);
lcd.print("from 0 - 9:");
delay(2500);
lcd.clear();
lcd.cursor();
lauf = 1;
}
int ein1 = keypad.getKey() - '0';
if(lauf == 1 && ein1 <= 9 && ein1 >= 1)
{
int ein1 = keypad.getKey();
lcd.print(ein1);
lauf = 2;
}
if(lauf == 2 && keypad.getKey() > -1 && keypad.getKey() < 10)
{
int ein2 = keypad.getKey();
lcd.print(ein2);
lauf = 3;
}
if(lauf == 3 && keypad.getKey() > -1 && keypad.getKey() < 10)
{
int ein3 = keypad.getKey();
lcd.print(ein3);
lauf = 4;
}
if(lauf == 4 && keypad.getKey() > -1 && keypad.getKey() < 10)
{
int ein4 = keypad.getKey();
lcd.print(ein4);
lauf = 5;
}
if(lauf == 5)
{
lcd.setCursor(0,1);
lcd.print("Check Numbers:");
lauf = 6;
}
if(lauf == 6)
{
if(ein1 == ran1)
{
analogWrite(LED1G,ON);
}
if(ein1 == ran2 || ein1 == ran3 || ein1 == ran4)
{
analogWrite(LED1G, ON);
analogWrite(LED1R, ON);
}
else{}
}
}
}
if(difficulty == 'B')
{
if(difB == 0)
{
lcd.clear();
lcd.print(difficulty);
lcd.print(" is the easiest");
lcd.setCursor(0,1);
lcd.print("Mode...");
delay(2500);
lcd.clear();
lcd.print("That means:");
delay(2500);
lcd.clear();
lcd.print("Red = False");
lcd.setCursor(0,1);
lcd.print("num and pos");
delay(3000);
lcd.clear();
lcd.print("Yellow = right");
lcd.setCursor(0,1);
lcd.print("num, false pos");
delay(3000);
lcd.clear();
lcd.print("Green = right");
lcd.setCursor(0,1);
lcd.print("num and pos");
delay(5000);
lcd.clear();
lcd.print(" Lets go! ");
delay(3000);
}
}
if(difficulty == 'C')
{
if(difC == 0)
{
lcd.clear();
lcd.print(difficulty);
lcd.print(" is the easiest");
lcd.setCursor(0,1);
lcd.print("Mode...");
delay(2500);
lcd.clear();
lcd.print("That means:");
delay(2500);
lcd.clear();
lcd.print("Red = False");
lcd.setCursor(0,1);
lcd.print("num and pos");
delay(3000);
lcd.clear();
lcd.print("Yellow = right");
lcd.setCursor(0,1);
lcd.print("num, false pos");
delay(3000);
lcd.clear();
lcd.print("Green = right");
lcd.setCursor(0,1);
lcd.print("num and pos");
delay(5000);
lcd.clear();
lcd.print(" Lets go! ");
delay(3000);
}
}
}
}