Choisir avec switch
Fait partie de la section Gestion du temps sans delay du Journey Arduino de Coddy. Leçon 8 sur 18.
Lorsqu’une variable peut avoir plusieurs valeurs et que chaque valeur nécessite son propre code, une chaîne de if et de else if devient longue. switch fait la même chose et se lit comme une liste :
switch (zone) {
case 0:
// s’exécute lorsque zone vaut 0
break;
case 1:
// s’exécute lorsque zone vaut 1
break;
default:
// s’exécute lorsqu’aucun case ne correspond (facultatif)
break;
}switch passe au case dont le numéro correspond et exécute les lignes qui suivent. break quitte le switch. Si tu oublies un break, la carte continue aussi avec les lignes du cas suivant, ce qu’on appelle une chute en cascade.
Ici, le potentiomètre est divisé en quatre zones. analogRead() renvoie une valeur de 0 à 1023, et la division par 256 donne un nombre entier : 0 pour le quart inférieur, puis 1, 2 et 3 en haut. Chaque zone affiche sa propre couleur sur la LED RGB.
Défi
FacileTransforme le bouton en sélecteur de couleur avec switch :
- zone 0 : rouge (déjà écrit)
- zone 1 : vert
- zone 2 : bleu
- zone 3 : blanc (les trois allumés)
Utilise setColor() et termine chaque case par break;. Appuie sur Run, tourne le bouton, puis Check.
Essayez vous-même
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void setColor(int red, int green, int blue) {
digitalWrite(redPin, red);
digitalWrite(greenPin, green);
digitalWrite(bluePin, blue);
}
void loop() {
int zone = analogRead(A0) / 256; // 0, 1, 2 ou 3
switch (zone) {
case 0:
setColor(HIGH, LOW, LOW); // rouge
break;
// ajoutez les zones 1, 2 et 3 ici
}
}
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