Table des matières

Fun MOOC - Programmer un objet avec Arduino

Porteurs du projet

Jamel BENMAMAR (contact : jamel.benmamar@upmc.fr)

Christophe BONNET (contact : christophe.bonnet@upmc.fr)

Sylvain THERY (contact : sylvain.thery@upmc.fr)

Introduction

Descriptif du MOOC

TP1 : Montage électronique Pour réaliser ce montage, vous avez besoin de : * Un Arduino * Une platine de prototypage * Un câble USB * Trois résistances de 220Ω * Des fils de prototypage * Une LED verte * Une LED orange * Une LED rouge TP2 : Feu tricolore + feu piéton <code> /* Feu tricolore + Feu Piétons TP de la semaine 2 du MOOC “Programmer un objet avec Arduino” Le montage : * Une LED rouge sur la broche 12 en série avec une résistance de 220Ω * Une LED orange sur la broche 11 en série avec une résistance de 220Ω * Une LED verte sur la broche 10 en série avec une résistance de 220Ω * Une LED rouge sur la broche 9 en série avec une résistance de 220Ω * Une LED verte sur la broche 8 en série avec une résistance de 220Ω * Bouton poussoir branché sur la broche 2 depuis +5V * Une résistance de 1KΩ branché sur la broche 2 depuis GND créé le 9 Avril 2014 par Baptiste Gaultier avec les conseils de fb251 Ce code est en CC0 1.0 Universal https://www.france-universite-numerique-mooc.fr/courses/MinesTelecom/04002/Trimestre_1_2014/about */ Initialisation des constantes pour les LED const int rouge = 12; const int orange = 11; const int verte = 10; const int rougePieton = 9; const int vertePieton = 8; Numéro de la broche à laquelle est connecté le bouton poussoir const int bouton = 2; Déclaration des variables : int etatBouton = 0; le code dans cette fonction est exécuté une fois au début void setup() { indique que les broches des LED sont des sorties : pinMode(rouge, OUTPUT); pinMode(orange, OUTPUT); pinMode(verte, OUTPUT); pinMode(rougePieton, OUTPUT); pinMode(vertePieton, OUTPUT); indique que la broche bouton est une entrée : pinMode(bouton, INPUT); } le code dans cette fonction est exécuté en boucle void loop() { Dans le fonctionnement normal, le feu piéton est toujours rouge digitalWrite(rougePieton, HIGH); Fonctionnement normal du feu voiture digitalWrite(verte, HIGH); delay(3000); digitalWrite(verte, LOW); lit l'état du bouton et stocke le résultat dans etatBouton : etatBouton = digitalRead(bouton); Si etatBouton est égal à HIGH c'est que le bouton est appuyé if (etatBouton == HIGH) { digitalWrite(orange, HIGH); delay(1000); digitalWrite(orange, LOW); digitalWrite(rouge, HIGH); Le feu piéton passe au vert pendant 5s digitalWrite(rougePieton, LOW); digitalWrite(vertePieton, HIGH); delay(5000); On remet le feu piéton au rouge digitalWrite(rougePieton, HIGH); digitalWrite(vertePieton, LOW); Puis on s'assure que le feu voiture est éteint digitalWrite(rouge, LOW); } else { Fonctionnement normal du feu voiture digitalWrite(orange, HIGH); delay(1000); digitalWrite(orange, LOW); digitalWrite(rouge, HIGH); delay(3000); digitalWrite(rouge, LOW); } } </code> TP2 : Montage électronique Pour réaliser ce montage, vous avez besoin de : * Un Arduino * Une platine de prototypage * Un câble USB * Cinq résitances de 220Ω * Une résistance de 10kΩ * Des fils de prototypage * Deux LED verte * Une LED orange * Deux LED rouge * Un bouton poussoir TP3 : Thérémine lumineux <code> /* Thérémine lumineux Le montage : * Un piezo branché sur la broche 8 * Une photorésistance branchée sur la broche A2 depuis +5V * Une résistance de 10kΩ branchée sur la broche A2 depuis GND créé le 9 Avril 2014 par Baptiste Gaultier Ce code est en CC0 1.0 Universal https://www.france-universite-numerique-mooc.fr/courses/MinesTelecom/04002/Trimestre_1_2014/about */ variable pour stocker la valeur reçue sur A2 int sensorValue; void setup() { } void loop() { lire la valeur de la photorésistance et stocker ça dans une variable Attention, sur les schéma/montage en dessous, elle est branchée sur A2 (et non A0) sensorValue = analogRead(A2); re étalonne la variable vers un grand intervalle de fréquences audibles int pitch = map(sensorValue, 0, 1023, 50, 30000); jouer la fréquence sur le piezo branché sur la broche 8 tone(8, pitch); attendre 10 ms delay(10); } </code> TP3 : Montage électronique Pour réaliser ce montage, vous avez besoin de : * Un Arduino * Une platine de prototypage * Un câble USB * Une résistance de 10kΩ * Des fils de prototypage * Une photorésistance * Un piézo TP4 : Feu tricolore et barrière <code> /* Feu bicolore et barrière Le montage : * Une LED rouge sur la broche 3 en serie avec une resistance de 220Ω * Une LED verte sur la broche 4 en serie avec une resistance de 220Ω * Un servomoteur branché sur les broches 9, +5V et GND * Bouton poussoir branché sur la broche 2 depuis +5V * Une résistance de 1KΩ bracnhé sur la broche 2 depuis GND créé le 18 Avril 2014 par Baptiste Gaultier Ce code est en CC0 1.0 Universal https://www.france-universite-numerique-mooc.fr/courses/MinesTelecom/04002/Trimestre_1_2014/about */ #include <Servo.h> Servo servo; création de l'objet servo issu du moule Servo Initialisation des constantes const int bouton = 2; const int ledRouge = 3; const int ledVerte = 4; Déclaration des variables : int etatBouton = 0; int pos = 0; le code dans cette fonction est exécuté une fois au début void setup() { on souhaite communiquer avec l'ordinateur Serial.begin(9600); indique que les broches des LED sont des sorties : pinMode(ledRouge, OUTPUT); pinMode(ledVerte, OUTPUT); indique que la broche bouton est une entrée : pinMode(bouton, INPUT); on accroche notre servomoteur branché sur la broche 9 servo.attach(9); allume le feu rouge digitalWrite(ledRouge, HIGH); positionne la barrière horizontalement servo.write(0); } le code dans cette fonction est exécuté en boucle void loop(){ read the state of the pushbutton value: etatBouton = digitalRead(bouton); si le bouton est appuyé if (etatBouton == HIGH) { alors on envoie un message sur le moniteur série Serial.print(“Bouton appuye”); puis on remonte la barrière de 90° for(pos = 0; pos ⇐ 90; pos++) { servo.write(pos); delay(15); } puis on allume le feu vert durant 5 secondes digitalWrite(ledRouge, LOW); digitalWrite(ledVerte, HIGH); delay(5000); et on repasse au rouge digitalWrite(ledVerte, LOW); digitalWrite(ledRouge, HIGH); enfin, on redescend la barrière for(pos = 90; pos>=0; pos–) { servo.write(pos); delay(15); } } } </code> TP4 : Montage électronique**

Pour réaliser ce montage, vous avez besoin de :