Arduino cours 1, led et boutons

4869

Aujourd’hui premier tutoriel sur les bases d’arduino avec comme projet final réaliser un feu tricolore .

Pour cette première partie nous allons juste apprendre le fonctionnement d’un arduino avec des leds et des boutons .

Il vous faut 2 leds , 4 résistances dont 2 adaptées au led et 2 boutons.

Avant d’attaquer le premier tuto on va revenir sur les composants nécessaires.

Les résistances , elles servent à limiter le courant et le plus souvent à protéger des composants, ici nos leds.

Et ses résistances elles ont des valeurs qui sont exprimés en Ohm et une puissance en Watt pour la dissipation de ce courant en chaleur.

resistance2

Les leds , ici on va utiliser des leds pour signaler quelque chose car il en existe d’autre types. Comme pour éclairer, avec les leds de puissance , des leds infra rouge comme celle des télécommandes classiques et même des leds ultraviolet.

Ce qu’il faut savoir c’est que les leds ont un sens , un coté positif , l’anode et un coté négatif la cathode.

Vous pouvez l’identifier rapidement soit avec la longueur des pattes de la led , la plus longue est le positif , soit en regardant la led , le plus petit morceau métallique est le positif(sauf exception).

led2

Il faut aussi savoir que les leds ont des caractéristiques comme une tension de seuil et une intensité nécessaire au fonctionnement.

Pour faire fonctionner notre led ici on va avoir besoin d’une résistance mais pour cela il faut calculer la valeur nécessaire de la résistance pour protéger notre led suffisamment .

Nous avons récupéré les caractéristiques techniques de notre led et nous allons calculer la valeur nécessaire au bon fonctionnement.

Ici notre led a une tension de fonctionnement (seuil) de 2.2V et le courant nécessaire est de 20mA

Il faut que l’on se base sur 2 lois

– la loi d’ohm Ur = R x I

– la loi des Mailles Ualim = Ur + Uled

Ici on replace Ur dans notre loi des mailles ce qui nous donne Ualim = (R x I) + Uled

Dans ce résultat on veut connaître la valeur de R notre résistance donc en transposant tout ça on obtient R= ( Ualim – Uled ) / I

Ualim est égal au voltage avec lequel on alimente la led , ici on utilise le 5V d’arduino

Uled est égal a 2,2V la tension de seuil de sa caractéristique

Et I l’intensité nécessaire au fonctionnement de la led I=0,02A ( 20mA )

Ce qui nous donne

5 V
2,2 V
0,02 A
140Ω calculé

Mais dans la serie E24 ( tolerance de 5%  ) la valeur supérieur la plus proche que l’on va choisir est 150 ohm .

Maintenant que l’on a calculé la valeur de notre résistance on doit vérifier la puissance nécessaire a la résistance pour ne pas griller.

On calcule la puissance dissipé . Encore un calcul P = R x I²

En transposant avec la loi d’ohm cela donne P= U² / R

P= (Ualim – ULed )² / R

Ce qui nous donne

5 V
2,2 V
150 Ω
0,052 W

Donc une résistance 1/4 de Watt ( 0,25 W ) est largement dimensionnée

( la puissance des résistances doit être largement supérieure pour éviter de que votre résistance ne chauffe trop et brûle , surtout si un jour vous souhaitez utiliser des led de puissance, sachez qu’il existe d’autres solutions )

Je sais c’est la partie la moins fun du tuto mais cela va être utile. !

Je ne vous présente pas les boutons c’est simple on appuie et ça laisse passer le courant, par contre ici il faudra utiliser une résistance de rappel appelé pull up ou pull down suivant le branchement effectué. Voici le schéma rapide des 2 options , d’un coté on va détecter un état haut quand on appui sur le bouton , de l’autre quand on appuiera le bouton on détectera un état bas (on peut se passer de la résistance de rappel et utiliser celle de l’arduino mais ici je préfère utiliser mes propres résistances).
pullup
Pull-up dans le code on détectera un état bas. Par défaut l’arduino va détecter un état haut ( 5V )
pulldown
Pull-down dans le code on détectera un état haut. Par défaut l’arduino détectera un état bas ( 0V ).

 

const int pinLed1a=10;
const int pinLed2a=7;
const int pinBouton1=4;
const int pinBouton2=3;

void setup() {  
 Serial.begin(9600);

 pinMode(pinLed1a,OUTPUT);
 pinMode(pinLed2a,OUTPUT);

 pinMode(pinBouton1,INPUT);
 pinMode(pinBouton2,INPUT);

 digitalWrite(pinLed1a,HIGH);
}

void loop() {
// bouton 1
  if(digitalRead(pinBouton1)== HIGH){
    digitalWrite(pinLed1a,HIGH);
    digitalWrite(pinLed2a,LOW);

     Serial.print("Feu 1 allume");
     Serial.print("\r\n");
  }

// bouton 2
// a toi de compléter le code :-)

}

