#define set0(r,b) r&=~(1<<b)
#define set1(r,b) r|=(1<<b)
#define test(r,b) (r&(1<<b))
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int value;
int state;
int slovo;
int index;
void setup()
{
lcd.init();
lcd.backlight();
DDRD &= ~(1 << DDD7) & ~(1 << DDD6) & ~(1 << DDD5) & ~(1 << DDD4);
PORTD |= (1 << PD7) | (1 << PD6) | (1 << PD5) | (1 << PD4);
UBRR0 = 103;
UCSR0B |= (1 << TXEN0) | (1 << RXEN0);
UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00);
}
void loop()
{
if (!(PIND & (1 << PD7))) {
value = random(1, 7);
state = 1;
lcd.home();
lcd.print(value);
}
else if (!(PIND & (1 << PD6))) {
value = random(500, 1501);
state = 2;
lcd.home();
lcd.print(value);
}
else if (!(PIND & (1 << PD5))) {
int index = random(0, 4);
switch (index) {
case 0:
strcpy(slovo, "peter");
break;
case 1:
strcpy(slovo, "jano");
break;
case 2:
strcpy(slovo, "tono");
break;
case 3:
strcpy(slovo, "ado");
break;
lcd.home();
lcd.print(index);
}
state = 3;
}
else if (!(PIND & (1 << PD4))) {
value = random(0, 10);
state = 4;
lcd.home();
lcd.print(value);
}
if (state != 0) {
char buffer[32];
switch (state) {
case 1:
sprintf(buffer, "Cislo: %d\n", value);
break;
case 2:
sprintf(buffer, "Hodnota: %d\n", value);
break;
case 3:
sprintf(buffer, "Slovo: %s\n", slovo);
break;
}
}
}