melodie.ino

M5Stack Core (ESP32) — famille Basic / Gray (K001 / K002) · Fichier : melodie.ino · Langage : Arduino · Usage : Jouer des notes avec le haut-parleur interne

Le petit ampli I2S du boîtier joue du PWM-tone : fréquence + durée, et la mélodie sort. Appui sur C pour déclencher — parfait retour sonore d'une alarme ou d'un menu.

Matériel requis

Un M5Stack Core Basic/Gray (ESP32 dans un boîtier avec écran TFT 320×240, 3 boutons A/B/C, haut-parleur, micro SD, batterie 110 mAh). Aucun.

Branchement

Aucun câblage ; le haut-parleur 1 W est clipsé dans le boîtier. Volume via M5.Speaker.setVolume (0-255).

Fonctionnement

M5.Speaker.tone génère le carré dans le pilote I2S ; la durée est exprimée en ms. Le petit délai entre notes évite que les trames se collent dans le tampon DMA. Dans l'Arduino IDE (paquet esp32), carte « M5Stack-Core-ESP32 » ; installez la bibliothèque « M5Stack » (ou M5Unified) via le gestionnaire, puis Téléverser.

Pour aller plus loin

Un carillon de température (fréquence = valeur), ou les 8 bits d'un port à jouer en gamme pour du debug audio.

melodie.ino

// Buzzer/speaker 3 W via I2S (NS4168) — bibliotheque M5Stack.
#include <M5Stack.h>

struct Note { uint16_t freq; uint16_t duree; };
Note melody[] = {
  {523, 200}, {659, 200}, {784, 200}, {1047, 400},   // do mi sol do'
  {784, 150}, {659, 150}, {523, 300}, {0, 200},       // descente + pause
};
const int NB = sizeof(melody) / sizeof(Note);

void setup() {
  M5.begin(true, false, true, false);   // lcd, sd, speaker, power
  M5.Power.setSpeakerMute(false);
  Serial.begin(115200);
}

void loop() {
  M5.update();
  if (M5.BtnC.wasPressed()) {
    Serial.println("Joue la melodie");
    for (int i = 0; i < NB; i++) {
      if (melody[i].freq) M5.Speaker.tone(melody[i].freq, melody[i].duree);
      else delay(melody[i].duree);
      delay(20);                        // laisse la trame I2S partir
    }
  }
  delay(10);
}

← Retour à la fiche