Vzorová prezentace pro odborné bloky technického lycea
Pochopila jsem, že programování mikrokontroléru je jiné než psaní konzolové aplikace – program běží na fyzickém čipu bez operačního systému, neustále dokola, a musím uvažovat o časování, pinech a napájení. Propojení kódu s fyzickým světem (rozsvícení LED, zobrazení na displeji) bylo pro mě nový způsob myšlení.
Arduino program (sketch) má vždy dvě povinné funkce:
void setup() {
// Spustí se jednou při startu
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Opakuje se neustále dokola
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
Rozdíl oproti Pythonu: Arduino nemá print() – místo toho používám Serial.println() a výstup čtu v Serial Monitoru v Arduino IDE.
Digitální pin zná jen dva stavy: HIGH (5 V) nebo LOW (0 V). Slouží pro LED, tlačítka, bzučáky.
Analogový pin (A0–A5) čte hodnoty od 0 do 1023 pomocí AD převodníku. Slouží pro potenciometry, senzory světla nebo teploty s analogovým výstupem.
PWM pin (označený vlnovkou ~) umožňuje simulovat analogový výstup rychlým přepínáním. Používám ho pro stmívání LED nebo servo motory. Funkce: analogWrite(pin, 0–255).
I2C je komunikační protokol umožňující propojit více zařízení jen dvěma vodiči (SDA = data, SCL = hodiny). Každé zařízení má unikátní adresu (hexadecimální číslo, např. 0x27). Arduino jako „master” se zařízení ptá na data nebo mu posílá příkazy. Výhoda: místo 10 propojení pro displej stačí 4 (VCC, GND, SDA, SCL).
Arduino IDE umožňuje instalovat knihovny – hotové balíčky kódu pro konkrétní komponenty. Přidám je přes Library Manager (Sketch → Include Library → Manage Libraries). Po instalaci importuji:
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
Knihovny mi ušetřily psaní nízkoúrovňového kódu pro komunikaci s čidlem a displejem.
Bez Serial Monitoru bych jen hádala, co program dělá. Výpis hodnot mi ukázal, kdy čidlo vrací NaN (chyba čtení) a kdy vrací reálnou teplotu:
Serial.print("Teplota: ");
Serial.println(teplota);
Je to ekvivalent print() z Pythonu – základní nástroj ladění.
Mikrokontrolér Malý počítač na jediném čipu – obsahuje procesor, paměť a vstupně-výstupní periferie. Na rozdíl od počítače nemá operační systém a je určen pro řízení konkrétního hardwaru.
Arduino Open-source platforma kombinující mikrokontrolér (ATmega) s vývojovou deskou a prostředím Arduino IDE. Programuje se v jazyce C++ s Arduino knihovnou.
Pin Fyzický kontakt na desce Arduino, přes který se připojují komponenty. Může být digitální nebo analogový, vstupní nebo výstupní.
setup()
Funkce v Arduino programu, která se spustí jednou při startu nebo resetu. Inicializuji zde piny, sériovou komunikaci a knihovny.
loop()
Funkce v Arduino programu, která se opakuje neustále dokola. Veškerá logika programu běží zde (nebo ve funkcích volaných odtud).
pinMode()
Funkce nastavující pin jako vstup (INPUT) nebo výstup (OUTPUT). Musím ji zavolat v setup() pro každý pin, který používám.
digitalWrite()
Zápis hodnoty HIGH nebo LOW na digitální výstupní pin. HIGH = 5 V, LOW = 0 V.
digitalRead()
Čtení stavu digitálního vstupního pinu. Vrátí HIGH nebo LOW – např. zda je tlačítko stisknuté.
delay(ms)
Pozastaví program na zadaný počet milisekund. Jednoduchý, ale blokuje celý program – nic jiného se během čekání nevykoná.
Serial.begin() / Serial.println()
Inicializace sériové komunikace a výpis hodnot do Serial Monitoru. Používám pro ladění – zobrazím si hodnoty proměnných, aniž bych měla fyzický displej.
PWM (Pulse Width Modulation)
Metoda simulace analogového výstupu rychlým přepínáním digitálního signálu. Střída (duty cycle) 0–100 % odpovídá hodnotě 0–255 ve funkci analogWrite().
Breadboard (nepájivé pole) Deska s propojovacími otvory pro rychlé prototypování bez pájení. Sloupce uprostřed jsou propojeny horizontálně, lišty na okrajích vertikálně (napájení).
Pull-up rezistor
Rezistor zapojený mezi pin a napájení (+5 V), který drží pin ve stavu HIGH, dokud tlačítko nepropojí pin se zemí (GND). Zabraňuje „plovoucímu” nedefinovanému stavu pinu. Arduino má vestavěné pull-up rezistory aktivovatelné přes INPUT_PULLUP.
I2C (Inter-Integrated Circuit) Dvouvodičová komunikační sběrnice pro propojení více zařízení. Každé zařízení má unikátní adresu. Použila jsem ji pro displej LCD.
isnan()
Funkce testující, zda je hodnota „Not a Number” (NaN) – speciální stav při chybě čtení z čidla. Použila jsem ji k zachycení chyby DHT11.