TPBD1 : Partie 3 Chapitre 1 – Sorties / entrées numeriques

Accueil/TPBD1 : Partie 3 Chapitre 1 – Sorties / entrées numeriques
TPBD1 : Partie 3 Chapitre 1 – Sorties / entrées numeriques 2016-12-20T11:37:52+00:00

On vient d’aborder la programmation, maintenant on enchaîne avec la pratique. C’est donc les entrées et les sorties de l’Arduino que nous allons voir. Ceci est un gros morceau on va dire, si vous n’avez pas tout compris prenez le temps de relire ce tutoriel parce qu’il est essentiel pour la suite. Les sorties et les entrées de l’Arduino, vous ne voyez pas ce que c’est ?! Un schéma vaut mieux qu’un long discours.

Franchement il faut le dire, c’est pas l’Arduino qui manque de sorties, surtout si on rajoute une breadboard , et chacune de ces sortie peuvent être contrôlées ou bien transformer en entrée pour prendre des mesures venant de capteurs!

Introduction

Bon j’ai oublié de vous dire qu’il a 2 grandes catégories à connaître par cœur : les entrées et les sorties. Une entrée est généralement utilisé par les capteurs car ils envoient des informations à l’Arduino et les sorties servent soient pour communiquer et/ou alimenter les composants.

Prenons un exemple concret : si vous avez un capteur bouton, il va envoyer un signal par le câble qui le relie dans l’entrée de l’Arduino prévu à cet effet. Ou autre cas : votre Arduino doit faire tourner un Servomoteur de 5°. On a verra dans le tutoriel des Servomoteurs qu’il y a 3 câbles sur un Servomoteur : 2 pour l’alimentation (+ et ) et un troisième pour les informations qui lui sont envoyés. Ce câble là sera donc branché sur une sortie de l’Arduino, qui lui communiquera les « ordres ».

Vous avez compris ? Bravo maintenant on va apprendre à s’en servir.

Déclarer une sortie

Vous rappelez-vous des pins? J’en avais parlé dans le premier tutoriel de cette série. Comme vous avez du le voir sur le schéma un pin c’est une entrée ou une sortie selon son emplacement. On va donc indiquer à l’Arduino qu’un pin est utilisé comme sortie, on procède comme suit :

  • On déclare une variable de type int ma_sortie , sa valeur est celle du numéro du pin
  • Dans la fonction d’initialisation de l’Arduino (setup), on utilise la fonction pinMode().

Déclarer une entrée

Si vous avez l’esprit logique vous avez déjà compris qu’il faut remplacer OUTPUT par INPUT pour déclarer une entrée. On peut aussi renommer la variable ma_sortie en mon_entree afin de mieux s’y retrouver dans son programme.

Le même programme mais qui déclare une sortie :

int mon_entree = 2; // on commence juste par déclarer la variable ma_sortie pour le pin 2

void setup() //fonction d'initialisation de la carte

{
  pinMode(mon_entree, INPUT);  // OUTPUT signifie que c'est une sortie
}
void loop() // le programme
{

}

Commander une sortie

Bon faire tout ça c’est bien beau mais ça ne nous sert pas encore à grand chose ! On va maintenant apprendre a utiliser les pins de l’Arduino grâce aux notions qu’on vient d’apprendre et celles que je vais mon montrer.

Une petite notion à connaître à connaître avant de continuer ce tutoriel : comme je vous l’avais dit plus haut une sortie permet d’alimenter des périphériques externes, comme un moteur, une DEL… Cependant il arrive très souvent qu’on ait besoin de couper l’alimentation de ces périphériques pour faire arrêter un moteur ou éteindre la DEL en suivant mon exemple. Avant d’utiliser vos sortis après les avoir déclarés il va falloir indiquer à notre chère carte bleue si cette sortie doit être alimentée ou non avec la fonction suivante :

digitalWrite(). Commencez par y indiquer le nom de votre variable j’obtiens alors ça : digitalWrite(ma_sortie) puis mettez HIGH si vous voulez que la sortie envoie du courant dans le cas inverse mettez LOW.

Voilà donc le code pour envoyer du courant positif via notre sortie :

digitalWrite(ma_sortie, HIGH) ;

et le code pour envoyer du courant négatif:

digitalWrite(ma_sortie, LOW);

Vous pourrez remettre ces lignes de codes plus tard dans le programme afin de changer « l’état » de ces sortie bien sûr; comme vous pouvez changer une entrée en sortie ou l’inverse.

Se servir d’une entrée

 

Avec une entrée on peut capter une tension et donc pouvoir interagir avec. Par exemple, quand vous appuyez sur un bouton celui-ci envoie du courant dans l’entrée de votre Arduino.

Il faut utiliser la fonction digitalRead() , il faut préciser entre parenthèse le pin voulu. Pour vous montrer un exemple d’utilisation des entrées et sorties très concret, je vous propose ce petit programme qui allume une DEL relié sur la sortie d’une carte Arduino qui reste allumé tant qu’on presse un bouton relié en entrée.

Pourquoi la DEL reste allumée en permanence alors que le programme tourne en boucle ? Et bien une fois que l’on a réglé la tension à un pin elle reste effective tant que nous ne redéfinissions pas une nouvelle valeur.
int ma_sortie = 13;//on déclare notre sortie
int mon_entree = 12;     //on déclare l'entrée
void setup()
{

pinMode(mon_entree, INPUT); // on déclare notre entrée

}
void loop()
{

if(digitalRead(mon_entree) == HIGH) // on regarde si notre entrée capte du courant

{ digitalWrite(ma_sortie, HIGH); }   //on allume la DEL

else//sinon

{ digitalWrite(ma_sortie, LOW); }   // on éteint la DEL

}

TP: Faire clignoter une led

Jusque là beaucoup de théorie mais on va mettre tout ça en pratique. On va devoir utiliser le temps dans notre programme, ne vous inquiétez pas c’est assez simple. Il faut utiliser la fonction delay() qui va faire attendre x milliseconds l’Arduino avant de continuer à exécuter le programme. Vous allez donc rédiger un programme qui va allumer la DEL pendant une demi seconde puis l’éteindre pendant une demi-seconde, la rallumer pendant… tout ça en boucle.

Dans ce tutoriel vous avez tout e qu’il faut pour pouvoir le faire, n’oubliez pas les petits « ; » et tout devrais bien ce passer 😀

Voilà la correction, mais essayez vraiment de faire votre programme sans la regarder, si vous avez du mal relisez attentivement les premiers chapitres qu’on a vus. Rappelez-vous de ce que je vous ai dit à propos de la maison sans bonnes fondation ; que devient-elle? Une mauvaise maison. Vous voulez devenir mauvais Arduiniste ? Non, dans ce cas essayez de ne pas regarder cette correction.

A vous de jouer 😉

int led1 = 2;
int temps = 500;
void setup()
 {
 pinMode(led1 , OUTPUT);
 }
void loop()
 {
 digitalWrite(led1 , HIGH);
 delay(temps);
 digitalWrite(led1 , LOW);
 delay(temps);
 }

La suite des tutoriels