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

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

Veeam

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.


reklama

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

(Jako ve škole)
Průměr: 1,33 | Hodnotilo: 12
 

Top články z OpenOffice.cz

Příspěvky

Arduino UNO – úvod
D 17. 06. 2017, 14:36:22
Odpovědět  Odkaz 
Opravte popis PWM.Hodnota napeti se nemeni mezi 0 az 5V, je bud' 0V nebo 5V!!!!

Jednoduse receno muzete nastavit dobu po kterou digitalni vystup bude v 0 (OV) a 1 (5V). A tato zmena se bude opakovat v nejakem casovem intervalu nebo s nejakou frekvenci.

Digitalni vystup s PWM je proste casovan hardwarove. Staticky vystup je casovam programove = zalezi na rychlosti mikroprocesoru.
Antonín Judytka Re: Arduino UNO – úvod
Antonín Judytka 18. 06. 2017, 10:30:59
Odpovědět  Odkaz 
Uznávám, že je popis poněkud zmatený. Napsal jsem, že principem je rychlá změna hodnot. Další větou, že je možné naměřit jiné hodnoty než 0 a 5 V jsem měl na mysli použití běžných měřících přístrojů, které nejsou na tyto frekvence stavěny. PWM se budu zabýt v některém z dalších článků podrobněji a vše důkladně vysvětlím.
Re: Re: Arduino UNO – úvod
D 18. 06. 2017, 11:07:43
Odpovědět  Odkaz 
"Další větou, že je možné naměřit jiné hodnoty než 0 a 5 V jsem měl na mysli použití běžných měřících přístrojů, které nejsou na tyto frekvence stavěny."

Ale to znamena, ze mereni bylo provadene nespravne a namerene hodnoty budou nesmyslne.Je to proste nesmysl.
Lepsi je napsat,ze mereni PWM signalu se musi provaden minimalne s 2x vetsi vzorkovaci frekvenci, nez PWM signal. Doporucuje se vsak 10x: 100Hz PWM = 1000Hz vzorkovace vrekvence.
Arduino UNO – úvod - nie je ich dosť?
fela 20. 06. 2017, 07:11:25
Odpovědět  Odkaz 
Dobrý deň,
myslím si, že článkov o začiakoch v Arduine je habadej, na SK, CZ alebo inojazyčných weboch. Verím, že príde k častiam tohto seriálu, ktoré budú orientované na Arduino+Linux. Napr. ja programujem *Duino v EMACSe, z toho by šiel spraviť článok...
Alebo napr. *Duino vs konzola, čítanie dát iným softvérom naprogramovaných napr. v Lazaruse si GCC...
Proste nejako tam dať ten Linux....
Re: Arduino UNO – úvod - nie je ich dosť?
Jirka 21. 06. 2017, 13:26:00
Odpovědět  Odkaz 
Takže když (nejen) jsme u toho Linuxu:

1) možná není moc známo, že původní zakladatelé Arduina se pohádali a došlo k rozdělení na dvě větve:

https://www.arduino.cc a http://www.arduino.org (vedle toho samozřejmě existuje řada dalších webů, počínaje třeba českou homepage https://arduino.cz)

Obě větve vyvíjejí svoje vlastní IDE. Uživatelsky jsou velmi podobná, nicméně se mi stalo, že (alespoň pod Linuxem Kubuntu 14.04 LTS) každé z prostředí vyžadovalo jinou Javu. Při nevhodné verzi se buď nespustilo vůbec, nebo se v něm projevovaly různé chyby.

Podotýkám, že popsaný OS umožňuje mít souběžně nainstalované jak různé verze Arduino IDE, tak různé druhy a verze Javy (openjdk nebo Oracle a číslo). K přepínání verzí Javy v systému může sloužit konzolový příkaz

sudo update-alternatives --config java

který vyvolá jednoduché textové menu, kde je jak vidět aktuální nastavení, tak tam lze udělat změnu.

Možná by šlo konkrétní IDE spouštět s konkrétní Javou coby parametrem - to jsem ale nezkoušel...

2) originální desky Arduino jsou řekněme ne zcela levné - no a to řeší třeba klony. Myslím, že vzhledem k otevřenosti projektu to není nic nezákonného, i když se možná lze bavit o "etice" takové věci... Pro první kroky může sloužit třeba klon Arduino Nano, který se v jedné dobře známé sloní tuzemské "drogerii" dá pořídit za nějakých 150,- Kč, ze zahraničí včetně poštovného ještě o poznání levněji.

Klony se vyznačují různými odlišnostmi od originálu (bylo toho už napsáno dost). Jednou z nich může být třeba použití jiného převodníku USB/serial místo originálního FTDI. Mnou zmiňovaný klon Arduino Nano využívá čínský obvod CH340G.

No a proč právě o tomhle píšu? Proto, že pod Kubuntu 14.04 LTS (a nejspíš to tak bude i u jiných víceméně současných distribucí) nevyžaduje CH340G instalaci jakéhokoliv driveru (podpora je už v jádře) a vše funguje na první zapojení (tedy tzv. "out of the box")...

P.S.: tento text můžete volně použít kdekoliv jinde za předpokladu, že v něm neuděláte zásadní změny vedoucí k jinému smyslu.
Arduino UNO – úvod
Tomáš Jurman 20. 06. 2017, 15:18:00
Odpovědět  Odkaz 
Ahoj těším se na pokračování.

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



 
 

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
  • Hodnocení autora: *