Zvuky a hudba jsou nejen součástí kultury (což je pro nás z hlediska robotiky celkem nevýznamná záležitost), ale zvuky je možné použít k řadě praktických efektů. Můžeme s nimi signalizovat stav, můžeme je použít třeba k přesnému časování. Zároveň můžeme našim hudbymilovným mudlům připravit nějaký ten hudební nástroj, popřípadě i hudbu vizualizovat. Abychom mohli všechny tyto činnosti spáchat musíme naučit naše arduino vyluzovat zvuky.
Zvuky můžeme z arduina dostat různými způsoby, ale my se jako začátečníci budeme zabývat hlavně dvěma součástkami a to piezo buzzerem a reproduktorem.
Buzzer
Buzzer (čti: bazr) je jednoduchá elektronická součástka dodávaná v mnoha podobách a parametrech. Někdy bývá zkulturněna a prodávána jako celý modul (pak má tři vývody – napájení + a – a signální vývod pro vstup z arduina). Nejčastěji se ale setkáte s buzzerem v té podobě, jako na obrázku. Jako jednoduchou součástku se dvěma vývody. Její funkce je založena na piezoelektrickém jevu, který zde nebudu popisovat (kdo je zvědavý, tak ať se mrkne na wiki).
Pro součástku je předepsaná polarita (ale fungovalo mi to i prohozené) a doporučuje se připojovat k ní ochranný odpor. Ochranný odpor poněkud snižuje výkon celé sestavy, což ovšem vyhodnocuji jako žádoucí z hlediska úrovně hluku v učebně :-). Klasická součástka používaná při výuce funguje na napětí 5V/proud 25mA a je schopna poskytnout zvuk o rozsahu 2300-500 Hz.
Reproduktor
Reproduktorů je více druhů (wiki – reproduktory). My používáme takové ty klasické – elektrodynamické, které se dají občas odněkud „vydlabat“. U reproduktorů je třeba hlídat si výkon, protože výkonové reproduktory by vám mohly spálit desku. Nám se osvědčily reproduktory o výkonu 0,25 – 0,5 W. Vnitřní odpor vinutí 8 Ohm.
Reproduktory většinou získáváme bez vývodů, které je třeba přiletovat (na konce letujeme piny, aby bylo možné tyto reproduktorky použít při zapojení do kontaktního pole). U reproduktoru je úplně jedno jak vývody připojíte, není tam předepsané zapojení polarity.
Výhody a nevýhody
Reproduktor | Buzzer | |
Výhody | Kvalitnější zvuk. | Odolné pouzdro, malé rozměry, lehká součástka, snadno se vkládá do konstrukce. |
Nevýhody | Citlivý na poškození (zejména membrána), magnetická hlava by v některých případech mohla vadit, větší váha v porovnání s buzzerem, při časté manipulaci se snadno odtrhnou vývody, obtížnější vkládání do elektronické konstrukce. | Méně kvalitní zvuk. |
Z tabulky výhod a nevýhod lze snadno odvodit, kdy můžete použít kterou součástku. Reproduktorky využijeme v konstrukcích, kde záleží na kvalitě zvuku – reprodukce hudby a zvuků, kvalitní komunikace. Buzzer bude zase vhodný pro konstrukce, kdy nezáleží na kvalitě zvuku – výstražná zařízení, jednoduchá zvuková signalizace atp.
Buzzer a reproduktor v zapojení s arduinem UNO
A je na čase vyzkoušet si obě součástky vyzkoušet, takže si zapojte Buzzer podle následujícího schematu.
V zapojení jsou použity tři součástky. Buzzer zapojený na digitální pin 13, tlačítko připojené na digitální pin 2 a ochranný odpor 220 ohmů. V některých zdrojích jsem viděl i ochranný odpor 100 ohmů a zapojení je funkční (alespoň po krátkou dobu i bez ochranného odporu. Stejné zapojení si můžete vyzkoušet, pokud máte k dispozici i s reproduktorem, který připojte místo buzzeru. Funguje to úplně stejně.
Do desky nahrejte následující program.
/* Program určený pro demonstraci ovládání zvuku s arduino UNO R3*/ //nastavení desky – pin 13 výstup na buzzer, nebo repro, pin 2 tlačítko void setup(){ pinMode(13, OUTPUT); pinMode(2,INPUT_PULLUP); } //nekonečná smyčka – provedení programu void loop(){ //načtení stavu tlačítka int tlacitko1 = digitalRead(2); //akce na základě načteného stavu tlačítka if (tlacitko1 == 0) { tone(13, 440); } else { noTone(13); } } |
V programu jsou použity dva piny na desce. Pin 13 je využit jako výstup pro signál na buzzer/reproduktor. Pin 2 jako hw vstup pro tlačítko. V začátku voidu loop se testuje stav tlačítka – stisknuto/nestisknuto. Podle situace je pak plněn následující podmínkový příkaz. V případě stisku tlačítka (proměnná tlacitko nabyde hodnoty 0) se spustí funkce tone, která generuje modulovaný signál o frekvenci 440 Hz na pin č. 13 (viz. parametry definované v závorce funkce). V případě, že je hodnota vstupu tlačítka 1 – tlačítko není stisknuté se aktivuje druhá větev podmínkového příkazu a spustí se funkce noTone pro pin 13, která vypne signál na tomto pinu a tím pádem i zruší zvuk na buzzeru.
Funkce tone()
Povídání o funkci tone() naleznete na webu arduina (zde). Funkce používá knihovnu tone, která je již v základní verzi arduino IDE instalována, tudíž lze tuto funkci okamžitě používat. V příkladech/examples je možné také nalézt zkušební kódy pro prozkoumání v záložce digital. Jsou to ty, které mají v názvu slovo tone :-). Pokud je budete chtít vyzkoušet, bude asi potřeba přepsat v programu a v setupu výstupy podle aktuálního zapojení.
Funkce tone potřebuje v závorce za jménem funkce definovat dva parametry. Prvý parametr je pin na který se posílá modulovaný signál. Druhý parametr je frekvence modulovaného signálu (čím vyšší frekvence, tím vyšší výsledný tón).
Knihovny pro funkce generující čtvercové pulsy o jisté frekvenci umožňují i podstatně komfortnější práci v programu, ale o tom si povíme až v následující lekci.
Opakem funkce tone() je funkce noTone(), která naopak zvuk na daném pinu vypíná.
Úkoly:
1, Metronom – odpoj ze zapojení ze sestavy tlačítko a naprogramuj sestavu tak, aby v pravidelných intervalech „tikala“ jako metronom.
2, Přeprogramuj sestavu tak, aby po stisku tlačítka zněl vysoký tón a bez stisknutí tlačítka tón hluboký.
3, Nouzový maják – Naprogramuj sestavu tak, aby pokud je stisknuté tlačítko vysílala zvukový signál morseovkou – SOS.