Instructions conditionnelles : le switch ... case
. Par : Jean-Luc
Vous répondez à :
Bonjour Jean-Luc,
Je viens de prendre connaissance de cet article édité en janvier 2015.
J’ai des feux de signalisation à animer sur mon réseau.
A la fin de ton article tu écris que celui-ci "servira de base à un exemple plus complet que nous verrons prochainement".
Où se trouve l’exemple plus complet dont tu parles ?
En effet, j’ai beau chercher dans Locoduino, je ne trouve pas cet exemple promis.
Bien cordialement.
Jacques
10 Messages
-
Instructions conditionnelles : le switch ... case 4 juillet 2017 15:42, par Jacques
Bonjour Jean-Luc,
Je viens de prendre connaissance de cet article édité en janvier 2015.
J’ai des feux de signalisation à animer sur mon réseau.
A la fin de ton article tu écris que celui-ci "servira de base à un exemple plus complet que nous verrons prochainement".
Où se trouve l’exemple plus complet dont tu parles ?
En effet, j’ai beau chercher dans Locoduino, je ne trouve pas cet exemple promis.
Bien cordialement.
Jacques -
Instructions conditionnelles : le switch ... case 4 mars 2019 18:01, par PECOURT Jean-Louis (Jihel)
Bonjour,
1 - Dans l’exemple ci-dessus, pourquoi l’ensemble du programme switch case est-il placé derrière un : void(afficheFeu)
J’avais cru comprendre que les programmes se trouvaient dans la partie loop() ?2 - D’autre part ("cas d’école"), la variable peut-elle être booléenne (donc 2 cas (0, 1) pour remplacer un if) ? par exemple récupération d’un bit dans un octet.
3 - La numérotation des cas peut-elle commencer par 0 (zéro)
4 - La numérotation des cas peut-elle commencer par n’importe quel chiffre et/ou nombre, et doit-elle être continue ?
exemple : j’ai une variable qui ne prend que les valeurs 4, 7, 12Cordialement
J.L.-
Bonjour.
Ça fait un bout de temps mais je n’avais pas vu la question.- le switch est placé dans une fonction qui sera appelée dans
loop()
. - Oui. Toute valeur différente de 0 est interprétée comme vraie, 0 est interprété comme faux.
- Oui
- Oui
Cordialement.
- le switch est placé dans une fonction qui sera appelée dans
-
-
Instructions conditionnelles : le switch ... case 5 août 2020 10:38, par Kaki In
Bonjour
Est-il possible de passer des String en argument ou il n’y a que les nombres qui sont pris en charge par le switch ?
-
Instructions conditionnelles : le switch ... case 5 août 2020 11:54, par Jean-Luc
Bonjour,
seules les données d’un type qui se ramènent à un int peuvent être utilisés c’est à dire les nombres entiers et les items d’un enum. -
Instructions conditionnelles : le switch ... case 24 avril 2021 10:13, par GUY
Bonjour,
Etant à la recherche d’un programme pour actionner mes feux tricolore sur mon réseau ferroviaire, je suis tombé sur votre site.
Mais j’ai un souci dans la copie du code, mon Arduino UNO ne prend pas l’instruction switch
Cela me met un défaut.
Cordialement -
Instructions conditionnelles : le switch ... case 24 avril 2021 10:25, par msport
... probablement une faute de frappe.
-
Instructions conditionnelles : le switch ... case 16 mars 2023 21:23
// je laisse un code fonctionnel si ça peut servir à quelqu'un . const byte VERT = 0 ; const byte JAUNE = 1 ; const byte JAUNE_CLIGNOTANT = 2 ; const byte ROUGE = 3 ; const byte ROUGE_CLIGNOTANT = 4 ; const byte led_verte = 5 ; const byte led_jaune = 6 ; const byte led_rouge = 7 ; byte etat_signal ; unsigned long temps_ecoule = 0 ; void setup ( ) { pinMode ( led_verte , OUTPUT ) ; pinMode ( led_jaune , OUTPUT ) ; pinMode ( led_rouge , OUTPUT ) ; etat_signal = ROUGE ; // on initialise à " led_rouge = HIGH " . } void loop ( ) { unsigned long temps_actuel = millis ( ) ; // récupère le temps actuel . // vérifie si le temps imparti est écoulé . if ( temps_actuel - temps_ecoule >= 5000 ) { temps_ecoule = temps_actuel ; // enregistre le temps actuel . changerEtat ( ) ; // passe à l'état suivant . } afficheFeu ( ) ; // affiche l'état courant . } void changerEtat ( ) { etat_signal ++ ; // passe à l'état suivant . // revient à l'état initial si on a atteint le dernier état . if ( etat_signal > ROUGE_CLIGNOTANT ) etat_signal = VERT ; } void afficheFeu ( ) { switch ( etat_signal ) { case VERT : digitalWrite ( led_verte , HIGH ) ; digitalWrite ( led_jaune , LOW ) ; digitalWrite ( led_rouge , LOW ) ; break ; case JAUNE : digitalWrite ( led_verte , LOW ) ; digitalWrite ( led_jaune , HIGH ) ; digitalWrite ( led_rouge , LOW ) ; break ; case JAUNE_CLIGNOTANT : // allume la led_jaune pendant 500ms, puis l'éteint pendant 500ms . if ( ( millis ( ) / 500 ) % 2 == 0 ) digitalWrite ( led_jaune , HIGH ) ; else digitalWrite ( led_jaune , LOW ) ; digitalWrite ( led_verte , LOW ) ; digitalWrite ( led_rouge , LOW ) ; break ; case ROUGE : digitalWrite ( led_verte , LOW ) ; digitalWrite ( led_jaune , LOW ) ; digitalWrite ( led_rouge , HIGH ) ; break ; case ROUGE_CLIGNOTANT : // allume la led_rouge pendant 500ms, puis l'éteint pendant 500ms . if ( ( millis ( ) / 500 ) % 2 == 0 ) digitalWrite ( led_rouge , HIGH ) ; else digitalWrite ( led_rouge , LOW ) ; digitalWrite ( led_verte , LOW ) ; digitalWrite ( led_jaune , LOW ) ; break ; default : Serial . println ( " Code de feu inconnu ! " ) ; break ; } }
-
Instructions conditionnelles : le switch ... case 17 décembre 2024 11:44, par GOURRAUD
bonjour,
la variable switch case comment on la définie
est elle approprié pour piloter un moteur de portail roulant en fonction des état des finde courses qui sont de trois possibilitées d’avance merci pour votre renseignement-
Bonjour,
Dans l’article c’est
etatSignal
qui est unbyte
. Oui ça serait adapté. Cordialement
-