přejít na obsah přejít na navigaci

Linux E X P R E S, Arduino UNO – úvod

Arduino UNO – úvod

Arduino

Zaujal vás některý z předešlých článků o Raspberry Pi a GPIO? Pokud ano, jistě se vám bude líbit i článek, ve kterém se pustíme do základu programování Arduina UNO.


Vybavení Arduina

Srdcem tohoto mikrokontroleru je procesor Atmega 328, který disponuje čtrnácti digitálními vstupními a výstupními piny (šest pinů nabízí funkci PWM), dále nabízí šest analogových vstupních pinů. Paměť pro program činí 32 kB, z čehož je zhruba 0,5 kB použito pro zavaděč.

Co je PWM?

Pulse Width Modulation lze do češtiny přeložit jako pulzně šířková modulace a u Arduina slouží pro odesílání analogových hodnot pomocí digitálních výstupů. Principem je rychlá změna hodnot na digitálním výstupním pinu. Při jeho použití naměříte na digitálním pinu mimo hodnot 5 V a 0 V i hodnoty jiné. Odeslaná hodnota se zapisuje pomocí čísla 0–255, pokud tedy napětí 5 V vydělíte číslem 255, zjistíte, že rozdělení napětí by mělo být přibližně po 0,02 V.

Programování Arduina

Pro programování Arduina používám Arduino IDE. Program obsahuje dvě hlavní smyčky void setup(). Kód zapsaný v této smyčce se po spuštění Arduina spustí a provede pouze jednou, kdežto u smyčky void loop() se kód po spuštění bude neustále opakovat (pokud kód neobsahuje zastavení programu).

Ukázka prostředí Arduino IDE Ukázka prostředí Arduino IDE

Pro nahrání programu do Arduina je nutné zvolit správnou desku, to provedete pomocí Nástroje | Vývojová deska. Dále je nutno zvolit port, ke kterému je Arduino připojeno; to provedete pomocí nabídky Nástroje | Port. Program do Arduina odešlete buď pomocí tlačítka se symbolem šipky vpravo, pomocí klávesové zkratky [Ctrl+u], nebo přes nabídku Projekt | Nahrát.

Blikání LED diody

Stejně jako u článku s Raspberry Pi se nejprve pokusíme rozblikat LED diodu. Nejprve ve smyčce, která se spustí pouze jednou nastavíme pin, který bude použit jako výstupní, v našem případě se bude jednat o pin 0. Poté v neustále se opakující smyčce nastavíme logickou 1 (HIGH), program na nějaký čas pozastavíme, poté změníme logickou hodnotu na 0 (LOW) a opět program na nějaký čas pozastavíme.

Zapojení LED diody k Arduinu Zapojení LED diody k Arduinu

Pro připojení LED diody je nutné použít odpor. Hodnotu odporu zjistíte snadným výpočtem:

  1. Od hodnoty 5 V (výstup z Arduina) odečtěte úbytek napětí na LED diodě, pokud ubytek napětí neznáme, počítáme s 5 V.

  2. Následně toto číslo vydělte požadovaným proudem, u LED diod se obvykle jedná o 0,015–0,02 A.

Uvedeme si zde jednoduchý příklad výpočtu hodnoty odporu pro LED diodu s úbytkem napětí 2 V a proudem 20 mA:

vzorec

Dle výpočtu můžeme použít rezistor o minimální hodnotě odporu 150 Ω.

void setup() {
  pinMode(13, OUTPUT); // nastavení Pinu 0 jako výstup
}

void loop() {
  digitalWrite(13, HIGH); // nastavení hodnoty 1 na pinu 0
  delay(100);  // pozastavení programu na 1000 ms (1 s)
  digitalWrite(13, LOW); // nastavení hodnoty 0 na pinu 0
  delay(100); // pozastavení programu na 1s
}

Tlačítko s rezistorem

Úspěšně se vám podařilo LED diodu rozblikat, a tak se můžete vrhnout na další úkol, kterým bude ovládání výstupu na základě vstupu. Stejně jako u Raspberry je nutné použít pro načtení hodnoty tlačítka pull-up nebo pull-down rezistor. Pull-up rezistor je možné připojit i softwarově.

