2017-08-04 4 views
1

Je viens juste de commencer à bricoler avec l'arduino et je me concentre sur les bases. J'ai un bouton poussoir accroché donc je reçois une impression en série quand il est poussé.Lecture des entrées du bouton sur arduino

int button = 3; 

void setup() { 
    Serial.begin(9600); 
    pinMode(button, INPUT_PULLUP); 
} 

void loop() { 
    if (digitalRead(button) == LOW) { 
    Serial.print("pressed\n"); 
    } 
} 

Maintenant, lorsque le bouton est pressé, il imprimerons pressed un groupe jusqu'à sa libération. Maintenant, ma prochaine étape est de brancher une LED et je veux utiliser le bouton comme une bascule. Appuyez sur la première fois, ça va s'allumer, appuyez une seconde, ça va éteindre. Mais cela fonctionnera des centaines de fois pendant que le bouton est pressé. Comment puis-je contourner cela? Merci

int led = 5; 
int button = 3; 

void setup() { 
    Serial.begin(9600); 
    pinMode(button, INPUT_PULLUP); 
    pinMode(led, OUTPUT); 

    digitalWrite(led, LOW); 
} 

void loop() { 
    if (digitalRead(button) == LOW) { 
    Serial.print("pressed\n"); 
    toggleLed(led); 
    } 
} 

int toggleLed(int led){ 
    if (digitalRead(led) == LOW) { 
    Serial.print("set on"); 
    digitalWrite(led, HIGH); 
    } else { 
    Serial.print("set off"); 
    digitalWrite(led, LOW); 
    } 
} 

Répondre

0

Il existe un exemple de code fourni avec l'IDE Arduino appelé l'exemple de changement d'état. Étudie-le. Fondamentalement, vous devez avoir une variable pour se souvenir de l'état du bouton la dernière fois que vous avez appuyé dessus et vous ne réagissez qu'aux changements dans l'état du bouton. Au lieu d'exécuter votre code à chaque fois que la broche du bouton est faible, vous exécutez votre code à chaque fois que la broche du bouton passe de haute à basse.

+0

Ce serait ** Fichier> Exemples> 02.Digital> StateChangeDetection **? – per1234