Chapitre 3

 

Dans ce chapitre nous allons prendre un peu de temps pour bien comprendre ce que sont les modes INPUT et OUTPUT et les états HIGH et LOW. Si on se limite aux entrées sorties digitales (nous verrons les soeurs analogiques plus tard), on peut dire qu’une Pin (une broche) est caractérisée par deux choses :

son sens : en entrée (INPUT) ou en sortie (OUTPUT)
son état : haut ,5v (HIGH) ou bas, 0v (LOW)

mode INPUT

Dans ce mode, l’Arduino est à l’écoute, en attente d’un évènement qui vient de l’extérieur. De façon un peu plus précise l’Arduino mesure, un peu à la manière d’un voltmètre, la tension reliée à sa broche. Pour connaître cette tension, un tout petit courant circule entre l’extérieur et la Pin de l’Arduino. (A l’intérieur de l’Arduino se trouve une résistance très élevée de 100 M ohms « devant » la broche en mode INPUT).

Dans le mode digital, on ne fait pas le détail, soit la tension est HIGH, soit elle est LOW. (En réalité tout ce qui est à plus de 3v est reconnu comme HIGH et en dessous reconnu comme LOW). Nous avons vu l’exemple d’une utilisation en mode INPUT dans le chapitre précédent où l’on utilisait un switch. C’est important de bien comprendre que l’intensité qui traverse le switch est très petite, ce n’est pas comme dans un montage classique où l’on utilise un interrupteur qui est traversé par le même courant que le moteur qu’il commande.

Dans ce mode INPUT, ce sont donc en général des capteurs que l’on va connecter à l’Arduino.

mode OUTPUT

Dans ce mode, le patron c’est l’Arduino, il n’est pas à l’écoute, il parle, il commande à l’extérieur ! Mais on va voir que si le patron parle trop fort, il risque de perdre sa voix !

L’Arduino fait circuler entre la broche concernée et l’extérieur un petit courant de l’ordre de 10 ou 20 mA. Plus exactement, c’est au concepteur (le meccanoman) de s’assurer que le courant qui circule a une intensité de l’ordre de 10 ou 20 mA. Dans le mode OUTPUT, il n’y a pas de resistance très élevée à l’intérieur de l’Arduino pour limiter le courant.

Une chose importante à comprendre est que ce courant de 10 ou 20 mA ne permet pas d’alimenter directement grand chose : on va pouvoir par exemple allumer une diode mais pas faire fonctionner un moteur électrique. Si on ne prend pas garde et que l’on permet à un courant trop important de passer ou pire que l’on met la broche en court circuit, on peut détruire la broche, on ne pourra plus s’en servir.

Si l’on veut piloter un moteur par exemple, il faudra utiliser un dispositif d’amplification qui permettra de délivrer des intensités plus importantes par exemple 200 mA. Ce dispositif d’amplification est présent dans le Dfrduino que nous utilisons mais absent d’un Arduino de base qu’il faut compléter.

Dans ce mode OUTPUT on va donc agir vers l’extérieur ; si on a besoin d’une intensité importante, il faudra amplifier le courant généré ou utiliser des relais.

Quelques montages simples vont suivre …

===

Revenons sur un montage du chapitre 2

Dans ce montage on se propose de passe à l’état HIGH la Pin 2 en appuyant sur le switch.


    *
    * Test switch Chap 2 P1
    */

    int switchPin = 2; // le switch est connecte à la Pin digitale 2

    void setup()
    {
    Serial.begin(19200);
    pinMode(switchPin, INPUT); // la pin 2 est en mode entrée
    }

    void loop()
    {
    int resultat;
    Serial.print("Lecture de l'etat du switch: ");
    resultat=digitalRead(switchPin); // l'état du switch (0 ou 1) est rangé dans la variable resultat
    Serial.println(resultat); // Afficher dans le moniteur serie le contenu de resultat donc l'état du switch
    delay(1000);
    }

Dans ce montage on n’a pas encore mis la résistance « ressort de rappel » de 10 k ohms. Mais on a monté une resistance de 220 ohms, « en protection ».

