ENIB 2026 : Enibingo : Différence entre versions
(→description (résumé)) |
(→Présentation) |
||
| (56 révisions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
Titre de la fiche expérience : | Titre de la fiche expérience : | ||
| − | == | + | ==Présentation== |
| − | + | Création d'une machine à sous qui gagne (plus) quand il fait "chaud" et qui perd (plus) quand il fait "froid". On parle bien de la température extérieur. | |
| + | |||
| + | L'objectif est de préparer les enfants à dépenser leurs salaires au casino et de favoriser l'accoutumance aux jeux d'argent. | ||
[[Fichier:Groupe_enibingo.jpeg|200px]] | [[Fichier:Groupe_enibingo.jpeg|200px]] | ||
| − | + | [[Fichier:Machine-a-sous9.JPEG|200px]] | |
| − | + | [[Fichier:Machine-a-sous10.JPEG|200px]] | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
==outil et matériel== | ==outil et matériel== | ||
| + | *1 ordinateur équipé arduinoIDE | ||
*Grand carton (structure de la machine à sous) | *Grand carton (structure de la machine à sous) | ||
*d'autres morceaux de carton | *d'autres morceaux de carton | ||
| + | *1 breadboard (plaque de câblage) | ||
| + | *carte esp32 | ||
*3 servomoteurs | *3 servomoteurs | ||
*1 bouton poussoir | *1 bouton poussoir | ||
*pistolet à colle chaude | *pistolet à colle chaude | ||
| − | |||
*3 LED (de couleurs différente si possible) | *3 LED (de couleurs différente si possible) | ||
| − | |||
| − | |||
*3 trombones | *3 trombones | ||
| + | *Un maximum de décorations pour une machine BLING BLING !! | ||
| − | == | + | ==Code Arduino== |
| − | |||
| − | |||
<syntaxhighlight lang="Arduino" line> | <syntaxhighlight lang="Arduino" line> | ||
#define PIN 9 | #define PIN 9 | ||
#include <Arduino_GFX_Library.h> | #include <Arduino_GFX_Library.h> | ||
| + | |||
| + | #include "Freenove_WS2812_Lib_for_ESP32.h" | ||
| + | #include <ESP32Servo.h> | ||
| + | #define LEDS_COUNT 20 | ||
| + | #define LEDS_PIN 27 | ||
| + | #define CHANNEL 0 | ||
| + | |||
| + | Freenove_ESP32_WS2812 strip = Freenove_ESP32_WS2812(LEDS_COUNT, LEDS_PIN, CHANNEL, TYPE_GRB); | ||
| + | |||
| + | Servo servo1; | ||
| + | Servo servo2; | ||
| + | Servo servo3; | ||
| + | |||
| + | int TS1 = 1016; | ||
| + | int TS2 = 909; | ||
| + | int TS3 = 1065; | ||
| + | |||
| + | int bouton = 0; | ||
| + | int piece = 0; | ||
| + | |||
| + | int fruit1; | ||
| + | int fruit2; | ||
| + | int fruit3; | ||
void setup() { | void setup() { | ||
| − | // | + | Serial.begin(9600); |
| + | servo1.attach(26); //Servomoteur | ||
| + | servo2.attach(25); //Servomoteur | ||
| + | servo3.attach(13); //Servomoteur | ||
| + | |||
| + | pinMode(32, INPUT); // Bouton | ||
| + | pinMode(33, INPUT); // Contacteur pour pièce | ||
| + | randomSeed(analogRead(0)); | ||
| + | |||
| + | strip.begin(); | ||
| + | strip.setBrightness(30); | ||
} | } | ||
void loop() { | void loop() { | ||
| − | + | for (int i = 0; i < LEDS_COUNT; i++) { | |
| + | strip.setLedColorData(i, 0, 70, 255); | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(50); | ||
| + | for (int i = 0; i < LEDS_COUNT; i++) { | ||
| + | strip.setLedColorData(i, 0, 0, 255); | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(50); | ||
| + | |||
| + | piece = digitalRead(33); | ||
| + | bouton = digitalRead(32); | ||
| + | if (piece) { | ||
| + | while (!bouton) { | ||
| + | for (int j = 0; j < 255; j += 4) { | ||
| + | for (int i = 0; i < LEDS_COUNT; i++) { | ||
| + | strip.setLedColorData(i, strip.Wheel((i * 256 / LEDS_COUNT + j) & 255)); | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(4); | ||
| + | } | ||
| + | |||
| + | bouton = digitalRead(32); | ||
| + | } | ||
| + | |||
| + | for (int i = 0; i < LEDS_COUNT; i++) { | ||
| + | strip.setLedColorData(i, 0, 255, 255); | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(80); | ||
| + | |||
| + | //script pour aléatoire | ||
| + | fruit1 = random(1, 5); | ||
| + | fruit2 = random(1, 5); | ||
| + | fruit3 = random(1, 5); | ||
| + | Serial.println("random"); | ||
| + | |||
| + | servo1.write(180); | ||
| + | Serial.println("servo1"); | ||
| + | servo2.write(180); | ||
| + | servo3.write(180); | ||
| + | delay(TS1 * 2 + TS1/4 * fruit1); | ||
| + | servo1.write(90); | ||
| + | delay(TS2 * 3 - (TS1 * 2 + TS1/4 * fruit1) + TS2/4 * fruit2); | ||
| + | servo2.write(90); | ||
| + | delay(TS3 * 4 - (TS2 * 3 - TS1 * 2 - TS1/4 * fruit1 + TS2/4 * fruit2) - (TS1 * 2 + TS1/4 * fruit1) + TS3/4 * fruit3); | ||
| + | servo3.write(90); | ||
| + | |||
| + | Serial.println("servo"); | ||
| + | |||
| + | for (int k = 0; k < 5; k++) { | ||
| + | for (int j = 0; j < 255; j += 2) { | ||
| + | for (int i = 0; i < LEDS_COUNT; i++) { | ||
| + | strip.setLedColorData(i, strip.Wheel((i * 256 / LEDS_COUNT + j) & 255)); | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(10); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | } | ||
} | } | ||
| + | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==étapes de fabrication== | ==étapes de fabrication== | ||
| − | + | ===étape 1=== | |
| + | Faire 3 troues dans la structure et faire un trou pour le bouton. | ||
| + | <gallery> | ||
| + | Machine-a-sous2.JPEG|Troues | ||
| + | Machine-a-sous8.JPEG|bouton | ||
| + | </gallery> | ||
| − | |||
===étape 2=== | ===étape 2=== | ||
| − | ===étape | + | Faire les cubes à 4 faces avec le support à servomoteur et les fixer à la colle chaude sur la structure. |
| + | |||
| + | Attention : Il faut toujours fixer les servo moteurs du meme côté du cube. Dans le cas contraire ils ne tournerons pas dans le même sens. | ||
| + | <gallery> | ||
| + | machine-a-sous1.JPEG|Patron cubes 5.5cm de côté (pas moins pour éviter qu'il touche le moteur) | ||
| + | machine-a-sous4.JPEG|Support servomoteur face avant | ||
| + | machine-a-sous5.JPEG|Support servomoteur face arrière | ||
| + | machine-a-sous6.JPEG|Support servomoteur fixé dans le cube (au pistolet à colle) | ||
| + | machine-a-sous7.JPEG|Servo moteur fixé à la colle chaude sur le support | ||
| + | </gallery> | ||
| + | Sur la 3e image on voit un morceau de carton dépasser derrière le morceau de carton qui permet de fixer le servomoteur. | ||
| + | Ce morceau permet de maintenir le cube droit. | ||
| + | |||
| + | ===étape 3=== | ||
| + | Faire le cablage ! Bonne chance ;) | ||
| + | |||
===Troubleshouting=== | ===Troubleshouting=== | ||
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ? | Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ? | ||
| + | Les erreurs à ne pas faire: | ||
| + | <gallery> | ||
| + | machine-a-sous3.JPEG|Image d'un patron du cube trop petit, le servomoteur touche le carton. Aïe! | ||
| + | </gallery> | ||
===Difficultés=== | ===Difficultés=== | ||
====Moteur et code==== | ====Moteur et code==== | ||
On a rencontrer quelques difficultés dans la conception du code. | On a rencontrer quelques difficultés dans la conception du code. | ||
| − | En effet ayant des servos moteurs de 360° on ne pouvais pas utiliser une rotation angulaire pour tomber pile sur nos face, on a donc du mesurer le temps sur 10 | + | En effet ayant des servos moteurs de 360° on ne pouvais pas utiliser une rotation angulaire pour tomber pile sur nos face, on a donc du mesurer le temps sur 10 tours. |
==Sources et documentation complémentaire== | ==Sources et documentation complémentaire== | ||
Version actuelle datée du 20 janvier 2026 à 16:02
Titre de la fiche expérience :
Sommaire
Présentation
Création d'une machine à sous qui gagne (plus) quand il fait "chaud" et qui perd (plus) quand il fait "froid". On parle bien de la température extérieur.
L'objectif est de préparer les enfants à dépenser leurs salaires au casino et de favoriser l'accoutumance aux jeux d'argent.
outil et matériel
- 1 ordinateur équipé arduinoIDE
- Grand carton (structure de la machine à sous)
- d'autres morceaux de carton
- 1 breadboard (plaque de câblage)
- carte esp32
- 3 servomoteurs
- 1 bouton poussoir
- pistolet à colle chaude
- 3 LED (de couleurs différente si possible)
- 3 trombones
- Un maximum de décorations pour une machine BLING BLING !!
Code Arduino
1
2 #define PIN 9
3 #include <Arduino_GFX_Library.h>
4
5 #include "Freenove_WS2812_Lib_for_ESP32.h"
6 #include <ESP32Servo.h>
7 #define LEDS_COUNT 20
8 #define LEDS_PIN 27
9 #define CHANNEL 0
10
11 Freenove_ESP32_WS2812 strip = Freenove_ESP32_WS2812(LEDS_COUNT, LEDS_PIN, CHANNEL, TYPE_GRB);
12
13 Servo servo1;
14 Servo servo2;
15 Servo servo3;
16
17 int TS1 = 1016;
18 int TS2 = 909;
19 int TS3 = 1065;
20
21 int bouton = 0;
22 int piece = 0;
23
24 int fruit1;
25 int fruit2;
26 int fruit3;
27
28 void setup() {
29 Serial.begin(9600);
30 servo1.attach(26); //Servomoteur
31 servo2.attach(25); //Servomoteur
32 servo3.attach(13); //Servomoteur
33
34 pinMode(32, INPUT); // Bouton
35 pinMode(33, INPUT); // Contacteur pour pièce
36
37 randomSeed(analogRead(0));
38
39 strip.begin();
40 strip.setBrightness(30);
41 }
42
43 void loop() {
44 for (int i = 0; i < LEDS_COUNT; i++) {
45 strip.setLedColorData(i, 0, 70, 255);
46 }
47 strip.show();
48 delay(50);
49 for (int i = 0; i < LEDS_COUNT; i++) {
50 strip.setLedColorData(i, 0, 0, 255);
51 }
52 strip.show();
53 delay(50);
54
55 piece = digitalRead(33);
56 bouton = digitalRead(32);
57
58 if (piece) {
59 while (!bouton) {
60 for (int j = 0; j < 255; j += 4) {
61 for (int i = 0; i < LEDS_COUNT; i++) {
62 strip.setLedColorData(i, strip.Wheel((i * 256 / LEDS_COUNT + j) & 255));
63 }
64 strip.show();
65 delay(4);
66 }
67
68 bouton = digitalRead(32);
69 }
70
71 for (int i = 0; i < LEDS_COUNT; i++) {
72 strip.setLedColorData(i, 0, 255, 255);
73 }
74 strip.show();
75 delay(80);
76
77 //script pour aléatoire
78 fruit1 = random(1, 5);
79 fruit2 = random(1, 5);
80 fruit3 = random(1, 5);
81 Serial.println("random");
82
83 servo1.write(180);
84 Serial.println("servo1");
85 servo2.write(180);
86 servo3.write(180);
87 delay(TS1 * 2 + TS1/4 * fruit1);
88 servo1.write(90);
89 delay(TS2 * 3 - (TS1 * 2 + TS1/4 * fruit1) + TS2/4 * fruit2);
90 servo2.write(90);
91 delay(TS3 * 4 - (TS2 * 3 - TS1 * 2 - TS1/4 * fruit1 + TS2/4 * fruit2) - (TS1 * 2 + TS1/4 * fruit1) + TS3/4 * fruit3);
92 servo3.write(90);
93
94 Serial.println("servo");
95
96 for (int k = 0; k < 5; k++) {
97 for (int j = 0; j < 255; j += 2) {
98 for (int i = 0; i < LEDS_COUNT; i++) {
99 strip.setLedColorData(i, strip.Wheel((i * 256 / LEDS_COUNT + j) & 255));
100 }
101 strip.show();
102 delay(10);
103 }
104 }
105
106 }
107 }
étapes de fabrication
étape 1
Faire 3 troues dans la structure et faire un trou pour le bouton.
étape 2
Faire les cubes à 4 faces avec le support à servomoteur et les fixer à la colle chaude sur la structure.
Attention : Il faut toujours fixer les servo moteurs du meme côté du cube. Dans le cas contraire ils ne tournerons pas dans le même sens.
Sur la 3e image on voit un morceau de carton dépasser derrière le morceau de carton qui permet de fixer le servomoteur. Ce morceau permet de maintenir le cube droit.
étape 3
Faire le cablage ! Bonne chance ;)
Troubleshouting
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ? Les erreurs à ne pas faire:
Difficultés
Moteur et code
On a rencontrer quelques difficultés dans la conception du code. En effet ayant des servos moteurs de 360° on ne pouvais pas utiliser une rotation angulaire pour tomber pile sur nos face, on a donc du mesurer le temps sur 10 tours.
Sources et documentation complémentaire
- Rédаctiоn et illustratiоn :
Pоur tоus vоs trаvauх, qu'ils sоient écrits оu visuels, l'utilisatiоn de l'intеlligеnce artificiеllе générativе, que сe sоit pоur le teхte оu les images, n'еst pas conseillé.
- Prоgrammаtiоn :
En сe qui cоncernе la prоgrаmmatiоn, il est еssentiеl de ne pаs faire dе l'IA vоtrе prеmier rеcоurs. Cоncеntrеz-vоus d'abоrd sur vоtre prоpre lоgiquе, votre experience еt lеs ressоurcеs disponibles.
- Transpаrence et dосumеntatiоn :
Si vоus utilisеz l'IA pоur déblоquer оu améliоrеr une pаrtiе de vоtre cоdе, il est cruciаl de l'indiquеr сlairеmеnt dans vоtre dосumentatiоn tеchniquе.
- Traçabilité :
Chаque ехtrait de cоde généré avес l'аidе de l'IA dоit êtrе accоmpagné de la sоurce, ainsi que du prоmpt eхact qui a été utilisé pоur sа créatiоn, afin d'аssurеr une évaluatiоn clаire dе vоtre prоcessus.
Elément de présentation
je met ici le document de présentation de mon projet