buzzer-melodie.ino

Arduino Nano (Classic, ATmega328P) · Archivo : buzzer-melodie.ino · Lenguaje : Arduino · Uso : Jouer une mélodie sur un buzzer piézo

Un buzzer pasivo en el pin 9 canta un aire conocido gracias a tone(), que genera la señal cuadrada necesaria en hardware sobre el ATmega328P del Nano. La melodía es una simple tabla frecuencias/duraciones, extensible sin fin.

Hardware

Un Arduino Nano clásico (ATmega328P a 16 MHz, formato DIL de 30 patillas para breadboard, USB mini-B, lógica de 5 V, pin RESET abajo a la izquierda). Arduino Nano, buzzer piezo pasivo de 5 V (no activo!), pin 9.

Cableado

Hilo (+) del buzzer a D9, hilo (-) a GND. Los buzzers activos suenan con simple tensión: inútiles para melodías.

Funcionamiento

tone() configura el timer 1 o 2 para producir la frecuencia en el pin; noTone() detiene la oscilación. La tabla en flash (const) mantiene compacto el programa.

Ejecución

En el IDE de Arduino, selecciona la placa Arduino Nano y el procesador ATmega328P, elige el puerto serie y carga. El rail de 5 V de la placa conviene a sensores de 5 V; si no, usa 3,3 V en pines compatibles.

Variantes

Añade un botón para disparar la melodía, toca en varios pines para un dúo o lee notas de un sensor de luz.

buzzer-melodie.ino

// Melodie sur buzzer passif avec tone()/noTone() (Arduino Nano).
// Le Nano (ATmega328P) genere le carre sur n'importe quelle broche.
const int BUZZER = 9;

// note : frequence Hz, duree ms (0 = silence de meme duree)
const uint16_t MELODIE[][2] = {
  {262, 300}, {330, 300}, {392, 300}, {523, 600},
  {392, 300}, {523, 300}, {659, 900},
  {0, 400},
};
const int N = sizeof(MELODIE) / sizeof(MELODIE[0]);

void setup() {
  pinMode(BUZZER, OUTPUT);
}

void loop() {
  for (int i = 0; i < N; i++) {
    uint16_t freq = MELODIE[i][0];
    uint16_t duree = MELODIE[i][1];
    if (freq > 0) tone(BUZZER, freq);
    else noTone(BUZZER);
    delay(duree);
  }
  noTone(BUZZER);
  delay(2000); // pause avant reprise
}

← Volver a la ficha