En fait dans ce montage, avec la Pin 2 en mode INPUT, cette resistance de 220 ohms ne sert à rien. Elle ne nuit pas non plus au fonctionnement : il faut se souvenir qu’en mode INPUT, l’Arduino place une resistance interne de 100 000 000 d’ohms « devant » la Pin, alors passer de 100 000 000 à 100 000 220 ohms ne change rien à l’affaire.

On aurait pu tout aussi bien se contenter de ce montage :

Alors pourquoi mettre cette resistance de « protection » ?

Pour le comprendre il faut se demander ce qui se passerait si, par erreur, on mettait avec ce montage la Pin 2 en mode OUTPUT. En appuyant sur le switch, la Pin 2 serait directement reliée au +5v, sans résistance pour limiter le courant : résultat, un court-circuit et une broche sans doute détruite…

Cette resistance de 220 ohms ne gêne pas le fonctionnement quand la broche est en mode INPUT et permet de la protéger des courts-circuits en mode OUTPUT, c’est donc bon plan de la mettre systématiquement avec les montages comportant un switch.

Pourquoi 220 ohms ? Il faut se souvenir de la loi d’Ohm.

U = R x I

U : tension en volts R : résistance en ohms I : intensité en ampères

Ici on a 5V et 220 ohms, le courant vaut donc, si on appuie sur le switch :

I= U / R = 5 / 220 = 0,023 A = 23 mA

Pas de pb, l’Arduino peut délivrer pour une broche jusqu’à 40 mA (mais attention il y a une limite globale en OUTPUT pour le total du courant délivré par l’ensemble des broches, c’est 200 mA ).

Si on n’a pas 220 ohms dans sa collection, n’importe qu’elle valeur entre 200 et 300 ohms fera l’affaire.

===

On va faire travailler la broche 2 en OUTPUT


    /*
    * Test switch Chap 3 P1
    */

    int ledPin = 2; // la led est connecte à la Pin digitale 2

    void setup()
    {

    pinMode(ledPin, OUTPUT); // la pin 2 est en mode sortie
    digitalWrite (ledPin, HIGH); // la pin 2 passe à l'état haut
    }

    void loop()
    {

    }

La diode s’allume. Si on mesure la tension aux bornes de la diode on mesure 1,8 v, aux bornes de la resistance on mesure 3,1 v. Le courant qui parcourt la resistance de 220 ohms est de 3,1/ 220 soit 14 mA. C’est le même qui parcourt la diode (les deux composants sont branchés en série, à la queue leu leu, l’intensité qui les parcourt est la même). La broche de l’Arduino délivre un courant de 14 mA, on est tout à fait dans le raisonnable.

Petite indication : la diode a une patte plus longue que l’autre , c’est la patte longue qui doit être du côté du +. Si on se trompe de sens, la diode ne s’allume pas mais on ne l’abime pas. La resistance se branche dans un sens ou l’autre, ça n’a pas d’importance.

Le schéma électrique correspondant :

(Pour les schemas, j’utilise le logiciel gratuit et libre qelectrotech ; l’électronique n’est pas vraiment sa spécialité (ni la mienne 🙂 ) mais on peut se débrouiller.

Quelles broches peut-on utiliser ?

L’Arduino a 20 broches d’entrée-sortie. Mais elles ne sont pas toutes équivalentes :

– les broches 0 et 1 correspondent à la communication USB, ne pas les utiliser

– la broche 13 est particulière car elle est reliée à une resistance et une diode rouge soudée sur la carte, en pratique ne pas l’utiliser en mode INPUT mais est très utile en mode OUTPUT pour visualiser des états sans faire de montage sur la breadboard.

– les broches de 14 à 19 sont des broches utilisables en analogique (elles se nomment aussi A0, A1…A5) mais on peut aussi les utiliser en digital.

En pratique les broches 2 à 12 sont utilisables simplement mais elles n’ont pas toutes exactement les mêmes possibilités : par exemple sur un Arduino Uno, seules les broches 3,5,6,9,10,11 peuvent être utilisée en PWM (pour faire varier la vitesse d’un moteur).