Introduction
Après avoir mis un programme sur votre carte et si vous souhaitez interagir avec le monde extérieur grâce à l’Arduino, il vous faudra utiliser les entrées de l’Arduino.
Votre Arduino a plusieurs types d’entrées :
– Il y a les entrées numériques, qui détectent tout signal électrique (de type « tout ou rien ») renvoyé par un capteur, comme un bouton.
– Votre Arduino possède aussi des entrées analogiques qui sont capable de lire la valeur d’une tension renvoyée par un capteur, comme un potentiomètre, un capteur d’humidité, ou de température.
L’Arduino est aussi capable de lire est d’interpréter des informations échangés via le port série mais nous verrons cela dans un prochain tutoriel.
Configuration
Les entrées numériques de l’Arduino UNO sont au nombre de 14. Leur nom va de D0 à D13, mais les deux premières (D0 et D1, aussi appelées Tx et Rx) peuvent aussi être utilisés lors de la communication série avec un ordinateur, on préfère donc les réserver pour cette utilisation.
Si vous utilisez une carte Arduino méga, vous pourrez trouver 54 ports numériques !
Les entrées analogiques sont moins nombreuses, elles sont au nombre de 6 allant de A0 à A5.
Pour déclarer le « pin » (entrées ou sorties de l’Arduino) que vous souhaitez utiliser, il faut écrire une ligne de code comme celle-ci au début de votre programme :
const int bouton = 13 ;
Ici, on déclare un capteur (ici un bouton) au port D13 avec l’aide de « const int » dont j’expliquerai l’utilité. Vous pouvez utiliser le nom que vous voulez, si vous voulez vous y faire parmi vos capteurs ou si vous voulez abréger.
Pour déclarer une entrée analogique, vous devez aussi mettre seulement le chiffre, et ne pas mettre le « A » devant le nom du port. Puisque par la suite son utilisation sera analogique, l’Arduino comprendra que c’est une entrée analogique.
Comme toutes les entrées sont aussi des sorties, il faut déclarer à l’Arduino l’utilisation que l’on veut en faire. Pour un pin digital (D0 à D13), il faudra clairement dire à l’Arduino que nous utiliserons tel pin en entrée. On spécifie cela dans la Void setup. Pour les pins analogiques (A0 à A5), cette spécification est inutile.
Voici le code à utiliser :
void setup ()
{
pinMode(bouton, Input)
}
Ce petit script rajoute une deuxième information à notre « pin » bouton, il spécifie que ce sera une entrée.
Utilisation
Pour vérifier l’état de votre entrée numérique, vous devez utiliser cette fonction :
digitalRead(bouton) ;
Ici, digitalRead() vaut HIGH si le capteur renvoie un signal, ou LOW dans le cas contraire. Si vous souhaitez vérifier sa valeur par la suite, elle vaudra soit HIGH, soit LOW.
Ici, « bouton » correspond à un pin défini précédemment
Pour vérifier la valeur du signal d’une entrée analogique, il faudra utiliser cette fonction :
analogRead(potentio) ;
analogRead() vaut, quand à lui, 0 si le courant est à 0 volts, et 1023 si le courant est à 5V, soit 1024 possibilités.
Un courant de 4.9 mV équivaudra donc à 1.
Ici, « potentio » correspond à un pin défini précédemment
La manière la plus pratique d’utiliser ces deux fonctions est de donner le numéro de pin à une variable, même si elles sont aussi utilisables de la manière suivante :
digitalRead(4) ; //Lit la valeur du pin D4
analogRead(4) ; //Lit la valeur du pin A4
Exemples
Entrée numérique
Comme vous l’aurez deviné, nous allons vous montrer comment utiliser le capteur numérique basique, le bouton.
Le programme que nous allons présenter allumera une LED branchée sur le pin 13 lorsque le bouton branché au pin 2 sera actionné. Le montage est le suivant :
La résitance a une importance capitale dans ce montage. Sa valeur est de 10 kohms et elle permet d’éviter le court-circuit lors de l’appuis sur le bouton.
Nous allons utiliser le script d’exemple proposé par l’IDE Arduino.
Nous avons pris soin de commenter ce programme en français pour que sa compréhension vous soit plus aisée.
Une LED est utilisée, elle fonctionne sur un pin configuré en sortie. Veuillez-vous référez au tutoriel sur les sorties pour mieux comprendre leur fonctionnement.
const int buttonPin = 2; //Initialisation du bouton en pin 2
const int ledPin = 13; //Initialisation de la Led en pin 13.
int buttonState = 0; //buttonState sera la variable qui contiendra l'état du bouton
void setup() {
pinMode(ledPin, OUTPUT); //Initialisation de la LED en sortie
pinMode(buttonPin, INPUT); //Et du bouton en entrée
}
void loop(){
//on dit que buttonState vaut HIGH si il est enclenché à ce moment, et LOW dans le cas contraire
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) { //Si buttonState a pris la valeur HIGH
digitalWrite(ledPin, HIGH); //On allume la LED
}
else { //Sinon
digitalWrite(ledPin, LOW); //On éteint la LED
}
}
Entrée analogique
L’exemple basique de capteur analogique est le potentiomètre. Sur le programme que nous allons vous présenter, la LED s’allumera lorsque votre potentiomètre sera au-dessus d’un certain seuil, qui varie selon les potentiomètres.
Les branchements sont les suivants :
Voici le script que nous utiliserons :
const int potentio = 0; //initialisation du potentiomètre sur A0
const int LED = 13; //et de la led sur D13
int potentioState;
void setup()
{
pinMode(LED, OUTPUT) ; //LED est une sortie
}
void loop ()
{
potentioState = analogRead(potentio) ;
if(potentioState > 512) { //Si potentioState > 512
digitalWrite(LED, HIGH); //On allume la led
}
else { //Sinon
digitalWrite(LED, LOW); //On l’éteint
}
}
Merci d’avoir lu ce tutoriel, n’hésitez pas à poser vos questions en commentaire ou sur notre forum. Partagez ce tutoriel via les boutons situés en dessous.
Ce tutoriel sera ajouté dans la catégorie « entrées » des tutoriels Arduino.
Bonjour,
99 % des tutos, utilisent une résistance pour connecter un bouton. Pas besoin, le microcontrôleur possède une résistance de pull-up.
Pour l’activer : pinMode(2,INPUT_PULLUP);
je mets le code « potentio » une fois les erreurs rectifiées…
quand on veut faire des tutos, la moindre des choses est de vérifier ses codes, ça fait plus sérieux !
//—————————————————————//
const int potentio = 0; //initialisation du potentiomètre sur A0
const int LED = 13; //et de la led sur D13
int potentioState;
void setup()
{
pinMode(LED, OUTPUT) ; //LED est une sortie
}
void loop ()
{
potentioState = analogRead(potentio) ;
if(potentioState > 512) { //Si potentioState > 512
digitalWrite(LED, HIGH); //On allume la led
}
else { //Sinon
digitalWrite(LED, LOW); //On l’éteint
}
}
//—————————————————————-//
Bonjour,
En effet, c’est lors du passage de word vers l’éditeur du site que certaines majuscules ont disparu. C’est souvent le cas aussi avec la ponctuation.
En tout les cas, vous avez raison, nous ferons plus attention à l’avenir car les scripts que nous proposons doivent être accessibles et utilisables sans modifications.
Je m’empresse de corriger le script dans l’article.
Merci de votre remarque et passez de bonnes fêtes.
A bientôt
en me relisant, je me rends compte que j’ai été sévère, je n’avais pas du tout pour intention de blesser ou vexer qui que ce soit.
Si tel était le cas, veuillez accepter mes excuses.
Bonne continuation et bonnes fêtes de fin d’année également
Bonjour,
Il manque la résistance série de la LED.
Tel que câblée elle ne va pas durer longtemps !