Mémoriser le mode
Fait partie de la section Gestion du temps sans delay du Journey Arduino de Coddy. Leçon 7 sur 18.
Un appui sur un bouton ne dure qu’une fraction de seconde, mais ce qu’il déclenche peut durer beaucoup plus longtemps. Pour continuer après avoir relâché le bouton, le sketch doit se souvenir de ce qu’il est en train de faire. Une variable qui sert à cela s’appelle un état ou un mode :
int mode = 0; // 0 = éteint, 1 = clignotantDivisez loop() en deux. D’abord, les entrées ne font que changer le mode. Ensuite, le reste de la boucle fait ce que le mode indique :
// 1. les entrées changent le mode
if (digitalRead(blinkButton) == LOW) {
mode = 1;
}
// 2. le mode détermine ce qui se passe
if (mode == 1) {
// faire clignoter avec millis()
} else {
digitalWrite(ledPin, LOW);
}Chaque nombre correspond à une chose que le sketch peut faire. Indiquez dans un commentaire ce que signifie chaque nombre. Un sketch peut avoir autant de modes que nécessaire : 0, 1, 2, 3 et plus encore.
Défi
FacileLe bouton vert est sur la broche 2 et le bouton rouge sur la broche 3.
- le bouton vert définit
modesur 1, le bouton rouge le définit sur 0 - lorsque
modevaut 1, la LED sur la broche 13 clignote avecmillis(), allumée pendant 500 ms et éteinte pendant 500 ms - lorsque
modevaut 0, la LED est éteinte
Appuie sur Run, appuie sur le bouton vert, relâche-le, puis appuie sur le bouton rouge. Ensuite, appuie sur Check.
Essayez vous-même
const int ledPin = 13;
const int blinkButton = 2; // vert
const int offButton = 3; // rouge
int mode = 0; // 0 = éteint, 1 = clignotant
unsigned long previousMillis = 0;
int ledState = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(blinkButton, INPUT_PULLUP);
pinMode(offButton, INPUT_PULLUP);
}
void loop() {
// 1. les boutons ne font que changer le mode
// 2. ensuite, faire ce qu’indique le mode
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Gestion du temps sans delay
2Machines à états
Mémoriser le modeChoisir avec switchÉtats nommés avec enumMachine à états de feu de circulationChanger de mode avec un boutonEntraînez-vous par vous-même : Playground Arduino