Étape 8: Le Code
#include < Tone.h >
#define ERROR_WINDOW 50
#define intervalle 100
#define DEBUG_ON
int micVal = 0 ;
int micPin = 1 ;
Haut-parleur de ton ;
whichButton int ;
variable pour limiter le bouton obtenir vérifié chaque cycle
long lastChecked = 0 ;
void setup() {}
Serial.Begin(9600) ;
Speaker.Begin(8) ;
}
void loop() {}
micVal = analogRead(micPin) ;
micVal = contraindre (abs(micVal-512)-25,0,512) ;
Serial.println (micVal, DEC) ;
Si (micVal > = 50) {}
Si (millis() - lastChecked > intervalle) {}
Si (int buttNum = buttonPushed(0)) {}
{if(WhichButton!=buttNum)}
Switch (buttNum) {}
cas 1 :
Speaker.Play(micVal/2) ;
rupture ;
cas 2 :
Speaker.Play(micVal) ;
rupture ;
cas 3 :
Speaker.Play(micVal+micVal/4) ;
rupture ;
cas 4 :
Speaker.Play(micVal+micVal/2) ;
rupture ;
cas no 5 :
Speaker.Stop() ;
rupture ;
}
whichButton = buttNum ;
}
}
lastChecked = millis() ; réinitialiser la valeur de lastChecked
}
}
}
int buttonPushed (int pinNum) {}
variable pour stocker la valeur lue
int val = 0 ;
activez le pullup interne de 20 k
digitalWrite((14+pinNum), HIGH) ;
lire l’entrée pin
Val = analogRead(pinNum) ;
#ifdef DEBUG_ON
Serial.println(Val) ;
#endif
/ * ne pas utiliser la position supérieure, parce que c’est la même que la valeur du commutateur ouvert tout lorsque l’interne 20K Ohms pullup est activée.
Si (val > = 923 et val < = 1023)
Serial.println ("c’est la limite supérieure") ;
Si (val > = (825-ERROR_WINDOW) et val < = (825 + ERROR_WINDOW)) {/ / 825
Return 1 ;
} ElseIf (val > = (630-ERROR_WINDOW) et val < = (630 + ERROR_WINDOW)) {/ / 630
retour 2 ;
} ElseIf (val > = (435-ERROR_WINDOW) et val < = (435 + ERROR_WINDOW)) {/ / 435
retour 3 ;
} ElseIf (val > = (230-ERROR_WINDOW) et val < = (230 + ERROR_WINDOW)) {/ / 230
retour 4 ;
} ElseIf (val > = 0 et val < = (14 + ERROR_WINDOW)) {}
retour 5 ;
} else
return 0 ;
}