Maintenant que le montage est bon on passe au code.

Ce que je fais en premier c’est de définir les numéros de pin utilisé par arduino , la zone 1 sert à définir des variables que vous allez pouvoir utiliser dans votre programme, ainsi qu’appeler des librairies mais on verra cela dans un autre tutoriel.

Je commence par les led , les numéros de nos pin sont des entiers et de plus des constantes (ne change pas)

Je le nomme facilement pour m’en rappeler

const int pinLed1a=10;

Je défini aussi ma led 2

const int pinLed2a=7;

Les boutons aussi même principe

const int pinBouton1=4;

const int pinBouton2=3;

La zone 2 zone setup , est la zone d’initialisation. Ici on va définir le mode des pin de notre arduino ( on peut aussi exécuter du code) c’est une zone dédiée a l’initialisation .

On définit les pin avec l’instruction pinMode() , il faut faire attention à la majuscule sur le M.

Dans ma parenthese en premier le numéro du pin que l’on a définit ,puis le type de pin que l’on choisi donc ici notre led1 est branchée sur le pin 10 et est en mode OUTPUT ce qui veut dire que l’on envoie des informations par cette broche donc on écrit :

pinMode(pinLed1a,OUTPUT);

On aurait put ecrire pinMode(10,OUTPUT); mais comme on a définit la valeur 10 dans la constante pinLed1a on récupère cette information et on pourra l’utiliser plus tard .

Il est plus facile de ce rappeler d’un nom de variable que de se rappeler d’un numéro surtout quand vous en avec beaucoup.

On fait de même avec la led 2 pinMode(pinLed2a,OUTPUT);

Passons aux boutons, même principe pour le numéro de pin mais ici le mode est INPUT ce qui veut dire que l’on récupère de l’information par cette broche donc on écrit :

pinMode(pinBouton1,INPUT);

pinMode(pinBouton2,INPUT);

Et comme dans mon programme a l’initialisation je souhaite allumer la led 1 j’inscris l’instruction

digitalWrite(pinLed1a,HIGH); ce qui correspond a dire met un état haut (5V) sur le pin pinLed1a , cela peut s’écrire digitalWrite(10,HIGH); comme précédemment .

Avant de terminer avec la zone 2 je vais rajouter l’instruction Serial.begin(9600); qui va vous permettre de récupérer des informations de l’arduino par le port serie (USB) et ainsi de comprendre ce qui se passe dans l’arduino et éventuellement déboguer votre programme ( très utile quand votre programme devient complexe )

On en a fini avec la zone 2 de setup, passons a la zone 3 .

Zone de loop , notre arduino va boucler indéfiniment à l’intérieur de la boucle.

Notre programme doit lire l’état des boutons et appliquer un changement si la condition est vraie.

Pour lire l’état d’une pin on utilise l’instruction digitalRead(pinBouton1) et comme on veut contrôler si cet état est à l’état haut (HIGH) on écrira:

if(digitalRead(pinBouton1) == HIGH){          }

IF peut être traduit par SI la broche du bouton 1 est égal a l’état haut alors on exécute tout ce qu’il y a dans les { }

A l’intérieur de notre condition on doit allumer la led 1 ( HIGH ) et éteindre la led 2 (LOW) ce qui nous donne

digitalWrite(pinLed1a,HIGH);

digitalWrite(pinLed2a,LOW);

Je rajoute quelques instructions pour écrire sur le port série des informations, ici j’écris que j’allume la led 1, et je reviens a la ligne. J’utilise l’instruction Serial pour utiliser le port serie et print pour écrire quelque chose car on peut aussi en lire ( read ).J’écris aussi “\r\n” pour revenir a la ligne.

Serial.print(“Feu 1 allume”);

Serial.print(“\r\n”);

On en a fini avec l’instruction pour le bouton 1, je vous laisse écrire les lignes de code pour le bouton 2 cela va vous permettre de savoir si vous avez compris le fonctionnement.

Télécharger le code arduino partiel

Pour la zone 4 on le verra plus tard mais nous allons pouvoir créer des fonctions que nous allons pouvoir appeler dans la zone 2 ou 3.

On en a fini avec ce premier tutoriel, dans le prochain nous allons parler des timer et du fait de rajouter des temps d’arrêt .

Allé je suis sympa je vous donne la correction télécharger.

J’allais oublier vous pouvez regarder le moniteur série dans votre programme arduino pour visualiser ce qu’il s’y passe.

N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne, si vous ne comprenez pas certaines parties du tutoriel, de me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel ,à partager les projets que vous aimeriez créer etc…

Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.

Merci les RetroGeeker et RetroGeekeuse