STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno Pourquoi Arduino? C'est une plateforme pilotée par un logiciel « open-source », véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers une carte à microcontrôleur. Le langage utilisé est proche du code C. Objectifs →Etre capable d’identifier la nature d’un signal (logique, analogique). →Etre capable d’identifier une entrée et une sortie sur un microcontrôleur. →Etre capable d’appréhender les bases d’un langage de programmation. Matériels à disposition Le sujet « Tp-cours » Le sujet « Fiches exercices » Le site http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php L’environnement de programmation « ARDUINO UNO » Répartition du travail PARTIE N°1 « Découverte matérielle et logicielle » PARTIE N°2 « Découverte du langage basique de l’Arduino » PARTIE N°3 « Synthèse » PARTIE N°4 « Fiches exercices » Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX Page 1 sur 8 STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno I . PARTIE N°1 « DECOUVERTE MATERIELLE ET LOGICIELLE» I.1 Présentation de la carte « Arduino » C'est d’une part une plateforme qui est basée sur une carte à microcontrôleur (de la famille AVR), et d’autre part un logiciel « open-source », véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur. Le langage utilisé est proche du code C. Signal logique : Signal analogique 5V 5V 0 0 Signal PWM 5V 0 T1 Rapport cyclique T I.2 Rôle et caractéristiques des entrées-sorties numériques Utilisation Une entrée numérique permet de recevoir une information logique (0 ou 1). Ce type d’entrée permet de recevoir l’état d’un capteur, d’un bouton. Une sortie numérique peut piloter de façon logique un actionneur ou un pré actionneur. Ce type de sortie permet de piloter un relais, un voyant. Caractéristiques électriques Une sortie peut fournir 40 mA. Le courant sur l’ensemble des sorties est au max de 200mA. Tension 5V I.3 Rôle et caractéristiques des sorties PWM Utilisation Ces types de sorties vont permettre de générer une impulsion dont le rapport cyclique est variable. PWM - Pulse Width Modulation. MLI - Modulation de Largeur d'Impulsion. Ceci peut-être utilisé pour faire briller une LED avec une luminosité variable ou pour faire varier la vitesse d’un moteur. Caractéristiques électriques Signal 0 – 5 V, rapport cyclique réglable de 0% à 100%. La fréquence du signal PWM est approximativement de 490Hz. I.4 Rôle et caractéristiques des entrées analogiques Utilisation La carte dispose de 6 entrées analogiques chacune pouvant effectuer une mesure de tension. Permet de connecter des capteurs analogique (exemple : mesure de température). Caractéristiques électriques Tension d’entrée [0 à +5V] Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX Page 2 sur 8 STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno I.5 Présentation de l’interface logicielle Interface de programmation Barre à boutons Vérifie et compile le programme Transfère vers la carte Arduino Création d’un nouveau programme Ouvrir un programme existant Enregistrer un programme Moniteur série Le logiciel Arduino intègre également un TERMINAL SERIE (fenêtre séparée) qui permet d'afficher des messages, textes reçus sur carte Arduino et d'envoyer des caractères vers la carte Arduino. Cette fonctionnalité permet une mise au point facilitée des programmes, permettant d'afficher sur l'ordinateur l'état de variables, de résultats de calculs ou de conversions analogique-numérique : un élément essentiel pour améliorer, tester et corriger ses programmes. Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX Page 3 sur 8 STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno Exercice N°1 « Analyse du schéma électrique » Q1 : Repérer sur la carte Arduino et sur le schéma électrique le connecteur USB Q2 : Repérer sur la carte Arduino et sur le schéma électrique le microcontrôleur (ATEMEGA 328P). Q3 : Repérer sur la carte Arduino et sur le schéma électrique le bornier d’alimentation. Q4 : Repérer sur la carte Arduino et sur le schéma électrique le bornier des entrées analogiques. Q5 : Repérer sur la carte Arduino et sur le schéma électrique le bornier des E/S numériques. Q6 : Repérer sur la carte Arduino et sur le schéma électrique les sorties PWM. Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX Page 4 sur 8 STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno I I . PARTIE N°2 « DECOUVERTE DU LANGUAGE BASIQUE DE L’ARDUINO » II.1 Les instructions « void setup » et « void loop » Q1 : A l’aide du paragraphe « Référence Etendue » du site internet proposé, et à partir des documents des fonctions Arduino fournis au format pdf, indiquer la fonction de chacune des lignes suivantes. void setup() { pinMode(8, OUTPUT); } void loop() { digitalWrite(8, HIGH); delay(1000); digitalWrite(8, LOW); delay(1000); } …………………………………………………………………………………………………………. …………………………………………………………………………………………………………. …………………………………………………………………………………………………………. …………………………………………………………………………………………………………. …………………………………………………………………………………………………………. …………………………………………………………………………………………………………. …………………………………………………………………………………………………………. …………………………………………………………………………………………………………. Q2 : Quelle est alors la fonction de ce programme. ………………………………………………………………………………………………………….……………………………………………………… Q3 : Compléter le schéma de raccordement ci-dessous pour tester le programme précédent. Q4 : Calculer la valeur de la résistance pour garantir I=20mA. Q5 : Réaliser le schéma de raccordement. Q6 : Recopier le programme. Q7 : Lancer le programme et vérifier le bon fonctionnement. (faire valider par le professeur) Schéma de raccordement Calcul de la résistance Schéma de principe R1 D1 Sortie logique ATMEGA 328 n°8 gnd Calcul de la résistance (Tension VD1=2V) …………………………………………………………………………….. …………………………………………………………………………….. …………………………………………………………………………….. …………………………………………………………………………….. …………………………………………………………………………….. Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX Page 5 sur 8 STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno II.2 Les instructions « pinMode » « digitalWrite » « digitalRead » Q1 : à partir des documents de Référence du langage Arduino, indiquer la fonction de chacune des lignes suivantes. void setup() { pinMode (3, OUTPUT); pinMode (2, INPUT); } void loop () { boolean valeurPin; valeurPin = digitalRead (2); digitalWrite (3, valeurPin); } ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… Q2 : Quelle est alors la fonction de ce programme ………………………………………………………………………………………………………….……………………………………………………… ………………………………………………………………………………………………………….……………………………………………………… Q3 : Compléter le schéma de raccordement (1) permettant de visualiser un état logique haut sur la del. Q4 : Compléter le schéma de raccordement (2) permettant de visualiser un état logique bas sur la del. Q5 : Réaliser le schéma de raccordement. Q6 : Recopier le programme. Q7 : Lancer le programme et vérifier le bon fonctionnement. (faire valider par le professeur) Schéma de raccordement (1) Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX Schéma de raccordement (2) Page 6 sur 8 STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno II.3 L’instruction « if » Q1 : à partir des documents de Référence du langage Arduino, indiquer la fonction de l’instruction if. ………………………………………………………………………………………………………….……………………………………………………… ………………………………………………………………………………………………………….……………………………………………………… ………………………………………………………………………………………………………….……………………………………………………… Q2 : Compléter le programme permettant d’allumer la DEL sur la sortie n°2 en fonction de l’état du bouton sur l’entrée n°3 (utiliser la structure if). Q3 : Réaliser le schéma de raccordement. Q4 : Recopier le programme. Q5 : Lancer le programme et vérifier le bon fonctionnement. (faire valider par le professeur) Programme à compléter Schéma de raccordement void setup() { pinMode (2, OUTPUT); pinMode (3, INPUT); } void loop () { boolean valeurPin; valeurPin = digitalRead (3); …………………………………………………………… { …………………………………………………………… } …………………………………………………………… { …………………………………………………………… } } II.4 L’instruction « while » Q1 : à partir des documents de Référence du langage Arduino, indiquer la fonction de l’instruction while. ………………………………………………………………………………………………………….……………………………………………………… ………………………………………………………………………………………………………….……………………………………………………… ………………………………………………………………………………………………………….……………………………………………………… Q2 : Sans modifier votre câblage, proposer un programme pour allumer la LED tant que le bouton n’est pas actionné (utiliser la structure while). Q3 : Lancer le programme et vérifier le bon fonctionnement. (faire valider par le professeur) Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX Page 7 sur 8 STI2D SIN TP - Cours : Mes premiers pas en langage C avec Arduino Uno II.5 Les différents type de variables A partir des documents de Référence du langage Arduino Q1 : Indiquer le type d’une variable binaire ou logique : (Préciser les valeurs possibles) ………………………………………………… ………………………………………………… Q2 : Indiquer le type d’une variable entière : (Préciser les valeurs possibles) ………………………………………………… ………………………………………………… Q3 : Que représente la variable de type « char » …………….……………………………………………………………………………………………………………………………………………… I I I . PARTIE N°3 « Synthèse » 1- La fonction void setup est obligatoire en début de programme ? 2- La fonction void setup permet d’initialiser le programme ? 3- La fonction void setup s'exécute plusieurs fois ? 4- La fonction void setup s'exécute une fois en début de programme ? 5- La fonction void loop est obligatoire ? 6- La fonction void loop s'exécute une seule fois ? 7- La fonction void loop s'exécute en permanence ? 8- La fonction pinMode permet d’affecter une broche en entrée ou en sortie ? 9- La fonction pinMode s’exécute toujours dans la fonction void setup ? 10- La fonction pinMode s’exécute toujours dans la fonction void loop ? 11- La fonction digitalRead permet ……………. un l’état logique sur une entrée. 12- La fonction digitalWrite permet ……………. un l’état logique sur une sortie. 13- Les variables [0 et 1] sont des variables de types : 14- Les variables [0, 1, 20, 30, 32, 55……] sont des variables de types : 15- Les variables [A, B, C, D, ……] sont des variables de types : 16- Quel est l’unité de la fonction delay 17- Donner la signification des termes HIGH et LOW. 18- Donner la signification des termes INPUT et OUTPUT Enseignement de spécialité Lycée Gustave Eiffel BORDEAUX □Vrai □Faux □Vrai □Faux □Vrai □Faux □Vrai □Faux □Vrai □Faux □Vrai □Faux □Vrai □Faux □Vrai □Faux □Vrai □Faux □Vrai □Faux □d’écrire □de lire □d’écrire □de lire …………………………… …………………………… …………………………… …………………………… …………………………… …………………………… Page 8 sur 8