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 (6) Další článek: USA chtějí zakázat pevné baterie. Nesmysl. Stačí levná výměna

Témata článku: Pojďme programovat elektroniku, Programování, Arduino, C++, Fyzika, Elektřina, Stavebnice, Led dioda

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


Aktuální číslo časopisu Computer

Jak vznikají filmové efekty

Test ATX skříní a externích disků

Znáte svá práva při reklamaci?

Průvodce první instalací NASu