Pojďme programovat elektroniku: Co se děje v nitru, když bliká RGB LED, bzučí reproduktor nebo měří dálkoměr

  • Arduino je jednoduché
  • Stačí napsat řádku kódu a něco se rozsvítí
  • Co to ale znamená? Co se děje uvnitř vodiče?

Na počátku všeho byl bit. Všechno povstalo skrze něj. V něm byl život a ten život byl světlem firmwarů. – Bible bastlířská, verš první.

V dnešním pokračování seriálu o programování elektroniky se vrátíme na úplný začátek. Namísto psaní kódu se podíváme na to, jak ve své podstatě vypadá několik jednoduchých i docela komplexních digitálních signálů, které ve svých programech vytváří každý bastlíř.

Jedna věc je totiž napsat třeba příkaz tone(10, 1000, 100), který vytvoří 100ms pípnutí s frekvencí 1 000 Hz na reproduktoru připojeném k pinu 10, jenže druhá věc je pochopit, jak takový signál skutečně vypadá, tedy co jsme to opravdu tímto příkazem vytvořili na elektrické – logické úrovni.

Logický analyzátor

Pomůže nám v tom levný analyzátor signálu z eBaye, který seženete zhruba za stokorunu. Už jsme si jej v našem seriálu vyzkoušeli loni v záři, když jsme pomocí něj sledovali bity tekoucí z mikrokontroleru do laserového blikátka.

Klepněte pro větší obrázekKlepněte pro větší obrázekKlepněte pro větší obrázek
Čínský klon kompatibilní se softwarem Logic od amerického Saleae

Jedná se o laciné klony kalifornských analyzátorů Saleae, takže stačí stáhnout jejich bezplatný analytický software Logic pro Windows, MacOS a Linux, připojit krabičku skrze USB k počítači a na druhé straně sjednotit země – připojit pin GND na krabičce s GND obvodu, který budeme sledovat.

Mějte na paměti, že kupujete čínský padělek, který je sice mnohonásobně levnější, ale poškozuje amerického výrobce, kterému se to nelíbí. Firma Saleae tedy dlouhodobě hrozí, že padělky z eBaye v aplikaci zablokuje, zatím to však neudělala. Snad z dobré vůle, analyzátory za pár dolarů si totiž nakoupila hromada začínajících bastlířů, kteří zpočátku nechtějí investovat do mnohem dražších hraček.

Krabička je osmikanálová, takže zvládne paralelně sledovat až osm různých digitálních signálů. Pojďme si to rovnou vyzkoušet na tom nejjednodušším možném příkladu.

Napíšu si primitivní program pro Arduino Uno, který rozbliká jeho vestavěnou LED. Ta je připojená k pinu číslo 13, takže kód, který ji vždy rozsvítí na 100 ms a pak na stejnou dobu zase zhasne, by vypadal takto:

void setup() {
  pinMode(13, OUTPUT);
}
void loop() {
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
}

LOW představuje logickou nulu (bit s hodnotou 0) a HIGH zase logickou jedničku (bit s hodnotou 1). Z elektrického hlediska se při HIGH na pinu 13 nastaví napětí ideálně na 5 V, což je pracovní napětí desky Arduino Uno, no a při LOW se zase sníží na 0 V. LED dioda začne blikat.

My se nyní na tento signál podíváme v programu Logic. Nejprve vybereme jeden z osmi kanálů na analyzátoru a připojíme jej právě na pin 13 na Arduinu. V prohlížeči Logic pak už jen stačí klepnout na tlačítko Start a program začne po určitý čas nahrávat digitální signál stanovenou rychlostí. Klon se sice chlubí rychlostí až 24 MHz, ve skutečnosti však oproti americkému originálu zvládne spíše 8-12 MHz, což ale pro běžné experimenty stačí.

Výsledek by měl vypadat zhruba takto:

