Clavier 5 touches Keyes

Le principe est de retourner via 1 fil le statut de plusieurs interrupteurs.

KeyesKeypadsml

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;
 }
} 

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Articles récents
Commentaires récents
fatima sur Bienvenue !
AdminDroid sur Bienvenue !
fatima sur Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :