Le principe est de retourner via 1 fil le statut de plusieurs interrupteurs.
Connectez le clavier avec OUT sur A0
GND sur GND et VCC sur 5v
Charger le sketch si dessous. Si les boutons ne sont pas reconnus enlever les // devant TEST_ON et relever les valeurs associées aux boutons qui ne répondent pas et modifier les valeurs Haut / Bas correspondantes.
Le sketch
/// KEYES 5 BUTTON
/***********************
Lecture de l'état de plusierurs Bouton à partir d'une broche analogique
5v->2KOhms->A0 : donne 5v soit 1022 à 1023
Relier GND->Rx sur A0 (sur la patte de la R allant à A0)
Rx= 0 : 0 (GND relié directement)
*/
//***********************
// Fonctionne aussi pour le clavier KEYES AD Key
//***********************
//#define TEST_ON //-- Comment ou Uncomment pour afficher valeurs
#define BRepos 1022 //-- Valeur lorqu'aucun bouton n'est appuyé
//-- Valeurs relevées lorsque TEST_ON
#define B1 0
#define B2Bas 141 //-- 90 et 91 pour R= 220k
#define B2Haut 142
#define B3Bas 326 //-- 179 et 180 pour R= 470k
#define B3Haut 327
#define B4Bas 502 //-- 317 et 318 pour R= 1kOhms
#define B4Haut 503
#define B5Bas 738 //-- 1001 et 1002 pour R= 100kOhms
#define B5Haut 739
//*********************
int sensorValue;
int oldkey=0, key=0;
//*********************
void setup() {
Serial.begin(9600); // por afficher dans la console
pinMode(13, OUTPUT); // pour résultat sans console
}
void loop() {
//-- lecture analog pin 0:
sensorValue = analogRead(A0);
if (sensorValue<BRepos)
key=buttonPushed(sensorValue);
else
{oldkey=0;
digitalWrite (13, LOW);}
}
int buttonPushed(int val) {
delay(50); //--short tempo
if( val <= B1 ) {
if (oldkey!=key)
{Serial.println("Bouton 1 ON");
oldkey=1;
digitalWrite (13, HIGH);}
return 1;
}
else if ( val >= B2Bas and val <= B2Haut) {
if (oldkey!=key)
{Serial.println("Bouton 2 ON");
oldkey=2;
digitalWrite (13, HIGH);}
return 2;
}
else if ( val >= B3Bas and val <= B3Haut) {
if (oldkey!=key)
{Serial.println("Bouton 3 ON");
oldkey=3;
digitalWrite (13, HIGH);}
return 3;
}
else if ( val >= B4Bas and val <= B4Haut ) {
if (oldkey!=key)
{Serial.println("Bouton 4 ON");
oldkey=4;
digitalWrite (13, HIGH);}
return 4;
}
else if ( val >= B5Bas and val <= B5Haut) {
if (oldkey!=key)
{Serial.println("Bouton 5 ON");
oldkey=5;
digitalWrite (13, HIGH);}
return 5;
}
else { //--Pour toute autre valeur de résistance
#ifdef TEST_ON
Serial.println(val);
#endif
return 0;
}
}
Votre commentaire