Créer des notes avec Arduino

Etant donnée que mon explication sur le fonctionnement du haut parleur n’était pas très clair, j’ai décidé de faire un petit programme pour mieux comprendre le fonctionnement de la génération de son sur un haut parleur avec Arduino.

Pour cet article, il faudra se référer à mon précédent article, car je n’ai pas changer les branchements.

Et oui, je suis un adepte des économies, aussi bien de temps, d’efforts et d’argent.

Le code est simple, il génère en continu la suite de note : Do – Ré – Mi – Fa – Sol – La – Si – Do aiguë :

/***************************************************** 
Auteur : Rémi Matthieu RODRIGUES
** Date : 14 aoüt 2020
** Description du programme : Génère une suite de 
** notes de musique. 
*****************************************************/

#define HP 9

#define TEMP_DO 950
#define TEMP_RE 852
#define TEMP_MI 759
#define TEMP_FA 716
#define TEMP_SOL 639
#define TEMP_LA 568
#define TEMP_SI 507
#define TEMP_DO_AIGUE 478

#define HPToggle digitalWrite(HP,!digitalRead(HP))

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

void produceNote(int temp) {
  for(int i; i < 1000; i++) { 
    HPToggle;
    delayMicroseconds(temp);
  }
}

void noteDo() {
  produceNote(TEMP_DO);
}

void noteRe() {
  produceNote(TEMP_RE);
}

void noteMi() {
  produceNote(TEMP_MI);
}

void noteFa() {
  produceNote(TEMP_FA);
}

void noteSol() {
  produceNote(TEMP_SOL);
}

void noteLa() {
  produceNote(TEMP_LA);
}

void noteSi() {
  produceNote(TEMP_SI);
}

void noteDoAigue() {
  produceNote(TEMP_DO_AIGUE);
}

void loop() {
  noteDo();
  noteRe();
  noteMi();
  noteFa();
  noteSol();
  noteLa();
  noteSi();
  noteDoAigue();

  delay(2000);
}

Voilà ! Donc on défini la longueur à l’état BAS ou à l’état HAUT du haut parleur ce qui va générer un certains nombre de cycle par secondes (c’est ce qu’on appelle la fréquence).

void produceNote(int temp) {
  for(int i; i < 1000; i++) { 
    HPToggle;
    delayMicroseconds(temp);
  }
}

Et en fonction de cette fréquence cela génère des notes particulières. Voici le tableau qui ma servi de référence :

Voici mes calculs :

Et au final voici le résultat du programme :


Pour marque-pages : Permaliens.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *