Ignorer la navigation

Le test « IF » (+ bouton poussoir)

Rôle, intérêt et utilisation du test  IF …. THEN ….. ELSE

 

 

I. Le test conditionnel IF

Le principe :

SI Test vrai
   Instruction 1 exécutée
SINON
   Instruction 2 exécutée
FIN SI
Instruction 3 (suite du programme)
  

     

Voici un extrait de la documentation Arduino:

if (conditional) and ==, !=, <, > (comparison operators)

if, which is used in conjunction with a comparison operator, tests whether a certain condition has been reached, such as an input being above a certain number. The format for an if test is:

if (someVariable > 50)
{
    // do something here
}

The program tests to see if someVariable is greater than 50. If it is, the program takes a particular action. Put another way, if the statement in parentheses is true, the statements inside the brackets are run. If not, the program skips over the code.

The brackets may be omitted after an if statement. If this is done, the next line (defined by the semicolon) becomes the only conditional statement.

if (x > 120) digitalWrite(LEDpin, HIGH);

if (x > 120)
digitalWrite(LEDpin, HIGH);

if (x > 120){ digitalWrite(LEDpin, HIGH); }

if (x > 120){
  digitalWrite(LEDpin1, HIGH);
  digitalWrite(LEDpin2, HIGH);
}        
// all are correct



The statements being evaluated inside the parentheses require the use of one or more operators:
Comparison Operators:

 x == y (x is equal to y)
 x != y (x is not equal to y)
 x <  y (x is less than y)  
 x >  y (x is greater than y)
 x <= y (x is less than or equal to y)
 x >= y (x is greater than or equal to y)


if / else

if/else allows greater control over the flow of code than the basic if statement, by allowing multiple tests to be grouped together. For example, an analog input could be tested and one action taken if the input was less than 500, and another action taken if the input was 500 or greater. The code would look like this:

if (pinFiveInput < 500)
{
  // action A
}
else
{
  // action B
}

....


en résumé cela donne :
if (test …..)  / / debut du test            
    {     
      instruction 1
    }
  else    
    {
      instruction 2
    }  // fin du test
les "….." représentent une équation logique. Exemples :
  • a > b
  • a >= b
  • a < b
  • a <= b
  • a == b (noter les deux = sinon a prend la valeur de b)
  • a!= b (si a différent de b)

 

 

II. Application : appui sur un bouton poussoir

 Objectif du programme : la led s'allume si on appuie sur un bouton poussoir (quand on relâche elle s'éteint)


Principe:

  • On va rajouter un bouton poussoir que l'on va raccorder sur l'entrée numérique (digital) n° 2.
  • On va utiliser un test conditionnel IF

1. Préliminaire : on va tester le bouton poussoir (BP)

