ENIB 2023 : Les petits voyageurs : Différence entre versions
(→Code) |
|||
Ligne 77 : | Ligne 77 : | ||
==Code== | ==Code== | ||
<pre> | <pre> | ||
− | + | #define brocheS0 2 | |
+ | |||
+ | |||
+ | |||
+ | |||
+ | #define brocheS1 3 | ||
+ | |||
+ | |||
+ | #define brocheS2 4 | ||
+ | |||
+ | |||
+ | #define brocheS3 5 | ||
+ | |||
+ | |||
+ | #define brocheLecture 6 | ||
+ | |||
+ | |||
+ | #define brocheLED 7 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | // valeur mesurée pour chaque couleur | ||
+ | |||
+ | |||
+ | int rouge, vert, bleu, total; | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | void setup() { | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | pinMode(brocheS0, OUTPUT); | ||
+ | |||
+ | |||
+ | pinMode(brocheS1, OUTPUT); | ||
+ | |||
+ | |||
+ | pinMode(brocheS2, OUTPUT); | ||
+ | |||
+ | |||
+ | pinMode(brocheS3, OUTPUT); | ||
+ | |||
+ | |||
+ | pinMode(brocheLED, OUTPUT); | ||
+ | |||
+ | |||
+ | pinMode(brocheLecture, INPUT); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | // éteignons les LEDs pour l'instant | ||
+ | |||
+ | |||
+ | digitalWrite(brocheLED, LOW); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | // Réglage de l'échelle de fréquence à 2% (plus facile à lire avec pulseIn) | ||
+ | |||
+ | |||
+ | digitalWrite(brocheS0, LOW); | ||
+ | |||
+ | |||
+ | digitalWrite(brocheS1, HIGH); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | // pour affichage des résultats dans le moniteur série | ||
+ | |||
+ | |||
+ | Serial.begin(9600); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | void loop() { | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | digitalWrite(brocheLED, HIGH); // on allume les LEDs | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | digitalWrite(brocheS2, LOW); // rouge | ||
+ | |||
+ | |||
+ | digitalWrite(brocheS3, LOW); | ||
+ | |||
+ | |||
+ | rouge = pulseIn(brocheLecture, LOW); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Serial.print("rouge: "); | ||
+ | |||
+ | |||
+ | Serial.print(rouge); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | digitalWrite(brocheS2, HIGH); // vert | ||
+ | |||
+ | |||
+ | digitalWrite(brocheS3, HIGH); | ||
+ | |||
+ | |||
+ | vert = pulseIn(brocheLecture, LOW); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Serial.print(" vert: "); | ||
+ | |||
+ | |||
+ | Serial.print(vert); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | digitalWrite(brocheS2, LOW); // bleu | ||
+ | |||
+ | |||
+ | digitalWrite(brocheS3, HIGH); | ||
+ | |||
+ | |||
+ | bleu = pulseIn(brocheLecture, LOW); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Serial.print(" bleu: "); | ||
+ | |||
+ | |||
+ | Serial.print(bleu); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | digitalWrite(brocheS2, HIGH); // lumière complète, sans filtre | ||
+ | |||
+ | |||
+ | digitalWrite(brocheS3, LOW); | ||
+ | |||
+ | |||
+ | total = pulseIn(brocheLecture, LOW); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Serial.print(" total: "); | ||
+ | |||
+ | |||
+ | Serial.println(total); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | digitalWrite(brocheLED, LOW); // on éteint les LEDs | ||
+ | |||
+ | |||
+ | delay(1000); // pause avant la prochaine mesure | ||
+ | |||
+ | |||
</pre> | </pre> | ||
Version du 26 janvier 2023 à 14:36
Sommaire
Les petits voyageurs:
Description courte
Résoudre une énigme faisant deviner un pays.
Déplacer le capteur de couleur dans le labyrinthe pour faire une suite de couleur correspondant au drapeau du pays.
Matériels et machines utilisés
- plaque de bois de 30cm x 30cm
- 2 boutons poussoirs
- 1 capteur RGB TCS3200
- carte Arduino
- cartons ( pour créer le prototype)
- câbles Dupont
- plaque de Cork de 30cm x 30cm
- découpeuse laser
- poste à souder
- pistolet a colle
Réalisation
Etape 1: Souder les composants si nécessaires.
Etape 2: Créer les énigmes. Ci dessous la liste de nos énigmes Fichier:Liste des énigmes.docx
Etape 3: Ecrire le code. (cf code ci dessous)
Etape 4: Etablir un plan du labyrinthe.
Etape 5: Faire un prototype du labyrinthe en carton.
Etape 6: tracer le labyrinthe sur la plaque de bois.
Etape 7: Sur inskape, creer un fichier avec toutes les murs du labyrinthe qui doivent être découpés / graver.
Etape 8:
Découper et graver les murs du labyrinthe à la découpe laser.
Etape 9: Peindre certaines cases du labyrinthe en fonction des couleurs nécessaires. Astuce : Mettre du scotch pour avoir des bords lisses
Etape 10: A l'aide de la colle à bois, coller les murs du labyrinthe.
Code
#define brocheS0 2 #define brocheS1 3 #define brocheS2 4 #define brocheS3 5 #define brocheLecture 6 #define brocheLED 7 // valeur mesurée pour chaque couleur int rouge, vert, bleu, total; void setup() { pinMode(brocheS0, OUTPUT); pinMode(brocheS1, OUTPUT); pinMode(brocheS2, OUTPUT); pinMode(brocheS3, OUTPUT); pinMode(brocheLED, OUTPUT); pinMode(brocheLecture, INPUT); // éteignons les LEDs pour l'instant digitalWrite(brocheLED, LOW); // Réglage de l'échelle de fréquence à 2% (plus facile à lire avec pulseIn) digitalWrite(brocheS0, LOW); digitalWrite(brocheS1, HIGH); // pour affichage des résultats dans le moniteur série Serial.begin(9600); } void loop() { digitalWrite(brocheLED, HIGH); // on allume les LEDs digitalWrite(brocheS2, LOW); // rouge digitalWrite(brocheS3, LOW); rouge = pulseIn(brocheLecture, LOW); Serial.print("rouge: "); Serial.print(rouge); digitalWrite(brocheS2, HIGH); // vert digitalWrite(brocheS3, HIGH); vert = pulseIn(brocheLecture, LOW); Serial.print(" vert: "); Serial.print(vert); digitalWrite(brocheS2, LOW); // bleu digitalWrite(brocheS3, HIGH); bleu = pulseIn(brocheLecture, LOW); Serial.print(" bleu: "); Serial.print(bleu); digitalWrite(brocheS2, HIGH); // lumière complète, sans filtre digitalWrite(brocheS3, LOW); total = pulseIn(brocheLecture, LOW); Serial.print(" total: "); Serial.println(total); digitalWrite(brocheLED, LOW); // on éteint les LEDs delay(1000); // pause avant la prochaine mesure