Introduction au système 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
Introduction au système Activité pratique 1 / 4 Qu'est-ce qu'? INTRODUCTION Le système 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 opensource 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. 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. Nous l utilisons indirectement. Carte à microcontrôleur ATMEGA 328P (µc développé par AVR). Il existe d autres formats, mais c est celui-ci que nous utilisons Pourquoi? 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 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.
Introduction au système Activité pratique 2 / 4 COMMENT CELA MARCHE? Chaîne de développement : Ardublock IDE langage machine µc 1 - Programme écrit avec ardublock, un éditeur de programmation graphique pour. 2 - Conversion en langage évolué (version simplifiée des langages C & C++) réalisé automatiquement par ardublock. 3 - L IDE 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.
Introduction au système 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 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 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.
Introduction au système Activité pratique 4 / 4 Plaquette d essais DECOUVERTE Vous disposez d une plaquette de test à base d 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 à l ordinateur par un câble USB. Lancer l EDI d depuis l icône du bureau. Dans la rubrique Outil de l EDI d, choisir «Ardublock». RETOUR
Introduction au système Activité de programmation 1 / 1 1 ER PROGRAMME : FAIRE CLIGNOTER UNE DEL Sortie utilisée : 13, elle est directement reliée à une led de la carte. 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 Puis il est recompilé en langage machine et est téléversé dans la mémoire du µc de la carte. 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()) RETOUR
Introduction au système Activité de programmation 1 / 3 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 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.
Introduction au système Activité de programmation 2 / 3
Introduction au système 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» : Programme «Modification n 3» : Changer les valeurs d attente : Delay à 500 ms par exemple. Produire un chenillard avec les cinq LED. Voici différentes possibilités : 1. 1. 2. 2. 3. 3. 4. 4. 5. 6. 5. 6. 7. 8. RETOUR
Introduction au système Activité de programmation 1 / 2 Sorties utilisées : 12, 13, 14, 15. MODIDFICATIONS DU 1 ER PROGRAMME AFFICHER UN CHIFFRE 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. Entrées binaires Decimal 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 a b c d e f g affichée 0 1 2 3 4 5 6 7 8 9 A b C d E F Montage afférent :
Introduction au système 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 1 1 i = 3 & 0 0 0 1 «1» & 0 0 0 1 «1» 0 0 0 0 0 0 0 0 1 1 Puis le test 0 = = 1 donne faux 1 = = 1 donne vrai Modifier ce programme pour arriver au résultat final. RETOUR
Introduction au système Activité de programmation 1 / 2 2 EME PROGRAMME : FAIRE VARIER L INTENSITE LUMINEUSE Sorties utilisées : 6. Montage afférent : «Programme» : utiliser une sortie analogique AnalogWrite. Ardublock void setup() pinmode( 6, OUTPUT); pinmode( 5, OUTPUT); UPLOAD void loop() digitalwrite( 5, HIGH ); analogwrite(6, 10); delay( 1000 ); Explication : Le µc de l' 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).
Introduction au système 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 int i; void setup() UPLOAD 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, 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
Introduction au système 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). 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. 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.
Introduction au système 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
Introduction au système Activité de programmation 1 / 2 3 EME 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. 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
Introduction au système Activité de programmation 2 / 2 Ardublock void setup() pinmode( 2, INPUT); pinmode( 5, OUTPUT); 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. «Modification n 1» : Cet exemple de base peut être un peu décevant (on n a pas vraiment besoin d un pour faire ça). Pour compliquer le montage, un bouton (rouge : broche 2) allumera la LED et un autre (noir : broche 19) l éteindra. void loop() if (digitalread( 2)) digitalwrite( 5, HIGH ); else digitalwrite( 5, LOW ); delay( 100 ); «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
Introduction au système Activité de programmation 1 / 2 4 EME 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 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 void setup() Serial.begin(9600); Téléverser moniteur série., puis afficher les valeurs renvoyées grâce au 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 2 10 = 1024. 0 V 0000000000b = 0 5 V 1111111111b = 1023 void loop() Serial.print( "pot=" ); Serial.print(analogRead(A4)); Serial.println(""); delay( 100 );
Introduction au système 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