В библиотеке Arduino ESP32 определена функция ledcWriteNote. Эта функция настраивает канал LEDC (генератор) микроконтроллера ESP32-C3 на частоту заданной музыкальной ноты.
double ledcWriteNote(uint8_t chan, note_t note, uint8_t octave);
- chan выбор канала LEDC (для ESP-C3 от 0 до 5),
- note выбор ноты (NOTE_C, NOTE_Cs, NOTE_D, NOTE_Eb, NOTE_E, NOTE_F, NOTE_Fs, NOTE_G, NOTE_Gs, NOTE_A, NOTE_Bb, NOTE_B),
- octave выбор октавы для ноты (число 4 - выбор первой октавы).
/*
A — ля
B — си
C — до
D — ре
E — ми
F — фа
G — соль
*/
#define SPEAKER_PIN 8 // Номер IO
#define SPEAKER_CHANNEL 0 // От 0 до 5
void setup() {
ledcAttachPin(SPEAKER_PIN, SPEAKER_CHANNEL);
}
void loop() {
ledcWriteNote(SPEAKER_CHANNEL, NOTE_C, 4);
delay(200);
ledcWriteNote(SPEAKER_CHANNEL, NOTE_D, 4);
delay(200);
ledcWriteNote(SPEAKER_CHANNEL, NOTE_E, 4);
delay(200);
ledcWriteNote(SPEAKER_CHANNEL, NOTE_F, 4);
delay(200);
ledcWriteNote(SPEAKER_CHANNEL, NOTE_G, 4);
delay(200);
ledcWriteNote(SPEAKER_CHANNEL, NOTE_A, 4);
delay(200);
ledcWriteNote(SPEAKER_CHANNEL, NOTE_B, 4);
delay(200);
ledcWrite(SPEAKER_CHANNEL, 0);
delay(2000);
}
Лист. 1.
Рис. 1. Принципиальная электрическая схема.
Литература:
https://docs.espressif.com/projects/arduino-esp32/en/latest/api/ledc.html