#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27,16,2);
int num1=0;
int num2=0;
int score=0;
boolean btnReset=false;
bool btnCheck=false;
long int interval;
void setup() {
// Serial
Serial.begin(9600);
// Display setup
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("BODOV:");
lcd.setCursor(7,1);
lcd.print(score);
lcd.setCursor(0,0);
lcd.print("c.1:");
lcd.setCursor(9,0);
lcd.print("c.2:");
// Pin setup
DDRD &=~(1<<6);
DDRD &=~(1<<5);
PORTD |=1<<6;
PORTD |=1<<5;
}
void loop() {
if(millis() >= interval){
genNumber();
interval = interval +555;
}
checkNumbers();
led();
reset();
}
void genNumber(){
num1= random(1, 5);
num2= random(1, 5);
lcd.setCursor(5, 0);
lcd.print(num1);
lcd.setCursor(14, 0);
lcd.print(num2);
}
void checkNumbers(){
if((PIND&(1<<5)) !=0 && btnCheck !=true){
btnCheck=true;
}
if((PIND&(1<<5)) ==0 && btnCheck == true){
btnCheck=false;
if(num1==num2){
score= score+1;
lcd.setCursor(7,1);
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(score);
}
if(num1 != num2){
if(score>0){
score= score-1;
lcd.setCursor(7,1);
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(score);
}
}
}
}
void led(){
if(score>=5){
PORTD |=1<<3;
PORTD &=~(1<<2);
}
if(score<5){
PORTD |=1<<2;
PORTD &=~(1<<3);
}
}
void reset(){
if((PIND&(1<<6)) !=0 && btnReset !=true){
btnReset=true;
}
if((PIND&(1<<6)) ==0 && btnReset == true){
btnReset=false;
Serial.println("Reset");
score=0;
lcd.setCursor(7,1);
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(score);
}
}