IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Arduino à l'école

Cours pour l'apprentissage des bases de l'électronique et de la programmation sur Arduino
Image non disponible


précédentsommairesuivant

XIII. Projet 5 : les feux de circulation

Afin de mettre en pratique l'utilisation de variables, voici un petit exercice. On peut se baser sur le code 3 pour débuter.

L'objectif de cet exercice est de créer deux feux de circulation et de les faire fonctionner de manière synchrone.

Voici les phases de deux feux de circulation que tu dois recréer :

Image non disponible

Tu peux visionner une vidéo de présentation ici : http://www.scolcast.ch/podcast/61/53-3067

Image non disponible

Circuit 4

Image non disponible

Image non disponible

Liste des composants

  • 2 LED rouges ;
  • 2 LED jaunes ou orange ;
  • 2 LED vertes ;
  • 6 résistances de 220 à 470 Ω.

Afin de faciliter l'identification de chaque LED, nous allons renommer les broches comme suit :

Feu 1 :

  • LED rouge connectée sur la broche 4 et renommée R1 ;
  • LED jaune connectée sur la broche 5 et renommée J1 ;
  • LED verte connectée sur la broche 6 et renommée V1.

Feu 2 :

  • LED rouge connectée sur la broche 8 et renommée R2 ;
  • LED jaune connectée sur la broche 9 et renommée J2 ;
  • LED verte connectée sur la broche 10 et renommée V2.

Enfin, nous utiliserons deux variables timer1 et timer2 pour définir les temps d'allumages. Avant de regarder le code à la page suivante, essaie de faire l'exercice seul.

Code 4 : le feu de circulation
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
/*
   Code 4 - Edurobot.ch, destiné à l'Arduino
   Objectif : gérer des feux de circulation
*/

// On définit les variables pour chaque broche
//FEU 1
const int R1 = 4;     // La broche 4 devient le feu rouge 1
const int J1 = 5;     // La broche 3 devient le feu jaune 1
const int V1 = 6;     // La broche 2 devient le feu vert 1
//FEU2
const int R2 = 8;     // La broche 8 devient le feu rouge 2
const int J2 = 9;     // La broche 9 devient le feu jaune 2
const int V2 = 10;    // La broche 10 devient le feu vert 2
//TEMPS
int timer1 = 2000;    // Le temps est fixé à 2 secondes
int timer2 = 6000;    // Le temps est fixé à 6 secondes

void setup() {
    // On initialise les sorties
    pinMode(R1, OUTPUT);
    pinMode(J1, OUTPUT);
    pinMode(V1, OUTPUT);

    pinMode(R2, OUTPUT);
    pinMode(J2, OUTPUT);
    pinMode(V2, OUTPUT);
}

void loop() {
    // Phase 1 : R1 et V2 sont allumés, R2, J1 et J2 sont éteints
    digitalWrite(R2, LOW);   // R2 éteint
    digitalWrite(J1, LOW);   // J1 éteint
    digitalWrite(J2, LOW);   // J2 éteint
    digitalWrite(R1, HIGH);  // R1 allumé
    digitalWrite(V2, HIGH);  // V2 allumé
    delay(timer2);           // durée: 6000 millisecondes, soit 6 secondes

    // Phase 2 : R1, J1, J2 allumés et V2 éteint
    digitalWrite(V2, LOW);   // V2 éteint
    digitalWrite(J1, HIGH);  // J1 allumé
    digitalWrite(J2, HIGH);  // J2 allumé
    delay(timer1);           // durée: 2000 millisecondes, soit 2 secondes

    // Phase 3 : R1, J1, J2 éteints et V1 et R2 allumés
    digitalWrite(R1, LOW);   // R1 éteint
    digitalWrite(J1, LOW);   // J1 éteint
    digitalWrite(J2, LOW);   // J2 éteint
    digitalWrite(V1, HIGH);  // V1 allumé
    digitalWrite(R2, HIGH);  // R2 allumé
    delay(timer2);

    // Phase 4 : V1 éteint et J1, J2 et R2 allumés
    digitalWrite(V1, LOW);   // V1 éteint
    digitalWrite(J1, HIGH);  // J1 allumé
    digitalWrite(J2, HIGH);  // J2 allumé
    digitalWrite(R2, HIGH);  // R2 allumé
    delay(timer1);
}

XIII-A. Variantes

Variante 1

Il y a souvent un décalage entre le passage d'un feu au rouge et le passage au vert de l'autre feu. C'est en particulier le cas pour les feux de chantier. Cela permet aux voitures encore engagées dans la zone de chantier de la quitter, avant de laisser la place aux voitures venant en face.

Décrire les phases des feux et les programmer pour tenir compte du délai.

Variante 2

Intégrer un troisième feu, qui passe du rouge au vert en alternance avec les deux autres feux.

Réaliser le schéma électronique et programmer les feux.

Variante 3

Réaliser les feux pour un carrefour :

Image non disponible

précédentsommairesuivant

Ce cours est publié pour la communauté Arduino d'Edurobot.ch via son site https://arduino.education/. Il s'agit d'une ressource éducative libre, sous licence CC BY-NC-SA. L'utilisation gratuite de ce cours dans le cadre d'une formation payante est tolérée. Un avis à l'auteur est néanmoins bienvenu. Les écoles publiques, lycées, gymnases, universités, les associations et les FabLab peuvent demander gratuitement une version Word de ce document, afin de l'adapter plus aisément à leurs besoins ou celui d’élèves dys.