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


Flowcode_328P_Girouette.rar


Sous Arduino

La fonction en langage C permettant de faire une "Muti-Décision" est: switch ... case

Voir la vidéo sur Youtube ici.


switch...case


Description

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.


Syntax

switch (var) {
  case label1:
    // statements
    break;
  case label2:
    // statements
    break;
  default:
    // statements
    break;
}


Parameters

var: a variable whose value to compare with various cases. Allowed data types: intchar.
label1label2: constants. Allowed data types: intchar.


Returns

Nothing


Example Code

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;
}


La description

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.


Syntaxe

switch (var) {
  case label1:
    // statements
    break;
  case label2:
    // statements
    break;
  default:
    // statements
    break;
}


Paramètres

var: une variable dont la valeur est à comparer avec différents cas. Types de données autorisés : intchar.
label1label2: constantes. Types de données autorisés : intchar.


Retour

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