Vous êtes sur la page 1sur 11

Atelier Electronique

TP ARDUINO N°0

Objectif : Ce TP a pour objectif de programmer une luminosité variée d'une LED.

A. Clignoter une LED


Le programme permet de faire clignoter une LED sur une broche d'une carte Arduino. : La
LED va s'allumer puis s'éteindre, puis s'allumer, puis d'éteindre, puis s'allumer.... : la LED
clignote.

Travail demandé :
1. Connecter sur la broche 2 (configurée en sortie) une LED et sa résistance (270 Ohms)
en série connectée au 0V

2. Programmer la carte Arduino avec les étapes décrites par la suite puis simuler le
montage indiqué sur ISIS

Etapes de programmation :
Le programme simple comprend :

 un entête déclaratif
 une partie « configuration » qui ne sera exécutée qu'une fois (fonction setup( ))

TP ARDUINO
Page 1
Atelier Electronique

 une partie constituée d'une boucle sans fin que le programme répètera à l'infini
(fonction loop( )) : c'est le cœur du programme.

Au niveau de la partie déclarative : Déclaration des constantes de broches

 Déclaration des constantes pour les broches utilisées dans le programme : on appelle
LED la broche utilisée avec la LED.

const int LED=2; //declaration constante de broche

Au niveau de la fonction d'initialisation setup ( ) :

Configuration des broches utilisées :

 Configuration des broches en sortie : on configure en sortie la broche utilisée avec la


LED.

pinMode(LED, OUTPUT); //met la broche en sortie

Au niveau de la boucle principale, la fonction loop ( ) :

 On commence par allumer la LED en mettant la broche au niveau HAUT (soit 5V)
grâce à la commande digitalWrite (broche, etat)
 Ensuite, on réalise une pause d'une demi-seconde (soit 500 millisecondes) grâce à
l'instruction delay(duree_ms)
 Puis on éteint la LED en mettant la broche au niveau BAS (soit 0V)
 A nouveau, on réalise une pause d'une demi-seconde.

digitalWrite(LED,HIGH); // met la broche au niveau haut (5V) – allume la LED

delay(500); // pause de 500 millisecondes (ms)

digitalWrite(LED,LOW); // met la broche au niveau bas (0V) – éteint la LED

delay(500); // pause de 500ms

[Obtenir le Code]

TP ARDUINO
Page 2
Atelier Electronique

 Le programme recommence en boucle les instructions de la fonction loop( ). Au final,


la LED va s'allumer puis s'éteindre, puis s'allumer, puis d'éteindre, puis s'allumer.... :
la LED clignote.

B. Varier la luminosité d'une LED