Placer le BP sur le support de test (bien le mettre au milieu). Ensuite on va prendre un multimètre en position ohmmètre et on va tester le résistance (OL= over limit = résistance infinie c'est à dire contact ouvert, quelques ohm ou zéro ohm = contact fermé).

Remarque: le support de test est une breadboard: les explications de l'utilisation de cette plaque de prototypage sont données sur la fiche "breadboard"). Aller la lire avant de faire le câblage!

Faire vérifier le câblage par le professeur.

 

  

Complétez le tableau suivant :

Appui sur BP

Mesure à l'ohmmètre

État du contact (ouvert ou fermé)

État logique (0 ou 1)

OUI

NON

 

 

2. Le montage complet

Le schéma de raccordement : Schéma électronique :
  

  

A quoi sert la résistance de 10kΩ?

Lorsqu'une broche numérique d'Entrée n'est pas connectée, le niveau présent sur cette broche d'entrée est instable et la LED dans notre programme clignoterait de façon aléatoire. Ceci est du au fait que l'entrée est "flottante", c'est à dire qu'elle n'a pas de connexion matérielle au +5V ou à la masse, et elle oscillera de façon aléatoire entre le niveau HAUT et le niveau BAS. C'est pour cette raison qu'il faut mettre une résistance de "rappel au plus" (appelée aussi résistance de tirage ou pull-up) dans le montage du BP sur la broche numérique en entrée.

  

Faire le petit câblage (le arduino doit être débranché du cordon USB) et faites vérifier par le professeur.

 

 

3. Le programme Arduino

    
     

Voici ce que dit la documentation Arduino:

digitalRead()

Reads the value from a specified digital pin, either HIGH or LOW.

Syntax : digitalRead(pin)

Parameters: pin: the number of the digital pin you want to read

Returns : HIGH or LOW

...

en résumé: digitalRead ( n° de broche) lit l'état de l'entrée numérique (Tout Ou Rien).

  

  

  

Ouvrir le fichier « clign_led_BP.txt », récupérer le programme contenu dans le fichier et testez le.

Compléter l'algorithme du programme :

Expliquer en détail le fonctionnement du programme (rôle de telle instruction, ...)

Que constatez-vous ? L'objectif de fonctionnement est-il atteint ? Si ce n'est pas le cas expliquez ce qui se passe (à partir du schéma électronique).

Proposez et essayez une modification du programme. Faire valider par le professeur.

Le microcontrôleur utilisé sur la carte Arduino dispose d'une résistance interne qu'il est possible d'activer pour réaliser le Pull-up (rappel au plus), ce qui permet de se dispenser d'une résistance externe !

Dans le programme Arduino cela donne:

Le seul changement se situe dans le Setup():

pinMode(boutonPin, INPUT);    //met la broche en entree
digitalWrite(boutonPin, HIGH) ;   // activation du pullup de la broche en entrée

 

 

 

III. Simulation


Nous allons maintenant faire la même chose que précédemment mais en simulation.

Pour la simulation nous utilisons le logiciel Proteus. Toutes les informations pour utiliser le logiciel sont dans le document : utilisation de Proteus.pdf

Les bibliothèques Arduino pour Proteus sont ici (les télécharger puis les dézipper puis les copier à l'endroit indiqué par la documentation) 

 

  

Rappel : une sortie TOR Arduino c’est 40mA max (idéalement plutôt 20 mA)

  
Étape 1 : reprendre le projet Proteus créé pour la fiche 1 (le système Arduino)

Étape 2 : modifier le schéma en rajoutant un bouton poussoir pour obtenir le schéma suivant (vous laisserez R4 à la valeur trouvée dans la fiche 1):


Étape 3 : implanter le programme précédent (clign_led_BP.txt)

Étape 4 : simuler et vérifier que tout fonctionne

 
Étape 5 : modification et amélioration

Nous allons mettre en route, en même temps que la led, un moteur (moteur à courant continu de 12V, courant de plusieurs centaines de milliampères), relié sur la broche TOR 10

 

Modifier votre simulation afin d’avoir ceci :

Rajouter un volt-mètre aux bornes du moteur

 

Étape 6 : modifier votre programme pour qu’il commande en même temps la led et le moteur et implanter ce programme dans proteus. Essayer.

6.1 Le moteur tourne-t-il à la bonne vitesse (vers 400 tr/min) ?

6.2 Quelle en est la raison d’après vous (en fait il y en a deux) ?

 

Étape 7 : on va régler nos problèmes de courants et de tensions en rajoutant un relais qui fera l’interface entre les deux tensions (le relais est placé entre la carte arduino et le moteur).

Si vous ne vous rappelez plus ce qu’est un relais (ou un contacteur), il y a une fiche explicative ici : le_relais_lectromcanique.html

7.1 Modifier votre schéma pour y rajouter un relais (voir doc technique de proteus pour le choix du relais)

7.2 Lancer la simulation et vérifiez que tout fonctionne (faire valider par le professeur et mettre une copie d’écran dans votre compte-rendu)

 

Remarque : on verra dans le chapitre sur l’amplification qu’un transistor est nécessaire entre la carte arduino et le relais (ainsi qu’une diode de protection dite « de roue libre ») .

Créé avec eXeLearning (Nouvelle fenêtre)