C'est l'hiver ! Hiver.gif

ENIB 2026 : Enibingo : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(fichiers à joindre)
(Présentation)
 
(9 révisions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
 
==Présentation==
 
==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.
 
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-sous8.JPEG|200px]]
+
[[Fichier:Machine-a-sous9.JPEG|200px]]
 +
[[Fichier:Machine-a-sous10.JPEG|200px]]
  
 
==outil et matériel==
 
==outil et matériel==
Ligne 19 : Ligne 22 :
 
*Un maximum de décorations pour une machine BLING BLING !!
 
*Un maximum de décorations pour une machine BLING BLING !!
  
==fichiers à joindre==
+
==Code Arduino==
CODE
 
===Mettre du 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() {
   // put your setup code here, to run once:
+
   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() {
   // put your main code here, to run repeatedly:
+
   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>
Ligne 61 : Ligne 157 :
  
 
===étape 3===
 
===étape 3===
 +
Faire le cablage ! Bonne chance ;)
  
 
===Troubleshouting===
 
===Troubleshouting===
Ligne 72 : Ligne 169 :
 
====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 tourd
+
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 :

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.

Groupe enibingo.jpeg Machine-a-sous9.JPEG Machine-a-sous10.JPEG

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

ne pas modifier sous cette ligne