//Mikrokontroler generira naključna števila od 0 do vključno 4; uporabi tudi funkcijo randomSeed().
//Naključno število se generira samo enkrat in sicer ob zagonu mikrokrmilnika.
//Generirana vrednost naj se izpiše na LED prikazovalniku, ki je priključen na pine PORTA D (PD0 do PD6).
//S pomočjo tipke, ki je priključena na PORT B (PD8), generirano vrednost z vsakim pritiskom
// na tipko povečamo za 1. Število lahko povečujemo do vrednosti 9. Nova vrednost se izpiše na
// LED prikazovalniku. S tipko, ki je priključena na PD7 pa vrednost ponastavimo na nič.
//Nalogo reši s pomočjo registrov.
char digit[10] = {0x3F,0x86,0xDB,0xCF,0x66,0xED,0xFD,0x87,0xFF,0x6F};
int pin[7] = {0,1,2,3,4,5,6};
int idx;
int st;
void setup() {
DDRD |= 0b01111111;
DDRB |= 0b11111110;
PORTB |= 0XFF;
randomSeed(analogRead(A0));
idx = random(1,4);
st = digit[idx];
izpisi(st);
}
void izpisi(int x){
PORTD = 0b10000000;
for (int i=0;i<7;i++){
int stanje = x & 0x01;
PORTD |= (stanje << pin[i]);
x>>=1;
delay(50);
}
}
void loop() {
int stanje_gumba = PINB >> 0 & 0x01;
int reset_gumb = PIND >> 7 & 0x01;
if (reset_gumb == 0){
idx = 0;
izpisi(digit[idx]);
}
if (stanje_gumba == 0 && idx != 8){
idx++;
izpisi(digit[idx]);
}
delay(10);
}