Nejprve si ukážeme zapojení tlačítka s použitím rezistoru. Rezistor musí mít hodnotu alespoň 10 kΩ. Kód pro obě zapojení je úplně stejný, rozdílem je pouze prohozený stav. V případě zapojení rezistoru jako pull-up bude načtena při rozpojeném tlačítku logická 1, pokud však rezistor zapojíte jako pull-down, bude při rozpojeném tlačítku načtena logická 0.

void setup() {
  pinMode(1, INPUT); // nastavení pinu 1 jako vstup
  pinMode(13, OUTPUT); // nastavení pinu 13 jako výstup
}

void loop() {
  int hodnota = digitalRead(1); // stav pinu  1 se načte jako hodnota
  if (hodnota == LOW) { // pokud bude hodnota „nízká“ (logická 0, proveď:
    digitalWrite(13, HIGH); // nastavení logické 1 na pinu 13
  }
  else { // pokud není předchozí podmínka splněna, proveď:
    digitalWrite(13, LOW); // nastavení logické 0 na pinu 13
  }
}

Tento kód slouží pro pro ovládání vestavěné LEDky na základě stavu tlačítka. V případě, že bude tlačítko připojeno přes pull-up rezistor, LED dioda se rozsvítí při stisku tlačítka. Pokud však připojíte tlačítko přes pull-down rezistor, LEDka při stisknutí tlačítka zhasne.

Připojení rezistorů pro načtení stavu tlačítka (vpravo pull-up, vlevo pull-down) Připojení rezistorů pro načtení stavu tlačítka (vpravo pull-up, vlevo pull-down)

Tlačítko s interním rezistorem

Pro načtení stavu tlačítka lze také využít integrované pull-up rezistory, ty lze jednoduše připojit přepsáním INPUT na INPUT_PULLUP při nastavování pinu jako vstupní. Tlačítko se poté připojí mezi pin, který jste zvolili pro načtení hodnoty a pin GND. V případě, kdy je tlačítko rozepnuto bude načtena logická jednička a LEDka se rozsvítí.

void setup() {
  pinMode(1, INPUT_PULLUP); // nastavení pinu 1 jako vstup s pull-up 
  pinMode(13, OUTPUT); // nastavení pinu 13 jako výstup
}

void loop() {
  int hodnota = digitalRead(1);  // stav pinu 1 se načte jako hodnota
  if (hodnoza == LOW) { // pokud bude hodnota „nízká“ (logická 0, proveď:
    digitalWrite(13, HIGH); // nastav na pinu 13 logickou 1
  }
  else { // pokud není předchozí podmínka splněna, proveď:
    digitalWrite(13, LOW); // nastav na pinu 13 logickou 0
  }
}

V případě využití pull-up rezistoru (ať už fyzického, či „softwarového“) je nutno při psaní programu myslet na to, že při stisknutí tlačítka se na vstupu neobjeví logická 1, ale 0.

Závěr

Jistě jste si všimli, že programovací jazyk Arduina je v podstatě programovací jazyk C, doplněný o příkazy k ovládání pinů. Jelikož je Arduino velmi rozšířeným hardwarem, není problém najít znalce, kteří vám se začátky programování a s laděním programu pomohou.

V příštím díle se budu věnovat sběrnici I2C, zobrazování hodnot na displeji připojeném přes I2C a připojením Arduina do domácí sítě pomocí Ethernet shieldu.



Nahoru

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Antonín Judytka

Je mi 19 let. Čtvrtým rokem studuji elektrotechniku na ISŠTE Sokolov. Baví mě vlastní silou zdolávat překážky. K psaní jsem se dostal díky redakci www.ExoSpace.cz , která mě naučila, jak má článek vypadat a co vše je potřeba dodržet. Volný čas trávím rád venku, popřípadě ve vlastní dílničce, kde se snažím zjistit, jak dané věci fungují.


  • Distribuce: Debian
  • Grafické prostředí: GNOME