Étape 5: Lecture commutateur État avec un microcontrôleur
Notez que le schéma ci-dessous montre une résistance pull-up de 10K mais pour le code, j’utilise la résistance de pull-up « intégré » que vous pouvez activer en affectant à un pin d’entrée haute de sortie (c' est tout à fait soigné!) Si vous utilisez le pull-up interne, vous pouvez ignorer l’externe.
/ * Debouncer mieux - ce circuit antirebonds est plus robuste et travaillera avec les commutateurs de tilt ! */
/ * http://www.ladyada.net/learn/sensor/tilt.html * /
int inPin = 2 ; le nombre de l’axe d’entrée
int outPin = 13 ; le nombre de la broche de sortie
int LEDstate = élevé ; l’état actuel de la broche de sortie
int de lecture ; la lecture actuelle de l’axe d’entrée
int précédente = faible ; la lecture précédente de la broche d’entrée
les variables de suivi sont longues de parce que le temps, exprimé en millisecondes,
deviendra rapidement un plus grand nombre que peuvent être stockés dans un int.
long temps = 0 ; la dernière fois que la broche de sortie a été activé/désactivée
debounce long = 50 ; le temps de debounce, augmenter si la sortie scintille
void setup()
{
pinMode (inPin, entrée) ;
digitalWrite (inPin, HIGH) ; Allumez le construit dans la résistance de pull-up
pinMode (outPin, sortie) ;
}
void loop()
{
switchstate int ;
lire = digitalRead(inPin) ;
Si le commutateur a changé, en raison de la secousse ou pressage...
Si (lecture! = ancienne) {}
réinitialiser la minuterie antirebonds
temps = millis() ;
}
Si ((millis()-time) > debounce) {}
tout ce que le commutateur est sur, sa été là pendant longtemps
laisse ainsi s’établir à ce sujet !
switchState = lecture ;
Maintenant inverser la sortie sur la LED pin13
Si (switchstate == HIGH)
LEDstate = bas ;
d’autre
LEDstate = élevé ;
}
digitalWrite (outPin, LEDstate) ;
Sauver le dernier résultat de mesure afin de nous faire un décompte en cours d’exécution
précédent = lecture ;
}