Code d'exemple d'utilisation d'un bouton et d'un buzzer sur une même broche (musique Tetris)

par skywodd | | Langue : C++ | Licence : GPLv3

Modifié pour la derniére fois le

Description :

Code d'exemple d'utilisation d'un bouton et d'un buzzer sur une même broche.

Joue le thème musical de Tetris en Arduino avec tone() tant que le bouton est appuyé.

N.B. Ce code nécessite un montage spécial pour fonctionner.

Code source :

Voir le code source brut | Télécharger tetris_buzzer_button.ino | Télécharger tetris_buzzer_button.ino.zip

/**
 * Code d'exemple d'utilisation d'un bouton et d'un buzzer sur une même broche.
 * Joue le thème musical de Tetris en Arduino avec tone() tant que le bouton est appuyé.
 * N.B. Ce code nécessite un montage spécial pour fonctionner.
 */

/** La broche pour le bouton et le buzzer */
const byte PIN_BUZZING_BUTTON = 2;

/** Fonction setup() */
void setup() {
  // Rien à faire ici
}

/** Fonction permettant de faire biper le buzzer tant que le bouton apppuyé */
void beepMelody(unsigned int frequency, unsigned long duration, unsigned long delay_duration) {
  
  // Met le broche en entrée (sans pullup)
  pinMode(PIN_BUZZING_BUTTON, INPUT);
  
  // Attend que le bouton soit apppuyé
  while (digitalRead(PIN_BUZZING_BUTTON) == HIGH);
  
  // Génére un bip sur la broche du buzzer
  // N.B. La broche est automatiquement configurée en sortie.
  tone(PIN_BUZZING_BUTTON, frequency, duration);
  
  // Attend la fin du bip
  delay(delay_duration);
}

/** Fonction loop() */
void loop() {
  beepMelody(2637, 200, 400);
  beepMelody(1975, 200, 200);
  beepMelody(2093, 200, 200);
  beepMelody(2349, 200, 400);
  beepMelody(2093, 200, 200);
  beepMelody(1975, 200, 200);
  beepMelody(1760, 200, 400);
  beepMelody(1760, 200, 200);
  beepMelody(2093, 200, 200);
  beepMelody(2637, 200, 400);
  beepMelody(2349, 200, 200);
  beepMelody(2093, 200, 200);
  beepMelody(1975, 200, 400);
  beepMelody(1975, 200, 200);
  beepMelody(2093, 200, 200);
  beepMelody(2349, 200, 400);
  beepMelody(2637, 200, 400);
  beepMelody(2093, 200, 400);
  beepMelody(1760, 200, 400);
  beepMelody(1760, 200, 800);
  beepMelody(1760, 200, 400);
  beepMelody(2349, 200, 200);
  beepMelody(2794, 200, 200);
  beepMelody(3520, 200, 400);
  beepMelody(3136, 200, 200);
  beepMelody(2794, 200, 200);
  beepMelody(2637, 200, 600);
  beepMelody(2093, 200, 200);
  beepMelody(2637, 200, 400);
  beepMelody(2349, 200, 200);
  beepMelody(2093, 200, 200);
  beepMelody(1975, 200, 400);
  beepMelody(1975, 200, 200);
  beepMelody(2093, 200, 200);
  beepMelody(2349, 200, 400);
  beepMelody(2637, 200, 400);
  beepMelody(2093, 200, 400);
  beepMelody(1760, 200, 400);
  beepMelody(1760, 200, 800);
}