Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
В правой части M5Stack размещается динамик.
Для работы с динамиком используются три функции:
Существует несколько готовых констант для некоторых нот. Ниже представлены константы для музыкальных нот первой октавы (в английском формате)
В примере File | Examples | M5Stack | Basis | Speaker показано, как извлечь бип и ноту при нажатий кнопок A и B. Дополним пример и запустим мелодию из нот при нажатии кнопки C.
#include <M5Stack.h>
#define NOTE_D0 -1
#define NOTE_D1 294
#define NOTE_D2 330
#define NOTE_D3 350
#define NOTE_D4 393
#define NOTE_D5 441
#define NOTE_D6 495
#define NOTE_D7 556
#define NOTE_DL1 147
#define NOTE_DL2 165
#define NOTE_DL3 175
#define NOTE_DL4 196
#define NOTE_DL5 221
#define NOTE_DL6 248
#define NOTE_DL7 278
#define NOTE_DH1 589
#define NOTE_DH2 661
#define NOTE_DH3 700
#define NOTE_DH4 786
#define NOTE_DH5 882
#define NOTE_DH6 990
#define NOTE_DH7 112
#define NOTE_B1 262
#define NOTE_Cd1 277
#define NOTE_Dd1 311
#define NOTE_E1 330
#define NOTE_F1 349
#define NOTE_Fd1 370
#define NOTE_G1 392
#define NOTE_Gd1 415
#define NOTE_A1 440
#define NOTE_Ad1 466
#define NOTE_H1 494
int music[] =
{
NOTE_B1, NOTE_Cd1, NOTE_D1,
NOTE_Dd1, NOTE_E1, NOTE_F1,
NOTE_Fd1, NOTE_G1, NOTE_Gd1,
NOTE_A1, NOTE_Ad1, NOTE_H1
};
void setup() {
// Initialize the M5Stack object
M5.begin();
/*
Power chip connected to gpio21, gpio22, I2C device
Set battery charging voltage and current
If used battery, please call this function in your project
*/
M5.Power.begin();
M5.Lcd.printf("M5Stack Speaker test:\r\n");
}
void loop() {
if(M5.BtnA.wasPressed()) {
M5.Lcd.printf("A wasPressed \r\n");
M5.Speaker.beep(); //beep
}
if(M5.BtnB.wasPressed())
{
M5.Lcd.printf("B wasPressed \r\n");
M5.Speaker.tone(NOTE_DH2, 200); //frequency 3000, with a duration of 200ms
}
if(M5.BtnC.wasPressed())
{
M5.Lcd.printf("C was pressed\r\n");
for (int t = 0; t < 12; t++) {
M5.Speaker.tone(music[t]);
delay(500);
}
M5.Speaker.mute();
}
M5.update();
}