Arduino est un micro-contrôleur bon marché (30 euros) qui permet de s'initier à l'électronique.
Dans cet article, nous allons aborder les sujets suivants :
- un premier exemple avec allumage d'une LED à intervalle régulier
- un deuxième exemple simulant le fonctionnement de feu de signalisation
De plus, pour tester, il existe un simulateur web disponible sur http://123d.circuits.io/, que nous utiliserons dans cet article. Celui-ci permet de simuler la carte arduino auquel vous connectez les composants électroniques (diodes, moteurs, résistances, bouton poussoir, ...).
Un cours de type MOOC "La fabrication numérique" existe sur www.france-universite-numerique-mooc.fr. Merci à eux!!
Premier exemple, gérer une LED
Dans cet exemple, nous allons faire clignoter une LED.
Nous utilisons donc une LED, une résistance afin de limiter l'intensité dans le futur circuit, une carte Arduino.
Nous relions notre circuit constitué de la LED et de la résistance d'un coté à la masse de la carte Arduino et de l'autre à la broche digital 13 de la carte Arduino. Cette broche sera pilotée pour fournir de la puissance à intervalle régulier. La carte Arduino est bien sûr relié à une source de tension.
Ci-dessous un aperçu de l'outil de simulation qui permet de relier les composants voulus et de coder le comportement de la carte Arduino. Le bouton "start simulation" permet de vérifier l'allumage/extinction toutes les 1 seconde de la diode:
Le code est le suivant :
// la broche qui servira à injecter du courant vers la LED
int led = 13;
void setup() {
// on va injecter du courant dans cette broche, c'est donc une broche de type sortie
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // on injecte du courant vers la LED
delay(1000); // pause de 1 seconde
digitalWrite(led, LOW); // on n'injecte plus de courant vers la LED
delay(1000); // pause de 1 seconde
}
Deuxième exemple, la gestion d'un feu tricolore
Nous allons simuler un feu tricolore avec le feu pour les piétons et un bouton poussoir permettant au piéton de demander le passage du feu au rouge.
Le code vient du MOOC "La fabrication numérique".
La règle du feu tricolore est la suivante :
Feu tricolore :
- feu orange (branchée sur la broche 11) allumée pendant 1 seconde
- feu rouge (branchée sur la broche 12) allumée pendant 3 secondes
- feu vert (branchée sur la broche 10) allumée pendant 3 secondes
Feu bicolore (piéton)
- Le feu piéton est constamment rouge (rouge→9 et vert→8) tant que le bouton (broche 2) n'est pas appuyé
Si le bouton est maintenu appuyé pendant que le feu voiture est au vert, alors le feu tricolore passe au orange allumé pendant 1 seconde puis rouge pendant 5 secondes durant lesquelles le feu vert piéton passe au vert. Après ces 5 secondes, le feu piéton repasse au rouge et le fonctionnement normal reprend
Le montage physique est le suivant :
Le code est le suivant :
/*
Feu tricolore + Feu Pietons
TP de la semaine 3 du MOOC "La Fabrication Numerique"
Le montage :
* Une LED rouge sur la broche 12 en serie avec une resistance de 220Ω
* Une LED orange sur la broche 11 en serie avec une resistance de 220Ω
* Une LED verte sur la broche 10 en serie avec une resistance de 220Ω
* Une LED rouge sur la broche 9 en serie avec une resistance de 220Ω
* Une LED verte sur la broche 8 en serie avec une resistance de 220Ω
* Bouton poussoir branché sur la broche 2 depuis +5V
* Une résistance de 1KΩ bracnhé 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);
Serial.begin(9600);
}
// 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) {
Serial.println("bouton appuyé");
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 vert
digitalWrite(rougePieton, HIGH);
digitalWrite(vertePieton, LOW);
// Puis on remet le feu au rouge
digitalWrite(rouge, LOW);
}
else {
// Fonctionnement normal du feu voiture
Serial.println("bouton non appuyé");
digitalWrite(orange, HIGH);
delay(1000);
digitalWrite(orange, LOW);
digitalWrite(rouge, HIGH);
delay(3000);
digitalWrite(rouge, LOW);
}
}
Notions de base en électronique
Ci-dessous un lien expliquant les notions de base de l'électronique :
http://fr.flossmanuals.net/arduino/les-bases-de-lelectronique/
D'autres liens intéressant :