V minulé lekci jsem popisoval způsob, jakým může arduino vydávat zvuky. Řekli jsme si jak se používá buzzer i reproduktor a naťukl jsem i to jak funguje funkce tone(). V této lekci si ukážeme jeden praktický projekt a zkusíme si trošku více říci o tom co je to vlastně tón.
Tón
Asi bych měl začít tím, co je to vlastně tón. Víme, že zvuk je kmitání, které vzniklo kmitáním nějakého zdroje (struna, hlasivky, vzduchový sloupec atd. atd.). Toto kmitání se přes molekuly vzduchu přeneslo k našim uším, kde rozkmitalo ušní bubínek a přes další ušní aparátky je informace o kmitání zvuku přenesena do naší nervové soustavy a mozku, kde si uvědomíme, že slyšíme zvuk.
Mezi zvukem a tónem je ale rozdíl. Zvuk je prakticky jakékoliv kmitání, kdežto tón je kmitání s periodickým průběhem (čili pořád stejné) (tón – wiki) . Vlastnosti tónu, které nás z hlediska užívání arduina nejvíce zajímají, protože je můžeme ovlivnit, jsou frekvence a délka tónu.
Výška tónu
Výška tónu je daná frekvencí tónu. Čím rychlejší frekvence, tím je tón vyšší. Čím je frekvence – periodické kmitání tónu pomalejší, tím hlubší tón slyšíme. A protože lidé mají rádi ve věcech pořádek, sestavili si frekvence tónů do pravidelné soustavy. Tuto soustavu tónů tvoří skupiny tónů, kterým se říká oktávy. Platí pravidlo, že začáteční tón vyšší oktávy má frekvenci vyšší v poměru 2:1 než počáteční tón oktávy nižší. Mezi počátečními tóny je frekvence víceméně pravidelně rozdělena pro jednotlivé frekvence patřící tónům v dané oktávě. V každé oktávě je sedm tónů (stejný počet jako počet tlačítek v našem jednooktávovém klavírku). Mezi tóny jsou samozřejmě ještě půltóny 🙂 ale protože vás mám rád, tak vám to nebudu komplikovat :-D.
Tón | Frekvence (Hz) |
žádný | 0 |
a | 220 |
b | 247 |
C1 | 262 |
D1 | 294 |
E1 | 330 |
F1 | 349 |
G1 | 392 |
A1 | 440 |
B1 | 494 |
C2 | 523 |
D2 | 587 |
E2 | 659 |
F2 | 698 |
G2 | 784 |
A2 | 880 |
B2 | 988 |
C3 | 1047 |
D3 | 1175 |
E3 | 1319 |
F3 | 1397 |
G3 | 1568 |
A3 | 1760 |
B3 | 1976 |
C4 | 2093 |
D4 | 2349 |
E4 | 2637 |
F4 | 2794 |
G4 | 3136 |
A4 | 3520 |
B4 | 3951 |
C5 | 4186 |
D5 | 4698 |
E5 | 5274 |
F5 | 5588 |
G5 | 6272 |
A5 | 7040 |
B5 | 7902 |
C6 | 8372 |
D6 | 9396 |
E6 | 10548 |
F6 | 11176 |
G6 | 12544 |
Tóny ve stejné oktávě poznáte podle čísla tónu na konci – například C1 – B1. V dané skupině je vždy sedm tónů.
Projekt Klavírek
V projektu klavírek se nám jedná o sestavení jednoduchého hudebního nástroje, který bude mít sedm tlačítek a po stisku každého z těchto sedmi tlačítek nám elektronická konstrukce zahraje jeden ze sedmi tónů v oktávě. Jak na to? Následuje schéma zapojení.
Zapojení máme zapojené :-). Funkcionalita je myslím jasná přímo z obrázku. Sedm tlačítek je připojeno na piny 2-8. pin č. 13 je vyhrazen pro reproduktorek/buzzer. K buzzeru je připojen klasický ochranný odpor 220 ohm.
Na desku odešlete následující kód.
/* Program určený pro demonstraci ovládání zvuku s arduino UNO R3 program klavírek */ //nastavení desky – pin 13 výstup na buzzer, nebo repro, pin 2 – 8 – vstup pro tlačítka void setup(){ pinMode(13, OUTPUT); pinMode(2,INPUT_PULLUP); pinMode(3,INPUT_PULLUP); pinMode(4,INPUT_PULLUP); pinMode(5,INPUT_PULLUP); pinMode(6,INPUT_PULLUP); pinMode(7,INPUT_PULLUP); pinMode(8,INPUT_PULLUP); } //nekonečná smyčka – provedení programu void loop(){ //načteníá stavu tlačítka int tlacitko1 = digitalRead(2); int tlacitko2 = digitalRead(3); int tlacitko3 = digitalRead(4); int tlacitko4 = digitalRead(5); int tlacitko5 = digitalRead(6); int tlacitko6 = digitalRead(7); int tlacitko7 = digitalRead(8); //akce na základě načteného stavu tlačítka if (tlacitko1 == 0) { tone(13, 523); //C2 } else if (tlacitko2 == 0) { tone(13, 587); //D2 } else if (tlacitko3 == 0) { tone(13, 659); //E2 } else if (tlacitko4 == 0) { tone(13, 698); //F2 } else if (tlacitko5 == 0) { tone(13, 784); //G2 } else if (tlacitko6 == 0) { tone(13, 880); //A2 } else if (tlacitko7 == 0) { tone(13, 988); //B2 } else { noTone(13); } } |
V programu není nic nového, co byste neznali z předchozích lekcí. Pouze je v podmínce více možností (chceme přece aby klavírek mohl zahrát sedm různých tónů). V příkazu tone porovnejte vložené frekvence se seznamem frekvencí a zjistíte, kterou oktávu nám klavírek zahraje.
Úkoly:
1, Přeprogramujte klavírek, aby hrál tóny v jiné oktávě.
2, Přeprogramujte klavírek tak, aby každé tlačítko po stisku vysílalo jiné písmeno morseovy abecedy.