Cette partie montre comment programmer une variation de la valeur moyenne de la tension
qui alimente un actionneur, dans notre cas c’est une LED.
Il faut établir un programme qui permet de faire varier la luminosité d'une LED sur une
broche d'une carte Arduino. il exploite l'instruction analogWrite(broche, largeur) qui permet
de générer une impulsion PWM (Pulse Width Modulation en anglais ou Modulation de
Largeur d'Impulsion (MLI) en français). L'instruction analogWrite() n'est disponible que sur
les broches 3, 5,6,9,10,11.
Principe :
Une impulsion PWM est une impulsion (ou onde) carrée, c'est à dire que le niveau de l'onde
est soit HAUT soit BAS. Cette impulsion se répète dans le temps de façon continue.

Une telle onde, comme toute onde est caractérisée par sa période, c'est à dire la durée entre 2
impulsions. La définition d'une onde PWM (Pulse Width Modulation en anglais ou
Modulation de Largeur d'Impulsion (MLI) en français) se fait en modifiant la largeur du
niveau HAUT par rapport à la durée de la période : la largeur du niveau HAUT est appelée «
duty cycle ».

TP ARDUINO
Page 3
Atelier Electronique

Avec l'instruction analogWrite(broche, largeur), on va pouvoir générer une impulsion PWM


avec une largeur de « duty cycle » voulue :
 si valeur = 0, le duty cycle sera de 0% de la période
 si valeur = 255, le duty cycle sera de 100% de la période
 si valeur = 127, le duty cycle sera de 50% de la période
 si valeur = n, le duty cycle sera de (n/255)*100% de la période.
IMPORTANT : L'instruction analogWrite () n'est disponible que sur les broches 3, 5, 6, 9,
10,11 (notée PWM sur le brochage ci-dessous).
Avec l'instruction analogWrite(LED, largeur), on va pouvoir générer une impulsion PWM
avec une largeur de « duty cycle » voulue :
 si i = 0, le duty cycle sera de 0% de la période =>composante continue=0V
 si i = 127, le duty cycle sera de 50% de la période => composante
continue=2.5V
 si i = 254 le duty cycle sera de( 254/255).100% de la période => composante
continue=5*(254/255)V
 si i = 255, le duty cycle sera de 100% de la période => composante
continue=5V

Travail demandé
1. Connecter sur la broche 3 (configurée en sortie) une LED et sa résistance (270 Ohms)
en série connectée au 0V
2. Programmer la carte Arduino en faisant varier la luminosité de la LED de façon
continue, augmentant puis diminuant de façon répétée selon les étapes décrites par la
suite.

TP ARDUINO
Page 4
Atelier Electronique

Etapes de programmation :

Au niveau de la partie déclarative :

Déclaration des constantes de broches

 Déclaration des constantes pour les broches utilisées dans le programme :

const int LED=3; //declaration constante de broche

Déclaration des variables globales

 Déclaration des variables globales du programme :

int i=0; // variable de boucle

Au niveau de la fonction d'initialisation setup ( ) :

Configuration des broches utilisées :

 Configuration des broches en sortie :

pinMode(LED, OUTPUT); //met la broche en sortie

Au niveau de la boucle principale, la fonction loop ( ) :

 On réalise une première boucle qui fait progressivement augmenter la largeur de


l'impulsion sur la broche utilisée : la luminosité de la LED augmente.

for (i=0; i<=255;i++){ // boucle for compte de 0 à 255

analogWrite(LED,i); // génère une impulsion sur la broche de largeur i = la


luminosité augmente

delay(10); // pause de 10 ms entre chaque "cran"

} // fin de la boucle for

TP ARDUINO
Page 5
Atelier Electronique

 On réalise une seconde boucle qui fait diminuer progressivement la largeur de


l'impulsion : la luminosité de la LED diminue.

for (i=0; i<=255;i++){ // boucle for compte de 0 à 255

analogWrite(LED,255-i); // génère une impulsion sur la broche de largeur 255-i


// = la luminosité baisse

delay(10); // pause de 10 ms entre chaque "cran"

} // fin de la boucle for

 La luminosité de la LED va ainsi varier de façon continue, augmentant puis diminuant


de façon répétée.

C. L'appui sur un BP allume une LED

1. Connecter sur la broche 2 (configurée en entrée) un BP connecté à la masse (0V)


2. Connecter sur la broche 3 (configurée en sortie) une LED en série avec sa résistance
connectée au 0V

Etapes de programmation :

Au niveau de la partie déclarative :

Déclaration de constantes utiles

 On déclare les constantes utiles dans le programme :


o Déclaration des constantes utiles pour l'utilisation des boutons poussoirs :

const int APPUI=0; // constante état du BP - appui sur niveau bas

TP ARDUINO
Page 6
Atelier Electronique

const int PAS_APPUI=1; // constante état du BP - relâché sur niveau haut

Déclaration des constantes de broches

 Déclaration des constantes pour les broches utilisées dans le programme :

const int BP=2; //declaration constante de broche


const int LED=3; //declaration constante de broche

Déclaration des variables globales

 Déclaration des variables globales du programme :Déclaration d'une variable globale


utile pour l'utilisation des boutons poussoirs :

int ETAT_BP=0; // variable témoin de l'état du BP

Au niveau de la fonction d'initialisation setup( ) :

Configuration des broches utilisées :

 Configuration des broches en sortie : on met en sortie la broche utilisée avec la LED

pinMode(LED, OUTPUT); //met la broche en sortie

 Configuration des broches en entrée : on met en entrée la broche utilisée avec le


bouton poussoir

pinMode(BP, INPUT); //met la broche en entree

 Activation du rappel au + interne des broches en entrée si nécessaire : on active le


rappel au plus interne pour la broche connectée au BP. Ceci est indispensable car
lorsque le BP n'est pas appuyé, la broche n'est connectée à "rien"... Le rappel au plus
permet de fixer sa valeur à +5V en l'absence d'appui du BP.

digitalWrite(BP, HIGH) ; // activation du pullup de la broche en entrée

Au niveau de la boucle principale, la fonction loop ( ) :

TP ARDUINO
Page 7
Atelier Electronique

 On commence par lire l'état du bouton poussoir à l'aide de l'instruction


digitalRead(broche) et le résultat est mis dans la variable prévue pour mémoriser l'état
du bouton poussoir.

ETAT_BP=digitalRead(BP); // lit l'état du BP et met la valeur 0/1 dans la variable

 Ensuite, on réalise un test de la valeur de cette variable qui reflète l'état du bouton
poussoir :

 si le bouton est appuyé (càd si la variable = 0 car l'appui sur le BP connecte la


broche au 0V), alors on allume la LED.
 Sinon, la LED est éteinte.

 if (ETAT_BP==APPUI){ // si l'état du BP est appuyé (càd si variable état BP =


0)
 // Attention à bien utiliser == et non =

 digitalWrite(LED,1); // allume la LED

 }

 else { // sinon (càd si variable état bp=1)

 digitalWrite(LED,0); // éteint la LED
 }

 // remarque : on aurait pu écrire ceci sur une seule ligne selon :
 // if (ETAT_BP==APPUI)digitalWrite(LED,1); else digitalWrite(LED,0);

D. Feux de signalisation
Le but consiste de réaliser des feux de signalisation selon la séquence des LEDs présentée par
la figure suivante :

TP ARDUINO
Page 8
Atelier Electronique

Instructions de montage

 Connecter sur la broche 2 (configurée en sortie) une LED rouge connectée en série
avec sa résistance au 0V
 Connecter sur la broche 3 (configurée en sortie) une LED jaune connectée en série
avec sa résistance au 0V
 Connecter sur la broche 4 (configurée en sortie) une LED verte connectée en série
avec sa résistance au 0V
 Connecter sur la broche 5 (configurée en sortie) une LED rouge connectée en série
avec sa résistance au 0V
 Connecter sur la broche 6 (configurée en sortie) une LED jaune connectée en série
avec sa résistance au 0V
 Connecter sur la broche 7 (configurée en sortie) une LED verte connectée en série
avec sa résistance au 0V

TP ARDUINO
Page 9
Atelier Electronique

Vous allez mettre un délai de 3 secondes entre le feu vert et le feu orange. Un délai de 1
seconde entre le feu orange et le feu rouge. Et un délai de 3 secondes entre le feu rouge et le
feu vert.

Travail demandé :

1. Commencez par faire l’organigramme puis vous devez établir le programme complet
2. Vérifier votre programme par simulation sur ISIS.

TP ARDUINO
Page 10
Atelier Electronique

TP ARDUINO
Page 11

Vous aimerez peut-être aussi