6.4.b Multi-Décision |
Sous Flowcode c'est le pictogramme qu'il faut utiliser pour faire une "Multi-Décision"
Aide: https://www.flowcode.co.uk/wiki/index.php?title=Switch_Icon_Properties
La fonction "commutateur de cas" est similaire à la fonction "décision" uniquement au lieu de deux branches de résultats possibles (Oui, Non), il y en a jusqu'à onze. Ils sont particulièrement utiles pour adapter votre programme afin qu'il réagisse de différentes manières en fonction d'une variable d'entrée.
Exemple: Réalisation d'une Girouette à affichage numérique
Sous Arduino |
La fonction en langage C permettant de faire une "Muti-Décision" est: switch ... case
Voir la vidéo sur Youtube ici.
Like if statements, switch case controls the flow of programs by allowing programmers to specify different code that should be executed in various conditions. In particular, a switch statement compares the value of a variable to the values specified in case statements. When a case statement is found whose value matches that of the variable, the code in that case statement is run.
The break keyword exits the switch statement, and is typically used at the end of each case. Without a break statement, the switch statement will continue executing the following expressions ("falling-through") until a break, or the end of the switch statement is reached.
switch (var) {
case label1:
// statements
break;
case label2:
// statements
break;
default:
// statements
break;
}
var: a variable whose value to compare with various cases. Allowed data types: int, char.
label1, label2: constants. Allowed data types: int, char.
Nothing
switch (var) {
case 1:
//do something when var equals 1
break;
case 2:
//do something when var equals 2
break;
default:
// if nothing else matches, do the default
// default is optional
break;
}
Comme les instructions if , switch case contrôle le flux des programmes en permettant aux programmeurs de spécifier un code différent qui doit être exécuté dans diverses conditions. En particulier, une instruction switch compare la valeur d'une variable aux valeurs spécifiées dans les instructions case. Lorsqu'une instruction case est trouvée dont la valeur correspond à celle de la variable, le code de cette instruction case est exécuté.
Le mot-clé break quitte l'instruction switch et est généralement utilisé à la fin de chaque cas. Sans instruction break, l'instruction switch continuera à exécuter les expressions suivantes ("falling-through") jusqu'à ce qu'une pause ou la fin de l'instruction switch soit atteinte.
switch (var) {
case label1:
// statements
break;
case label2:
// statements
break;
default:
// statements
break;
}
var: une variable dont la valeur est à comparer avec différents cas. Types de données autorisés : int, char.
label1, label2: constantes. Types de données autorisés : int, char.
Rien
Exemple de code https://docs.arduino.cc/built-in-examples/control-structures/SwitchCase2
void setup() {
Serial.begin(9600);// initialisation de la communication série :
for (int thisPin = 2; thisPin < 7; thisPin++) { // initialise les broches des DEL en sortie
pinMode(thisPin, OUTPUT);
}
}
void loop() {
if (Serial.available() > 0) { // si la liaison série est prête
int inByte = Serial.read(); // lecture d'un caractère
switch (inByte) {
case 'a': // code ASCII du 'a' --> 97 (0x61)
digitalWrite(2, HIGH);
break;
case 'b': // code ASCII du 'b' --> 98 (0x62)
digitalWrite(3, HIGH);
break;
case 'c': // code ASCII du 'c' --> 99 (0x63)
digitalWrite(4, HIGH);
break;
case 'd': // code ASCII du 'd' --> 100 (0x64)
digitalWrite(5, HIGH);
break;
case 'e': // code ASCII du 'e' --> 101 (0x65)
digitalWrite(6, HIGH);
break;
default: // éteindre toutes les DEL
for (int thisPin = 2; thisPin < 7; thisPin++) {
digitalWrite(thisPin, LOW);
}
}
}
}
Simulation sous Proteus
Téléchargement du schéma structurel sous Proteus 8: Arduino_328P_Switch_Case.pdsprj
Créé avec HelpNDoc Personal Edition: Rationalisez votre processus de documentation avec un outil de création d'aide