Ateliers Arduino novembre 2020

Suite au retour du confinement, cet atelier s’est passé en distanciel en utilisant le logiciel Discord afin de faire des partages d’écrans.

Les types de broches

Arduino dispose de deux types de broches

  • les broches numériques
  • les broches analogiques

Les broches numériques ne traitent que deux niveaux logiques de tension : 0V ou 5V

Cela veut dire que la broche peut envoyer du 0V ou 5V et qu’elle ne pourra lire que du 0V ou 5V.

Ok mais si je lui met 2.5V en entrée, la carte lit du 0 ou 5V ?

Question très intéressante….

Et bien, tout dépend de la carte, certaines cartes liront du 0V, tandis que d’autres du 5V.
Les tensions entre 2 et 3V sont des valeurs indéterminées.

Lorsque les tensions à lire fluctuent entre 0 et 5V, on utilise les broches analogiques.

La carte Arduino est capable de lire une tension analogique et de convertir le résultat dans un nombre compris entre 0 et 1023.
Nous verrons son utilisation par la suite.

Choix des broches

Les broches peut être affectée selon deux états :

  • INPUT : la broche va recevoir un signal venant d’un capteur, bouton poussoir, sonde…)
  • OUTPUT : la broche va émettre un signal vers un récepteur (LED, servo moteur,buzzer…)
  • Ces états (INPUT ou OUTPUT) serviront pour l’instruction pinMode que nous verrons dans le programme


    Les LED

    Les LED (ou DEL en français pour Diodes Electro-Liminescentes) sont des composants permettant de générer de la lumière.

    Pour cela, les LED sont contrôlées en courant, c’est à dire que c’est à partir d’un certain courant que la LED va briller.
    En revanche, un courant trop important risque de détruire la LED.

    Pour les LED rouge 5mm, un courant de 10 mA est raisonnable, on peut monter au maximum jusqu’à 20 mA.

    Schéma clignotement LED

    Voici le lien pour simuler le schéma (il faut un compte Tinkecad pour éditer et simuler le projet) :
    https://www.tinkercad.com/things/bVMNKdTBKLx-ateliers-arduino-1-led/editel?sharecode=j37-j5HsJZZFKNVINP89rm7d7XKQa8Px1qE-YFRKQKc

    Programme clignotement LED

    //La LED est considérée comme un objet recevant un signal depuis l'Arduino.
    //Le mode sera donc OUPUT
    
    //VARIABLES
    
    int broche_led = 12; //la LED raccordée à la broche 12
    int temps = 1000; //Temps d'activité de la led en milliseconde
    
    //int veut dire que la données stockée par la variable est un nombre entier
    //Il existe les types float (nombre à virgule), bool (booléen)...
    //La fonction setup est une fonction appelée lors du démarrage
    //de la carte Arduino (exécutée 1 seule fois)
    //C'est une fonction d'initialisation
    
    //Le contenu d'une fonction est encadré par des accolades { (ouvrante) et } (fermante)
    
    void setup()
     {
     pinMode(broche_led, OUTPUT); //pinMode(numero_broche, etat) permet de définir si une broche est une entrée ou une sortie
    
    }
    
    void loop()
     {
    
    //digitalWrite est une instruction pour mettre une broche données à un état HAUT ou BAS.
    
     digitalWrite(broche_led, HIGH); //Met 5 V en sortie de la broche 12 (broche_led=12)
     delay(temps); // Ne fait rien pendant 1 seconde (1s = 1000 ms)
     digitalWrite(broche_led, LOW); //Met 5 V en sortie de la broche 12 (broche_led=12)
     delay(temps); // Ne fait rien pendant 1 seconde (1s = 1000 ms)
    
    }

    Dimensionnement de la résistance

    Nous allons limiter le courant à 10 mA.

    Par nature, la LED étant un semi-conducteur (composant qui laisse passer le courant dans un seul sens), cette dernière possède une chute de tension lorsque une tension est appliquée à ses bornes. le tableau suivant récapitule les chutes de tension en fonction de la couleur de la LED.

    Couleur Chute de tension
    Rouge 1.6
    Vert 2.2V
    Jaune 2.1 V
    Bleu 2.5V
    Blanc 3 V

    Nous connaissons le courant traversé par la LED et sa chute de tension, nous pouvons appliquer la loi d’Ohm (zoom sur l’image)

    Dans le calcul, Uarduino correspond à la tension en sortie des broches numériques Arduino, c’est à dire 5V.

    Dans le fichier de simulation, je vous invite à mettre une valeur de résistance supérieur ou égale à 340 Ohms (valeur minimale).

    Il faut savoir que la durée de vie d’une LED est directement liée à son courant la traversant. Plus une LED brille fort, plus sa durée de vie sera réduite.


    Les boutons poussoirs

    L’objectif est de capter un appui sur un bouton poussoir.

    Cela permettra par exemple d’allumer une LED lors d’un appui sur celui-ci.

    Principe

    D’un point de vue électrique, un bouton poussoir est un fil sectionné (circuit ouvert) quand il est au repos (bouton non pressé) et se transforme en fil lorsqu’il est pressé.
    Le bouton poussoir possède 4 broches et le courant traverse le bouton par les broches diagonalement opposées.

    Ah, bah très bien, on met une broche à 5V et une autre vers une broche numérique et le tour est joué ??

    Ok, faisons cela.

    – Je pense qu’il va y avoir un problème…. Que vaut la tension quand le bouton poussoir est au repos ??

    – HEu….

    – C’est bien là le problème…Vu que le bouton se comporte comme un fil sectionné au repos, le potentiel (tenson) sur l’entrée est indeterminé.
    Du coup, l’arduino va aussi bien lire un niveau logique 0 ou 5V !!

    Pour remédier à ce problème, nous allons fixer le potentiel de l’entrée à un niveau donné.

    Il s’agit des montages pull-up ou pull-down

    Montage pull-up

    Etudions le cas du montage pull-up :

    (Lien de simulation à l’adresse suivante :
    https://www.tinkercad.com/things/aHeZPoZDxle-ateliers-arduino-2-bouton/editel?sharecode=Gb_pPE7-p-PSkfg5ZPnAHbWFBBaKPbP-9pIM0672IlA)

    Cette fois-ci, on constate que lorsque le bouton poussoir est au repos, l’entrée de l’Arduino est directement reliée au 5V par l’intermédiaire d’une résistance.

    Un entrée sur le 5V fixe le niveau logique à VV. Objectif atteint !

    Ne pourrions nous pas mettre un fil à la place de la résistance ??

    -> On pourrait mettre un fils dans le cas où… nous n’appuyons jamais sur le bouton poussoir !

    Comment ça ?

    Et bien, imaginez que vous appuyez sur le bouton poussoir… Que se passe-t-il ?

    Le courant à tendance à passer des potentiels les plus élevés (5V ici) aux potentiels les plus faibles (la masse).

    Le courant passe donc dans un premier fil (notre résistance ‘nulle’) et par un second fil (notre bouton poussoir) : nous obtenons donc un joli court-circuit !

    La valeur de la résistance importe peu tant qu’elle soit suffisamment élevée (>10 kOmh).

    Ce montage est appelé pull-up car le potentiel est au niveau logique haut quand le bouton est au repos.

    Montage pull-down

    Le montage pull-down est le contraire en terme de placement de résistance et de bouton poussoir.

    Au repos, le bouton poussoir délivre un niveau logique 0.

    Dorénavant, nous utiliserons au choix le montage pull-up ou pull-down pour les boutons poussoirs.
    Maintenant, passons au programme…

    Programme bouton boussoir

    digitalRead(broche) est une instruction permettant de lire le niveau logique d’une entrée de l’Arduino.
    On lui précise le numéro de la broche et elle retourne le niveau logique de la broche.

    //VARIABLES
     int broche_bp = 3; //Broche du bouton
    
    void setup()
     {
     pinMode(broche_bp, INPUT);//Bouton en entrée
     Serial.begin(9600); //Communication avec le moniteur série
    
    }
     void loop()
     {
     int valeur = digitalRead(broche_bp); //On stocke la valeur lue dans une variable
     Serial.print("Valeur du bouton = ") ; //Affichage de texte
     Serial.println(valeur); //Affichage de valeur
     delay(100);
    
    }