#define set0(r,b) r &= ~(1<<b)
#define set1(r,b) r |= 1<<b
#define test(r,b) (r&(1<<b))
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
String vysledok;
String tretie[] = {"Peter", "Jano", "Tono", "Ado"};
int riadok;
void setup() {
lcd.begin(20,4);
for(int i = 4; i < 8; i++){
set0(DDRD, i);
set1(PORTD, i);
}
set1(SREG, 7);
set1(PCICR, PCIE2);
set1(PCMSK2, PCINT23);
set1(PCMSK2, PCINT22);
set1(PCMSK2, PCINT21);
set1(PCMSK2, PCINT20);
}
void loop() {
// put your main code here, to run repeatedly:
}
void vymaz(){
lcd.setCursor(0, riadok);
lcd.print(" ");
}
void vypis(int ciselko){
lcd.setCursor(0, riadok);
if(ciselko == 1){
vysledok = random(1, 6);
}
else if(ciselko == 2){
vysledok = random(500, 1500);
}
else if(ciselko == 3){
vysledok = tretie[random(0,3)];
}
else if(ciselko == 4){
vysledok = random(0,9);
}
lcd.print(vysledok);
}
ISR(PCINT2_vect){
if(test(PIND, 7) == 0){
riadok = 0;
vymaz();
vypis(1);
}
else if(test(PIND, 6) == 0){
riadok = 1;
vymaz();
vypis(2);
}
else if(test(PIND, 5) == 0){
riadok = 2;
vymaz();
vypis(3);
}
else if(test(PIND, 4) == 0){
riadok = 3;
vymaz();
vypis(4);
}
}