ESP32 + bzučák – tóny a melodie s funkcí tone() v Arduino IDE
Jak připojit pasivní bzučák k ESP32 a přehrávat tóny i melodie pomocí funkce tone() a souboru pitches.h.
Přehled projektu
Funkce tone()je standardní součástí ESP32 Arduino core od verze 2.x – není potřeba instalovat žádnou extra knihovnu. Stačí přidat soubor pitches.h s definicemi frekvencí hudebních not a okamžitě lze přehrávat libovolné tóny nebo celé melodie.
Potřebné komponenty
- ESP32
- Pasivní bzučák (passive buzzer)
- Propojovací vodiče
- Volitelně: 100Ω rezistor v sérii
⚠️ Pozor na záměnu aktivního a pasivního bzučáku – vypadají stejně. Pasivní bzučák nemá ochrannou nálepku nahoře, nebo má na spodní straně označení.
Zapojení
Bzučák ESP32
+ (kladný) GPIO 18
− (záporný) GND
Soubor pitches.h
V Arduino IDE vytvořte nový soubor pitches.h (záložka → nový soubor) a vložte do něj definice not:
pitches.c
1// pitches.h
2#define NOTE_B0 31
3#define NOTE_C1 33
4#define NOTE_D1 37
5#define NOTE_E1 41
6#define NOTE_F1 44
7#define NOTE_G1 49
8#define NOTE_A1 55
9#define NOTE_B1 62
10#define NOTE_C2 65
11#define NOTE_D2 73
12#define NOTE_E2 82
13#define NOTE_F2 87
14#define NOTE_G2 98
15#define NOTE_A2 110
16#define NOTE_B2 123
17#define NOTE_C3 131
18#define NOTE_D3 147
19#define NOTE_E3 165
20#define NOTE_F3 175
21#define NOTE_G3 196
22#define NOTE_A3 220
23#define NOTE_B3 247
24#define NOTE_C4 262
25#define NOTE_D4 294
26#define NOTE_E4 330
27#define NOTE_F4 349
28#define NOTE_G4 392
29#define NOTE_A4 440
30#define NOTE_B4 494
31#define NOTE_C5 523
32#define NOTE_D5 587
33#define NOTE_E5 659
34#define NOTE_F5 698
35#define NOTE_G5 784
36#define NOTE_A5 880
37#define NOTE_B5 988
38#define NOTE_C6 1047
39#define NOTE_D6 1175
40#define NOTE_E6 1319
41#define NOTE_F6 1397
42#define NOTE_G6 1568
43#define NOTE_A6 1760
44#define NOTE_B6 1976Kód 1 – jednoduchý tón
main.c
1#include "pitches.h"
2
3const int BUZZER_PIN = 18;
4
5void setup() {
6 // zahrajte A4 (440 Hz) po dobu 500 ms
7 tone(BUZZER_PIN, NOTE_A4, 500);
8 delay(1000);
9
10 // zahrajte C5 po dobu 500 ms
11 tone(BUZZER_PIN, NOTE_C5, 500);
12 delay(1000);
13
14 noTone(BUZZER_PIN); // zastavte bzučák
15}
16
17void loop() {}Jak funguje tone()
tone
1tone(pin, frequency); // pípá dokud nezavoláte noTone()
2tone(pin, frequency, duration); // pípá po dobu duration ms a samo skončí
3noTone(pin); // zastaví bzučákMožná rozšíření
- Spojte bzučák s PIR senzorem – zapípá při detekci pohybu
- Spojte s DS1307 RTC – budík v přesný čas
- Spojte s DHT22 – alarm při překročení teploty
- Přidejte tlačítko pro vypnutí alarmu
- Přidejte bzučák do projektu s webovým serverem – spouštění tónu přes prohlížeč
