Pro účel výuky programování "kdo si hraje nezlobí" lze použít tento shield za pár korun (Arduino NANO 60,- aukro, nebo Chiňan + shield za nula-nula prdlačky). Pomocí shieldu lze snímat 2 tlačítka a spínat 10 LED diod, případně využívat komunikaci s PC. Na rozšiřující konektor můžeme připojit další periferie - například LCD displej s převodníkem, joystick... (viz předchozí články na tomto webu).
Vlastnosti shieldu
Deska "Arduino NANO" v SMD provedení s procesorem ATmega328
- Sériová linka (rx, tx) pro komunikaci s PC (nezapojeno - slouží pro komunikaci)
- 2x tlačítko připojeno na piny D2, D3
- 10x LED dioda připojeno na piny D4-D13
- Konektor pro rozšíření (LCD na I2C, analogové vstupy) piny 0V, A0-A5, +5V
Schéma zapojení shieldu
Deska spojů
Foto hotového shieldu
POZORNĚ SI OBRÁZKY PROHLÉDNEME A DBÁME NA STEJNÉ OSAZENÍ SOUČÁSTEK PŘI PÁJENÍ NA DESTIČKU
Ze stránek https://www.arduino.cc/en/Main/Software stáhneme program pro Windows
Stažený program (Arduino) nainstalujeme do počítače.
Počítač restartujeme.
Připojíme naši desku s Arduino NANO do USB portu počítače.
Spustíme program Arduino IDE (ikonka na ploše PC).
V Arduino IDE nastavíme desku "Arduino Nano" a port USB (jiné číslo, které se nám ukáže než je port 1).
Ukázka programů pro shield
- Příkaz pro nastavení pinů 2 a 3 jako vstup pro tlačítka (zadáváme v Setup)
pinMode(2, INPUT_PULLUP); // první tlačítko
pinMode(3, INPUT_PULLUP); // druhé tlačítko
- Příkaz pro nastavení pinů 4 - 13 jako výstup pro LED diody (zadáváme v Setup)
pinMode(4,OUTPUT); // 1 LED dioda u tlačítek
pinMode(5,OUTPUT); // opakujeme od 4 výstupu do 13 výstupu
pinMode(13,OUTPUT); // 10 LED dioda dále od tlačítek
- Příkaz pro načtení stavu tlačítka v programu (zadáváme v Loop)
int tlacitko1 = digitalRead(2); // načteme stav 1 tlačítka
int tlacitko2 = digitalRead(3); // načteme stav 2 tlačítka
- Pokud chceme provést nějakou opraci v závislosti na stavu tlačítka použijeme podmínku if
if (tlacitko1 == LOW) { // když je tlačítko stisknuté
// udělej toto - například zapni LED 1 a 2 tedy:
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
} // konec if
else // jinak vykonej toto - vypni LED 1 a 2
{
digitalWrite(4,LOW);
digitalWrite(5,LOW);
} // konec else
Program test 1 (tlačítko vlevo spustí LED bod vlevo, tlačítko vpravo spustí LED bod vpravo)
V programu je použita funkce "for" pro zjednodušení programu (pokud se opakuje nějaká část stejného příkazu v programu je výhodné použít cyklus).
Příklad použití for
proměnná byte může být kladné číslo 0 - 255 pro náš příklad používáme rozsah od LED 1 (pin 4) do LED 10 (pin 13) (byte v rozsahu 4 - 14 tedy vyhovuje)
for(byte c=4; c<14; c++) {
// tady zopakuj cyklus 10x. Na začátku bylo c = 4 s každou smyčkou se c přičte o 1 tedy ++
// pokud je c menší než 14 zopakuj smyčku
// nastavíme piny 4 až 13 na výstup smyčkou namísto psaní pinMode(4,OUTPUT); pinMode(5,OUTPUT); atd pinMode(13,OUTPUT);
pinMode(c,OUTPUT);
} // konec for
Video - test 1 (efekt vlevo - vpravo)
Program test 2 (tlačítko vlevo spustí LED efekt knight rider)
Video - test 2 (efekt knight rider)
FREE (v příloze program test 1 a test 2)
DONATE (v příloze navíc deska spojů Eagle, Gerber, CAM a knihovna pro Eagle Arduino NANO shield)