EdE SI Introduction au système Arduino Arduino
Activité pratique 1 / 1
PRESENTATION
PROGRAMMATION DE L’ARDUINO
UTILISER LES SORTIES LOGIQUES
FAIRE CLIGNOTER UNE DEL
MODIDFICATION : FAIRE CLIGNOTER PLUSIEURS DEL
MODIDFICATION : AFFICHER UN CHIFFRE
UTILISER LES SORTIES ANALOGIQUES
FAIRE VARIER L’INTENSITE LUMINEUSE
MODIFICATION : CREER 16 MILLIONS DE COULEURS
UTILISER LES ENTREES LOGIQUES
COMMANDER PAR BP
UTILISER LES ENTREES ANALOGIQUES
LIRE UN POTENTIOMETRE, UNE TEMPERATURE, UNE LUMINOSITE
EdE SI Introduction au système Arduino Arduino
Activité pratique 1 / 4
INTRODUCTION
Qu'est-ce qu'Arduino?
Le système Arduino est un outil pour fabriquer de petits ordinateurs qui peuvent capter et contrôler
davantage de choses du monde matériel que votre ordinateur de bureau. C'est une plateforme open-
source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (µC de la
famille AVR), et un logiciel, véritable environnement de développement intégré EDI, pour écrire,
compiler et transférer le programme vers la carte à microcontrôleur.
Arduino peut être utilisé pour développer des objets interactifs (les robots en sont un bon exemple),
pouvant recevoir des entrées d'une grande variété d'interrupteurs ou de capteurs, et pouvant contrôler
une grande variété de lumières, moteurs ou toutes autres sorties matérielles.
Environnement de développement intégré
officiel de l’Arduino. Nous l’utilisons
indirectement.
Carte Arduino à microcontrôleur ATMEGA 328P
(µC développé par AVR). Il existe d’autres formats,
mais c’est celui-ci que nous utilisons
Pourquoi Arduino ?
Il y a de nombreux microcontrôleurs et de nombreuses plateformes basées sur des microcontrôleurs
disponibles pour l'électronique programmée et qui offrent des fonctionnalités comparables. Cependant
Arduino offre plusieurs avantages : pas cher (moins de 25 €), multi-plateforme (Windows, Macintosh
et Linux), environnement de programmation clair et simple (nous allons encore plus le simplifier),
logiciel Open Source et extensible. De ce fait tout élève intéressé peut à moindre coût explorer les
possibilités des microcontrôleurs chez lui.
EdE SI Introduction au système Arduino Arduino
Activité pratique 2 / 4
COMMENT CELA MARCHE ?
Chaîne de développement : Ardublock IDE Arduino langage machine µC
1 - Programme écrit avec
ardublock, un éditeur de
programmation graphique pour
Arduino.
2 - Conversion en langage évolué Arduino (version simplifiée
des langages C & C++) réalisé automatiquement par ardublock.
3 - L’IDE Arduino convertit dans un
premier temps ce programme dans le
langage générique C/C++
traditionnellement utilisé pour
programmer les microcontrôleurs.
4 - Puis le compile en une ou plusieurs phases en un
langage assembleur et/ou machine (langage binaire) :
Un compilateur est un programme informatique qui
traduit le langage source ici en C en un programme
exécutable le plus souvent un langage d'assemblage ou
un langage machine.
EdE SI Introduction au système Arduino Arduino
Activité pratique 3 / 4
La carte à µC
Un microcontrôleur (en notation abrégée µC) est un circuit intégré qui rassemble les éléments
essentiels d'un ordinateur : processeur, mémoires (mémoire morte pour le programme, mémoire vive
pour les données), unités périphériques et interfaces d'entrées-sorties. Les microcontrôleurs se
caractérisent par un plus haut degré d'intégration, une plus faible consommation électrique, une vitesse
de fonctionnement plus faible (de quelques mégahertz jusqu'à plus d'un gigahertz) et un coût réduit par
rapport aux microprocesseurs polyvalents utilisés dans les ordinateurs personnels.
La carte Arduino dispose en plus du µC :
de 14 broches numériques d'entrées/sorties (dont 6 peuvent être utilisées en sorties PWM
(largeur d'impulsion modulée)),
de 6 entrées analogiques (utilisables en broches entrées/sorties numériques),
d'un quartz 16Mhz,
d'une connexion USB,
d'un connecteur d'alimentation jack,
et d'un bouton de réinitialisation (reset).
La carte Arduino contient tout ce qui est nécessaire pour le fonctionnement du microcontrôleur; Pour
pouvoir l'utiliser, il suffit simplement de la connecter à un ordinateur à l'aide d'un câble USB (ou de
l'alimenter avec un adaptateur secteur ou une pile, mais ceci n'est pas indispensable, l'alimentation étant
fournie par le port USB). Et de télécharger dans sa mémoire un programme machine exclusivement
binaire. Programme que le µC exécute tant qu’il reste sous tension.
EdE SI Introduction au système Arduino Arduino
Activité pratique 4 / 4
DECOUVERTE
Plaquette d’essais
Vous disposez d’une plaquette de test à base d’Arduino et équipée d’éléments d’entrée / sortie :
Entrées :
o 2 boutons poussoirs (un rouge et un noir) ;
o 1 potentiomètre ;
o 1 capteur de luminosité ;
o 1 capteur de température ;
Sorties :
o 4 DEL rouge (DEL = Diode Electro-Luminescente) ;
o 1 DEL tri couleur RGB ;
o 1 buzzer piezo ;
o 1 afficheur à 7 segments.
Mise en place
Relier l’Arduino à l’ordinateur par un câble USB.
Lancer l’EDI d’Arduino depuis l’icône du bureau .
Dans la rubrique Outil de l’EDI d’Arduino, choisir « Ardublock ».
RETOUR
EdE SI Introduction au système Arduino Arduino
Activité de programmation 1 / 1
1ER
PROGRAMME : FAIRE CLIGNOTER UNE DEL
Sortie utilisée : 13, elle est directement reliée à une led de la carte Arduino.
Montage afférent :
« Programme » : produire sous Ardublock ce programme graphique par glissé-déposé des icones prises
dans les menus :
Loop / Loop cela génère une boucle sans fin
Pin / write 0|1 choisir la valeur 13, la forcer au niveau HAUT (HIGH)
Time / Delay [ms] fixer à 1000 millisecondes
Pins / write 0|1 choisir la broche 13, la forcer au niveau BAS (LOW)
Time / Delay [ms] fixer à 1000 millisecondes
Il faut obtenir dans Ardublock
Cliquer sur le bouton UPLOAD
le programme est compilé en
langage arduino et apparait
dans l’EDI d’Arduino
Puis il est recompilé en
langage machine et est
téléversé dans la mémoire du
µC de la carte Arduino.
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
Explication :
1. Le programme met la patte 13 en sortie haute (+5 V)
2. Il attend 1000 ms = 1 s
3. Le programme met la patte 13 en sortie basse (0 V)
4. Il attend 1000 ms = 1 s
5. Et il recommence indéfiniment (boucle infinie = void loop()) …
RETOUR
EdE SI Introduction au système Arduino Arduino
Activité de programmation 1 / 3
MODIDFICATIONS DU 1ER
PROGRAMME
FAIRE CLIGNOTER PLUSIEURS DEL
Sorties utilisées : 4, 5, 6, 7, 8.
Montage afférent :
Programme « Modification n°1 » : Reprendre le programme de la LED 13. Changer seulement
le numéro de la broche active #, prendre 4, 5, 6, 7 ou 8.
Il faut obtenir dans Ardublock
UPLOAD
Donne dans l’EDI Arduino void setup()
{
pinMode(4, OUTPUT);
}
void loop()
{
digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);
delay(1000);
}
SAVE AS ou SAVE
permettent de sauvegarder
le programme graphique
dans votre répertoire
personnel.
LOAD permet de charger
un ancien programme.
Il est aussi possible de
changer le numéro de
broche directement dans
l’EDI puis de compiler et
téléverser le résultat dans
l’arduino avec le bouton
.
EdE SI Introduction au système Arduino Arduino
Activité de programmation 2 / 3
EdE SI Introduction au système Arduino Arduino
Activité de programmation 3 / 3
Explication :
Les sorties 4, 5, 6, 7, 8 sont ici utilisées en mode
logique (digital en anglais) ou « Tout Ou Rien ».
Si la patte 4 est au potentiel HAUT (+5 V), alors un
courant s’établit entre la patte et la masse (GND =
ground = 0 V) : la LED s’allume.
Si la patte est au potentiel BAS (0 V), alors il n’y a
pas de courant car la patte est au même potentiel
que la masse : la LED s’éteint.
Les résistances servent à limiter le courant traversant les LED. U = R × i i = U / R = 5 / 330 = 15 mA
Programme « Modification n°2 » : Changer les valeurs d’attente : Delay à 500 ms par exemple.
Programme « Modification n°3 » : Produire un chenillard avec les cinq LED.
Voici différentes possibilités :
1.
2.
3.
4.
5.
6. …
1.
2.
3.
4.
5.
6.
7.
8. …
RETOUR
EdE SI Introduction au système Arduino Arduino
Activité de programmation 1 / 2
MODIDFICATIONS DU 1ER
PROGRAMME
AFFICHER UN CHIFFRE
Sorties utilisées : 12, 13, 14, 15.
Matériel : afficheur 7 segments + 1 décodeur BCD "4 bits 7 segments"
…
Schéma
Le décodeur convertit du
binaire codé sur 4 bits vers un
"code" utilisé pour afficher les
chiffres. Voir les tableaux.
Ici, en activant uniquement la
patte 14, cela génère le chiffre
4.
Montage afférent :
Decimal Entrées binaires
D C B A 0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
poids des entrées
8 4 2 1
Segments allumés Valeur
affichée a b c d e f g × × × × × × 0
× × 1
× × × × × 2
× × × × × 3
× × × × 4
× × × × × 5
× × × × × × 6
× × × 7
× × × × × × × 8
× × × × × × 9
× × × × × × A
× × × × × b
× × × × C
× × × × × d
× × × × × E
× × × × F
EdE SI Introduction au système Arduino Arduino
Activité de programmation 2 / 2
« Programme » : Afficher le chiffre 4.
Il faut obtenir dans Ardublock
L’upload donne dans l’EDI void setup() {
pinMode( 12 , OUTPUT);
pinMode( 13 , OUTPUT);
pinMode( 14 , OUTPUT);
pinMode( 15 , OUTPUT);
}
void loop() {
int i_L1;
digitalWrite(15, LOW);
digitalWrite(14, HIGH);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
delay( 500 );
}
Modifier l’état des
différentes broches pour
afficher d’autres
chiffres : 1, 5, 9, …
« Modification n°1 » : L’objectif est d’afficher successivement les dix chiffres de 0 à 9.
On créé une répétition de 0 à 9, l’incrément
(variable i) étant le chiffre à afficher.
On écrit sur la broche 12 le résultat d’un test
d’égalité (= =) entre :
le ET logique entre l’incrément i et
le poids « 1 ». ;
et le poids « 1 » ;
ET logique : action de comparer bit à bit deux valeurs. Par exemple :
6 & 1 = 0 3 & 1 = 1
Puis le test 0 = = 1 donne faux 1 = = 1 donne vrai
Modifier ce programme pour arriver au résultat final.
RETOUR
8 4 2 1 poids
0 1 1 0 i = 6
& 0 0 0 1 « 1 »
0 0 0 0 0
8 4 2 1 poids
0 0 1 1 i = 3
& 0 0 0 1 « 1 »
0 0 0 1 1
EdE SI Introduction au système Arduino Arduino
Activité de programmation 1 / 2
2EME
PROGRAMME : FAIRE VARIER L’INTENSITE LUMINEUSE
Sorties utilisées : 6.
Montage afférent :
« Programme » : utiliser une sortie analogique AnalogWrite.
Ardublock
UPLOAD
Arduino void setup()
{
pinMode( 6 , OUTPUT);
pinMode( 5 , OUTPUT);
}
void loop()
{
digitalWrite( 5 , HIGH );
analogWrite(6 , 10);
delay( 1000 );
}
Explication :
Le µC de l'Arduino est tellement rapide qu'il peut faire clignoter une sortie à près de 1000 fois par
seconde.
La modulation de largeur d'impulsions (MLI ; PWM Pulse Width Modulation en anglais), est une
technique couramment utilisée pour synthétiser un signal continu entre 0 et 5 V à l'aide d’une sortie tout
(HIGH) ou rien (LOW). La sortie est cycliquement mise à « 1 » puis « 0 » à une fréquence fixe mais
avec un rapport cyclique variable.
Des exemples sont donnés pour des rapports cycliques de 10, 50 et 90% de 5 V.
Le rapport cyclique est fixé par la seconde valeur de la commande analogWrite située entre 0 (0% :
toujours BAS) et 255 (100% : toujours HAUT).
EdE SI Introduction au système Arduino Arduino
Activité de programmation 2 / 2
Les clignotements ainsi provoqués sont tellement rapides que l’œil ne peut les détecter, cependant cela
crée l’illusion d’une « vraie » sortie analogique dont la tension dépend du rapport cyclique.
Ici, la valeur 10 représente .
« Modification n°1 » : utiliser un compteur for avec la sortie analogique AnalogWrite.
Ardublock
UPLOAD
Arduino int i;
void setup()
{
}
void loop()
{
for (i = 0; i <= 255; i=i+1) {
analogWrite(6,i);
delay(10);
}
}
La lumière croit graduellement du minimum au maximum, puis recommence.
« Modification n°2 » : ajouter une décroissance graduelle.
Dans l’EDI d’Arduino, ajouter un 2ème
compteur similaire au premier pour lequel le décompte
commence à 255, finit à 0, avec un pas de -1. Puis compiler et téléverser .
RETOUR
EdE SI Introduction au système Arduino Arduino
Activité de programmation 1 / 2
MODIFICATIONS 2EME
PROGRAMME
CREER 16 MILLIONS DE COULEURS
Sorties utilisées : 9, 10, 11.
Montage afférent :
Programme : Reprendre le dernier programme de la LED variable.
Changer seulement le nom de la broche active (#), prendre 9 (vert), 10 (bleu) ou 11 (rouge).
Arduino int i;
void setup()
{
}
void loop()
{
for (i = 0; i <= 255; i=i+1) {
analogWrite(9,i);
delay(10);
}
for (i = 255; i >= 0; i=i-1) {
analogWrite(9,i);
delay(10);
}
}
compiler et téléverser le programme dans la
mémoire de l’Arduino.
Explication :
Avec 256 niveaux de luminosité pour les trois
couleurs RVB (Rouge Vert Bleu), il est possible
d’émettre jusqu’à :
256 × 256 × 256 = 16 777 216 nuances de couleur.
Les moniteurs LCD utilisent un système RVB basé
sur le principe additif de trois couleurs primaires,
rouge, vert et bleu. Les scanners et les appareils
photo analysent aussi en RVB. L'œil humain analyse
également les images dans un système RVB.
EdE SI Introduction au système Arduino Arduino
Activité de programmation 2 / 2
« Modification n°1 » :
Mélanger les couleurs pour produire du cyan,
jaune, magenta ou blanc.
Remarque 1 : Le rouge de cette LED RVB est plus puissant que les deux autres couleurs, donc on
l’atténue en divisant par deux sa valeur par rapport aux autres.
Remarque 2 : Si l’on regarde de trop près, le mélange des couleurs n’est pas très satisfaisant. Il faut
alors s’éloigner ou « mixer » les couleurs avec un bout de papier blanc glissé sous le plexiglas.
RETOUR
EdE SI Introduction au système Arduino Arduino
Activité de programmation 1 / 2
3EME
PROGRAMME
COMMANDER PAR BP
Entrées utilisées : 2, 19 Sorties utilisées : 4 à 8
Montage afférent :
Programme : Allumer une LED avec un BP.
Introduire un test if dans la boucle sans fin, ainsi qu’une attente assez courte.
Loop / Loop boucle sans fin
Control / if
o Pin / read 0|1 choisir la valeur 2
o Pin / write 0|1 choisir la valeur 5, la forcer au niveau HIGH
Utilities / Delay (milliseconds) fixer à 100 millisecondes
Ardublock
Explication :
Si le BP relié à l’entrée 2 est enfoncé alors la
LED reliée à la sortie 5 est allumée.
Arduino void setup()
{
pinMode( 2 , INPUT);
pinMode( 5 , OUTPUT);
}
void loop()
{
if (digitalRead( 2))
{
digitalWrite( 5 , HIGH );
}
delay(100);
}
Le programme allume la LED mais ne permet pas de l’éteindre ! Il faut l’améliorer …
EdE SI Introduction au système Arduino Arduino
Activité de programmation 2 / 2
Ardublock
Explication :
Le test if / else permet d’allumer la LED si
le BP est enfoncé, sinon de l’éteindre
lorsqu’il ne l’est plus.
Arduino void setup()
{
pinMode( 2 , INPUT);
pinMode( 5 , OUTPUT);
}
void loop()
{
if (digitalRead( 2))
{
digitalWrite( 5 , HIGH );
}
else
{
digitalWrite( 5 , LOW );
}
delay( 100 );
}
« Modification n°1 » :
Cet exemple de base peut être un peu
décevant (on n’a pas vraiment besoin d’un
Arduino pour faire ça).
Pour compliquer le montage, un bouton
(rouge : broche 2) allumera la LED et un
autre (noir : broche 19) l’éteindra.
« Modification n°2 » :
Maintenant on peut vouloir allumer par un appui /
relâché sur le BP rouge. Puis éteindre par un nouvel
appui / relâché sur le BP rouge.
Pour cela il faut faire appel à une variable de
stockage de l’état de la LED. On n’éteint la LED
que si elle est déjà allumée et vice versa.
RETOUR
EdE SI Introduction au système Arduino Arduino
Activité de programmation 1 / 2
4EME
PROGRAMME
COMMANDER PAR POTENTIOMETRE
Entrées utilisées : analogique A4 Sorties utilisées : 4
Montage afférent :
Programme : Afficher le signal tension produit par un potentiomètre.
Introduire une les communication « série » entre la carte Arduino et l’ordinateur : Serial .
Control / Loop boucle sans fin
Utilities / Serial println
o Number / message taper « pot= »
o Number / glue pour associer au message
o Pin / get analog pin choisir l’entrée Analogique 4
Utilities / Delay (milliseconds) fixer à 100 millisecondes
Ardublock
Téléverser , puis afficher les valeurs renvoyées grâce au
moniteur série .
Explication : La valeur de tension de 0 à 5 V prélevée sur
l’entrée analogique 4 est convertie en un nombre codé sur :
10 bits 210
= 1024.
0 V 0000000000b = 0
5 V 1111111111b = 1023
Arduino
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print( "pot=" );
Serial.print(analogRead(A4));
Serial.println("");
delay( 100 );
}
EdE SI Introduction au système Arduino Arduino
Activité de programmation 2 / 2
« Modification n°1 » :
Utiliser la valeur délivrée par le potentiomètre pour réaliser un stroboscope.
Rechercher pour quelle fréquence les clignotements ne sont plus décelables par l’œil humain.
Autres entrées analogiques de la maquette :
A3 capteur de luminosité A2 capteur de température
Reprendre le premier programme et afficher les valeurs de luminosité et de température.
RETOUR