18
Introduction au système Arduino Arduino Activité pratique 1 / 1 PRESENTATION PROGRAMMATION DE L’ARDUINO UTILISER LES SORTIES LOGIQUES FAIRE CLIGNOTER UNE DEL MODIFICATION: FAIRE CLIGNOTER PLUSIEURS DEL MODIFICATION : 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

PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

Embed Size (px)

Citation preview

Page 1: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

Introduction au système Arduino

Arduino

Activité pratique

1 / 1

PRESENTATION

PROGRAMMATION DE L’ARDUINO

UTILISER LES SORTIES LOGIQUES

FAIRE CLIGNOTER UNE DEL

MODIFICATION: FAIRE CLIGNOTER PLUSIEURS DEL

MODIFICATION : 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 LUMINOS ITE

Page 2: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

EdE SI

Introduction au système Arduino

Arduino

Activité pratique

1 / 4

Qu'est-ce qu'Arduino?

INTRODUCTION

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.

Page 3: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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 language 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.

Page 4: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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.

Page 5: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

RETOUR

EdE SI

Introduction au système Arduino

Arduino

Activité pratique

4 / 4

Plaquette d’essais

DECOUVERTE

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 ».

Page 6: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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 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);

}

Cliquer sur le bouton UPLOAD

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()) …

Page 7: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

EdE SI

Introduction au système Arduino

Arduino

Activité de programmation

1 / 2

MODIDFICATIONS DU 1 ER 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

.

Page 8: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

EdE SI

Introduction au système Arduino

Arduino

Activité de programmation

2 / 2

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 resistances 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

Page 9: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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

1 / 2

MODIDFICATIONS DU 1 ER 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 :

Page 10: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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

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

8 4 2 1 poids 8 4 2 1 poids 0 1 1 0 � i = 6

& 0 0 0 1 � « 1 »

0 0 0 0 � 0

Puis le test 0 = = 1 donne faux 1 = = 1 donne vrai

Modifier ce programme pour arriver au résultat final.

RETOUR

Page 11: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 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 Arduino void setup() { pinMode( 6 , OUTPUT); pinMode( 5 , OUTPUT); }

void loop() { digitalWrite( 5 , HIGH ); analogWrite(6 , 10);

delay( 1000 );

UPLOAD � }

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).

Page 12: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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 Arduino int i;

void setup() {

}

void loop() {

for (i = 0; i <= 255; i=i+1) { analogWrite(6,i); delay(10);

}

UPLOAD � }

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

Page 13: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

EdE SI

Introduction au système Arduino

Arduino

Activité de programmation

1 / 2

MODIFICATIONS 2 EME 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.

Page 14: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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

Page 15: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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 …

Page 16: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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

Page 17: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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 o Number / glue o Pin / get analog pin

taper « pot= » pour associer au message choisir l’entrée Analogique 4

• Utilities / Delay (milliseconds) fixer à 100 millisecondes

Ardublock Arduino

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

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.

void loop() { Serial.print( "pot=" ); Serial.print(analogRead(A4)); Serial.println(""); delay( 100 ); }

0 V � 0000000000b = 0 5 V � 1111111111b = 1023

Page 18: PRESENTATION PROGRAMMATION DE L’ARDUINO … · Introduction au système Arduino Arduino Activité pratique ... véritable environnement de développement intégré EDI, ... o 1

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