Étape 6: Codage il.
Vous pouvez télécharger le croquis ci-joint. C’est en fait assez simple. La première partie met en place toutes les variables et les constantes que nous allons utiliser.
const int buttonPin = 0 ; le nombre de l’axe des boutons poussoirs
const int ledPin = 13 ; le nombre de l’axe de la LED pour les tests
Ce qui précède juste met en place les chevilles utilisées. Ensuite vous devez configurer chaque touche et la plage de valeurs pour ce bouton :
const int BUTTON1 = 1 ;
...
const int BUTTON1LOW = 970 ;
const int BUTTON1HIGH = 1024 ;
...
Dans la configuration, nous avons simplement définir les États de broche et commencez au port série (qui touche sera écrit dans la sortie de série) :
pinMode (buttonPin, entrée) ;
pinMode (ledPin, sortie) ;
Serial.Begin(9600) ;
Puis nous arrivons à la partie intéressante. La première partie de la boucle du programme où la magie se produit réellement, mais il vérifie simplement quel bouton a été lu repose sur la valeur que nous avons obtenues de analogRead() :
lecture int = analogRead(buttonPin) ;
int tmpButtonState = faible ; la lecture actuelle de l’axe d’entrée
Si (lire > BUTTON5LOW & & lecture //Read interrupteur 5
tmpButtonState = BUTTON5 ;
} ElseIf (lire > BUTTON4LOW & & lecture //Read commutateur 4
tmpButtonState = BUTTON4 ;
} ElseIf
....
} else {}
Aucune touche n’est actionnée ;
tmpButtonState = bas ;
}
La partie suivante debounces juste la touche. Fondamentalement, sans cela, appuyer une fois sur le bouton semblerait le code aussi plusieurs presses. Habituellement, cela permettrait d’utiliser le bouton comme un interrupteur à bascule ainsi, mais je ne fais pas cela.
J’ai l’intention en utilisant les boutons comme des boutons de réinitialisation, donc j’ai juste besoin de détecter le moment où ils sont poussés et réinitialiser une variable spécifique. Si ((millis()-lastDebounceTime) > debounceDelay) {}
Si (tmpButtonState! = lastButtonState) {}
lastDebounceTime = millis() ;
}
buttonState = tmpButtonState ;
}
lastButtonState = tmpButtonState ;
La dernière partie du programme est juste une instruction switch qui exécute du code différent basé sur quel bouton a été enfoncé. Pour le test, ils ont tous viens de passer sur le bâti en LED sur la broche 13.
{Switch(ButtonState)}
boîtier bas :
digitalWrite (ledPin, basse) ;
rupture ;
cas no BUTTON1 :
digitalWrite (ledPin, HIGH) ;
rupture ;
...
}
Et c’est pour l’essentiel combien il est facile de contrôler plusieurs boutons. Je n’ai pas mis en place cela dans mon projet encore, donc je pourrais faire une bibliothèque pour elle à un certain stade si j’ai besoin de.