/* Boucle for ou boucle while ? Réaliser un programme qui joue toutes les notes en montant du Do1= 65,4 Hz au Do6 = 2093 Hz Attendre 5 secondes avant de recommencer Brancher le piezo entre la masse et la patte piezo=7 Pour debuger le programme on affiche sur le moniteur série la fréquence de la note jouée */ /* 1) Zone 1 : la partie déclaration des variables (optionnelle) */ int piezo=7; // sélection de la broche (pin) sur laquelle est connectée la LED float f; // déclarer la variable réelle f (fréquence) int n; // variable entière n numéro de la note jouée /* 2) Zone 2 : la partie initialisation et configuration des entrées/sorties : la fonction setup ()*/ void setup() { pinMode(piezo, OUTPUT); // broche piezo configurée en sortie // Attention à la syntaxe ! Ne pas oublier ; à chaque fin de ligne de code. Serial.begin(9600); // Initialise la liaison série à 9600 bauds pour afficher les résultats sur le moniteur série } /* 3) Zone 3 : la partie principale qui s'exécute en boucle : la fonction loop () */ void loop() { // Joue toutes les notes du Do2 au Do6 sur un Piezo f=130.813; // fréquence du Do2 n=0; // le Do6 a pour fréquence 2093 Hz while (f<2093) { // tant que f < Do6 faire tone(piezo,int(f)); // Joue la note calculée sur un Piezo (partie entière) affiche(); // Pour debuger affiche sur le moniteur série la note jouée f=f*1.05946; // calcul la note suivante delay(300); // la note est jouée durant 300 ms avant de passer à la suivante } // Syntaxe : fin du contenu tant que () faire noTone(piezo); // Arrête de jouer de la musique delay(5000); // attendre 5 secondes } /* Les fonctions utilisateur : */ void affiche() { n++; // incrémente de 1 le numéro de note jouée Serial.print(n); // Affiche sur le moniteur série le numéro de la note jouée Serial.print("\t"); // \t : tabulation (caractère spécial \t : tab \n : retour à la ligne \r retour chariot... Serial.println(f); // affiche la variable f et retourne à la ligne }