float DO2 = 130.8 ; float DO3 = 261.6 ; float DO4 = 523.3 ; float DO5 = 1046 ; float n = 1 ; int rang = -1 ; // le rang dans la gamme, le rang 0 étant le DO de la fréquence de base float frequence ; float frequencebase = DO5 ; // float a = 1.059463094 ; // a est la racine douzième de 2, raison de la suite géométrique void setup(){ //ne pas oublier d'alimenter le diviseur de tension avec la sortie 5V pinMode(3,OUTPUT); //alimente le buzzer Serial.begin(9600) ; } void loop(){ delay(50); n = float((float(1024))/float(float(1024)-analogRead(A0))); //n est le numéro d'étage compris entre 0 et 16 tel que A0=(n-1)1024/n rang=int(15-n+0.2) ; // l'ajout de 0.2 permet d'être sûr de la valeur entière (arrondi par défaut) Serial.println(rang) ; if (rang != -2 && rang != -1) { frequence = (frequencebase*pow(a,float(rang))); //on calcule la bonne fréquence tone (3,frequence); //on joue la note } else {noTone(3);} }