Arduino les structures de contrôles

Estimated read time 4 min read

Les structures de contrôle sont des blocs d’instructions qui s’exécutent en fonction d’un certain nombre de conditions, cela va nous permettre de dire à notre Arduino d’exécuter des instructions en fonction de nos besoins et de certaines conditions fixées préalablement, prenant un exemple tout simple :

Imaginer que vous désirez que votre Arduino allume une lampe dès qu’une personne appui sur un bouton (ou si un capteur de présence détecte la présence de quelqu’un dans pièce). Et bah assurez-vous cela est facilement réalisable grâce un la structure « if … else ».

En effet, Il existe quatre types de structure :

if…else :

Cette structure exécute un code si certaines conditions sont remplies, sinon elle exécutera un autre code, voici la syntaxe :

If ( conditions )
{
//bloc d’instruction
}
else 
{
// deuxième bloc d’instruction qui s’exécutera dans le cas ou les conditions fixées au début ne sont pas vérifiées
}

Attention : le deuxième bloc « else » est optionnel, ça veut dire que vous pouvez tout-à-fait vous contenter de l’instruction « if » toute seul si vous n’avez pas besoin d’excexuter un deuxième bloc « else » dans votre programme.

Exemple :

//si on appui sur le bouton alors allume la lampe
Int buttonState=0 ;
buttonState = digitalRead(buttonPin);

  // vérifier si on a appuié sur le bouton.si oui, allume la led:
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
  } else {
    // sinon éteint la led:
    digitalWrite(ledPin, LOW);
  }

while :

Exécute un ensemble d’instructions tant que certaines conditions sont remplies.
Exemple :
Considérant l’exemple d’un système d’arrosage automatique, on dispose donc d’un capteur d’humidité qui retourne une valeur entre 0 et 250, et d’une pompe pour irriguer nos plantes.
On suppose que si le capteur retourne une valeur inférieure à 10 ça signifie que nos plantes ont « soif »

valeurCapteur = analogRead(A0); // Lecture de l’état du capteur
while(valeurCapteur<100){
    //allume la pompe branché sur le pin 5 (bien-sûr via un contacteur ou un relais)
    digitalWrite(5,HIGH);
    //on relie la valeur retourner par le capteur et en boucle tant que valeurCapteur est inférieure à 100
valeurCapteur = analogRead(A0);
}

for :

Honnêtement la structure for et if sont les deux structures que j’utilise le plus dans mes codes et vous allez rapidement comprendre pourquoi.
Imaginez tout simplement que vous désirez faire clignoter une led un certain nombre de fois, ce que revient à allumer et éteindre cette led avec une pause entre les deux actions.
La structure for est faite spécialement pour cette raison, elle permet d’exécuter un code pour un certain nombre de fois, on appelle ça itération. La syntaxe est la suivante :
For ( « condition de départ » ; « conditions d’arrêt » ; « expression d’avancement de la boucle »)
{
// instructions
}

Nom de la syntaxeLors de l’exécutionexemple
Condition de départ Employé pour initialiser des index de boucle. Elle peut contenir des expressions ou des déclarations.Int i=0 ;
Condition d’arrêtAvant l’exécution de chaque itération, y compris la première itération. Le bloc d’instruction est exécuté uniquement si cond-expression prend la valeur true (différente de zéro). i<10 ;
expression d’avancement de la boucleNormalement utilisée pour incrémenter les index de boucle. À la fin de chaque itération. Une fois l’« expression d’avancement de la boucle ») est exécuté, la condition d’arrêt est évalué avant d’exécuter la prochaine itération.i++ ;// on incrémente i d’un seul pas
//faire clignoter une led 255 fois
for (int i=0; i <= 255; i++){
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);

}

switch / case :

Autorise la sélection parmi plusieurs sections de code, selon la valeur d’une expression intégrale. Cela permet de faire un choix entre plusieurs codes parmi une liste de possibilités : Le corps de la structure switch se compose d’une série d’étiquette nommés « case ».
Un exemple sera plus parlant :

// fait un choix parmi plusieurs messages reçus
switch (n) {
    case 0: //si le message est "0"
        //allume que la sortie 1
        digitalWrite(1,HIGH);
        digitalWrite(2,LOW);
        digitalWrite(3,LOW);
        break;
    case 1: //si le message est "1"
        //allume que la sortie 2
        digitalWrite(2,HIGH);
        digitalWrite(1,LOW);
        digitalWrite(3,LOW);
        break;
    case 2: //si le message est "3"
        //allume que la sortie 5
        digitalWrite(1,LOW);
        digitalWrite(2,LOW);
        digitalWrite(3,HIGH);
        break;
    }

You May Also Like

More From Author

+ There are no comments

Add yours