void setup()
{
DDRD = DDRD | B11111111; //PORTD - výstupní
DDRB = B00000000; //PORTB - vstupní
PORTB = B00000111; //První 3 bity PULL_UP
}
int readPot() // Cti hodnotu z Pot. a převeď na rozsah pro delay
{
int analog;
analog = analogRead(A0); // nacteme z AD převodníku
analog = map(analog,0,1023,20,800); //přemapujeme na 20 - 600 ms
return analog; // vrátíme upravenou hodnotu
}
void kitt() // efekt "Kitt"
{
int hodnota = B00000001; //Nastavíme pravý bit na 1
for (int pocitadlo=0; pocitadlo<=8;pocitadlo++) // Provedeme 8x
{
PORTD = hodnota; // Pošleme hodnotu na PORT D
delay(readPot()); // Počkáme - dle nastavení Pot.
hodnota = hodnota << 1; // Posuneme bity směrem vlevo
}
hodnota = B10000000; // Nastavíme levý bit na 1
for (int pocitadlo=0; pocitadlo<=8;pocitadlo++)
{
PORTD = hodnota;
delay(readPot());
hodnota = hodnota >> 1; // Posuneme bity vpravo
}
}
void counter() // binární čítač
{
for (int pocitadlo=0; pocitadlo<=255; pocitadlo++)
{
PORTD = pocitadlo;
delay(readPot());
}
}
void blik() // jen blikneme
{
PORTD = 255;
delay(500);
PORTD = 0;
delay(500);
}
void loop()
{
int tlacitka = PINB; // načteme port B
tlacitka = ~tlacitka; // invertujeme (máme přece PULL_UP)
tlacitka = tlacitka & B00000111; // zajímají nás pouze 3 pravé bity
switch (tlacitka) // získaná hodnota může být 1,2,4
{
case 1:
kitt();
break;
case 2:
counter();
break;
case 4:
blik();
break;
}
}
// děkuji za pozornost.... Alda Jílajz