Klepněte pro větší obrázek
Pulzující napětí mezi HIGH (5 V) a LOW (0 V) na pinu 13, jak jej zachytil logický analyzátor

Jak vidno, logický analyzátor převedl pulzující napětí zpět na digitální logiku, takže krásně vidíme, kdy LED svítila (HIGH = 1) a kdy zhasla (LOW = 0). Kolečkem myši si zároveň můžeme libovolně přibližovat, což nám pomůže v dalších ukázkách, kdy vše mnohem zrychlíme a půjde o každý detail.

Logic toho umí ale mnohem více. Když najedu myší na obdélník pulzu, zobrazí se mi jeho přesná délka. Ale nejen to, jelikož jsme vytvořil signál, který s určitou frekvencí rozbliká LED, Logic mi tuto frekvenci spočítá – odhaduje ji na cirka 5 Hz.

Klepněte pro větší obrázek
Když najedu ukazatelem myši na pulz, zobrazí se mi jeho údaje a frekvence 5 Hz

Je to správně? Jedno bliknutí se skládá ze 100ms světla a 100ms tmy, celý blik tedy trvá 200 ms a za jednu sekundu se jich odehraje pět. Pět pulzů za sekundu = 5 Hz. Je to správně.

Fajn, to by pro začátek stačilo. V další kapitole zachytíme mnohem zajímavější signál. Podíváme se, co se ve vodičích odehrává, když se pokusíme změřit vzdálenost pomocí oblíbeného ultrazvukového dálkoměru HC-SR04!

Diskuze (7) Další článek: USA chtějí zakázat pevné baterie. Nesmysl. Stačí levná výměna

Témata článku: Pojďme programovat elektroniku, C++, Programování, Arduino, Elektřina, Fyzika, Stavebnice, Analyzátor, Led dioda, Primitivní program, Uno, Padělky, Logický analyzátor


Určitě si přečtěte

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

** Není jen Chrome, Firefox, Edge či Opera. Na výběr máte mnohem více! ** Internetové prohlížeče se liší funkcemi, zaměřením i designem. Našli jsme 22 použitelných prohlížečů pro Windows ** Vyberte si prohlížeč, který vám bude nejvíce vyhovovat

Karel Kilián | 30

Šéf amerického Red Hatu: Odpojte Brno od internetu a zhroutíme se

Šéf amerického Red Hatu: Odpojte Brno od internetu a zhroutíme se

** V Česku najdete hromadu skvělých vývojářů ** Mnozí z nich přispívají do open-source ** Třeba v brněnském Red Hatu

Jakub Čížek | 51

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

** Total Commander je na Windows takřka legendou ** Licence však stojí více než tisíc korun ** Našli jsme pro vás deset alternativ dostupných zdarma

Karel Kilián | 123

Proč autopilot Tesly bourá? Test dává odpověď: může za to řidič!

Proč autopilot Tesly bourá? Test dává odpověď: může za to řidič!

** Britové otestovali Teslu v režimu autopilota ** Skončilo to nárazem Tesly do stojícího auta ** Kdo je na vině? Řidič

Karel Kilián | 55

Blíží se Juno. Jeden z nejhezčích Linuxů pro normální lidi

Blíží se Juno. Jeden z nejhezčích Linuxů pro normální lidi

** Ubuntu a Fedora patří k nejpopulárnějším linuxovým OS pro desktop ** A pak je tu zástup dalších nebo jejich odvozenin ** Jedním z nich je Elementary OS, který se brzy dočká novinek

Jakub Čížek | 71

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

** Systém Windows 10 umí spoustu užitečných drobností ** O mnoha praktických funkcích pravděpodobně ani nevíte ** Poznejte užitečné tipy, které se vám mohou hodit každý den

Vladislav Kluska | 33


Aktuální číslo časopisu Computer

Kdy necháme řídit chytrá auta?

6 Wi-Fi Mesh systémů ve velkém testu

Srovnali jsme 7 sportovních kamer

Znáte pravidla pro létání s drony?