#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
//vystupy LED
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
//vstupy tlacidla
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(13, INPUT_PULLUP);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
}
void loop() {
int start =0, i, stlac=0, skoc=0, level=0, counter=0;
int tlacidlo[8][2] = {{2,10},{3,11},{4,12},{5,13},{6,14},{7,15},{8,16},{9,17}};
unsigned long casStart=0, casStop;
float sec=0, casMin=0, casMax=0, timer=0;
bool a=1;
lcd.clear();
lcd.print(" STLAC TLACIDLA");
lcd.setCursor(0,1);
lcd.print(" PRE SPUSTENIE");
do{
digitalWrite(2, a);
digitalWrite(3, a);
delay(400);
a=!a;
if((digitalRead(10)==LOW)&&(digitalRead(11)==LOW))start=1;
}while(start!=1);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
lcd.clear();
do{
if(counter==10&&level<8){
level++;
counter=0;
}
i = random(8);
lcd.setCursor(8,0);
lcd.print("min:");
lcd.print(casMin/1000);
lcd.setCursor(8,1);
lcd.print("max:");
lcd.print(casMax/1000);
lcd.setCursor(0,0);
lcd.print("REAKCIA");
delay(random(50,(2000-(level*200))));
digitalWrite(tlacidlo[i][0], HIGH);
delay(20);
casStart = millis();
do{
stlac = digitalRead(tlacidlo[i][1]);
timer = millis() - casStart;
lcd.setCursor(0,1);
lcd.print(timer/1000);
if(timer>(10000-(level*2000))){
skoc=1;
stlac=0;
}
}while(stlac!=0);
casStop = millis() - casStart;
sec = casStop;
lcd.setCursor(0,1);
lcd.print(sec/1000);
digitalWrite(tlacidlo[i][0], LOW);
if(casMin > casStop||casMin==0) casMin = casStop;
if(casMax < casStop) casMax = casStop;
counter++;
}while(skoc!=1);
do{
lcd.setCursor(0,0);
if(a==HIGH)lcd.print("KONIEC ");
else lcd.print(" ");
digitalWrite(9, a);
delay(400);
a=!a;
}while(digitalRead(17)!=LOW);
digitalWrite(9, LOW);
}