Étape 4: Le logiciel en détail partie 2
Maintenant la boucle for. Je vais décomposer peu à peu, d’expliquer ce qui se passe. La première chose que le programme va faire est lire l’état du bouton. Cela nous donnera le code ci-dessous et et nous permettent de créer des fonctions pour les États non pressés tant pressés, souvenez-vous que la fonction appuyer brièvement sur le bouton.
if (digitalRead(button) == HIGH) { //Button pressed } else { //Button not pressed }
Dans la section de touche, la première chose que nous ferons est de tester le buttonActive variable, sur Set-up, c’est faux. S’il s’agit actuellement de faux, cela signifie que le programme détecte le bouton ne soit utilisé pour la première fois. C’est parce qu’après lecture faux que nous immédiatement mettre à true et seulement en libérant le bouton peut affectez-lui la valeur false. Nous enregistrons également le temps que la touche a été enfoncée tout d’abord.
if (buttonActive == false) { buttonActive = true; buttonTimer = millis(); }
L’étape suivante dans la section touche, consiste à tester combien de temps nous avons tenu le bouton. Nous cela en vérifiant l’heure actuelle, en soustrayant la pression tout d’abord en millisecondes et les comparer à la longueur de temps, que nous souhaitons jusqu'à ce que la presse longue est activée.
On vérifie aussi que la longPressActive boolean a la valeur false, car une fois que nous avons activé la fonction appuyez longuement nous allons définir cette valeur à true pour arrêt répéter l’activation. Une fois que nous avons tenu le bouton le temps désiré, nous renversera l’état de la valeur booléenne de LED1State qui renversera à son tour la goupille de que la LED est attachée à haute ou basse en conséquence.
if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) { longPressActive = true; LED1State = !LED1State; digitalWrite(LED1, LED1State); }
Sur la route à la touche n'appuyée pas l’article du code. Est la première chose que nous allons vérifier si le buttonActive boolean a la valeur true. Si elle est définie sur true, le code en boucle pour la première fois puisque le bouton est relâché. Il sera ensuite ensemble l’arrière booléen false pour permettre au code ci-dessus pour détecter le bouton étant pressé à nouveau.
if (buttonActive == true) { buttonActive = false; }
Dans le cas ci-dessus énoncé, car nous sommes détectant la première boucle après bouton relâché, nous allons ensuite vérifier si longuement sur fonction a été activée, qui va abandonner deux étapes possibles. Si pression longue a été activée, nous placerons simplement le longPressActive retour à false pour permettre au programme d’appuyer longuement sur une fois de plus. Si il n’a pas été activé, nous renversera l’état de la deuxième LED comme nous l’avons fait avec le premier.
if (longPressActive == true) { longPressActive = false; } else { LED2State = !LED2State; digitalWrite(LED2, LED2State); }