ENIB 2024 : Apuie viiiiite

De Les Fabriques du Ponant
Révision datée du 30 janvier 2024 à 20:18 par Best coder (discussion | contributions) (Mettre du code Arduino)
Aller à : navigation, rechercher

Titre de la fiche expérience :

description (résumé)

éventuelle photo de l'équipe


Pain.jpg

Introduction

éventuelle vidéo

outil et matériel

fichiers à joindre

code, ficher d'impression 3D, de découpe laser ou vinyle, ...

Code Arduino

  1  
  2 #include <Adafruit_NeoPixel.h>
  3 
  4 #define LED_STRIP_PIN 2
  5 #define NUM_LEDS 60
  6 #define BUZZER_PIN 3
  7 
  8 // Array to store the frequency of notes
  9 int notes[] = {262, 294, 330, 349, 392, 440, 494, 523};
 10 
 11 Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_STRIP_PIN, NEO_GRB + NEO_KHZ800);
 12 
 13 int lastButtonState[2] = {LOW};          // Array to store the previous state of each button
 14 unsigned long lastDebounceTime[2] = {0}; // Array to store the last debounce time of each button
 15 unsigned long buttonPressTime[2] = {0};  // Array to store the press time of each button
 16 unsigned long delayStart = 0;            // Declaration of the global variable
 17 const int BTN[] = {6, 7};
 18 int x = 0;
 19 int y = 0;
 20 
 21 /*******************************************************************
 22  * @name       :setup
 23  * @date       :2024-01-30
 24  * @function   :setup
 25  * @parameters :None
 26  * @retvalue   :None
 27 ********************************************************************/ 
 28 void setup() 
 29 {
 30   pinMode(BTN[0], INPUT);
 31   pinMode(BTN[1], INPUT);
 32   strip.begin();
 33   strip.show();  // Initialize all pixels to 'off'
 34   pinMode(BUZZER_PIN, OUTPUT);
 35 }
 36 
 37 /*******************************************************************
 38  * @name       :loop
 39  * @date       :2024-01-30
 40  * @function   :loop
 41  * @parameters :None
 42  * @retvalue   :None
 43 ********************************************************************/ 
 44 void loop() 
 45 {
 46   // If there is a click
 47   if (click(0)) x++;
 48   if (click(1)) y++;
 49 
 50   // Set other pixels to 0
 51   for (int i = 0; i < NUM_LEDS; i++) strip.setPixelColor(i, 0);
 52 
 53   // Send pixels ON
 54   if (x == y)
 55     strip.setPixelColor(y, strip.Color(10, 0, 10));
 56   else 
 57   {
 58     strip.setPixelColor(x, strip.Color(10, 0, 0));
 59     strip.setPixelColor(y, strip.Color(0, 0, 10));
 60   }
 61   strip.show();
 62 
 63   if (x == NUM_LEDS) {
 64     for (int i = NUM_LEDS; i >= 0; --i) 
 65     {
 66       for (int j = 0; j < NUM_LEDS; j++) strip.setPixelColor(j, 0);
 67       strip.setPixelColor(i, strip.Color(10, 0, 0));
 68       strip.show();
 69       delay(10);
 70     }
 71     x = 0;
 72     y = 0;
 73     playMelody();
 74   }
 75 
 76   if (y == NUM_LEDS) 
 77   {
 78     for (int i = NUM_LEDS; i >= 0; --i) 
 79     {
 80       for (int j = 0; j < NUM_LEDS; j++) strip.setPixelColor(j, 0);
 81       strip.setPixelColor(i, strip.Color(0, 0, 10));
 82       strip.show();
 83       delay(10);
 84     }
 85     y = 0;
 86     x = 0;
 87     playMelody();
 88     delay(250);
 89   }
 90 }
 91 
 92 /*******************************************************************
 93  * @name       :click
 94  * @date       :2024-01-30
 95  * @function   :click
 96  * @parameters :None
 97  * @retvalue   :0 or 1
 98 ********************************************************************/ 
 99 bool click(int num) 
100 {
101   int buttonState = digitalRead(BTN[num]);
102 
103   if (buttonState != lastButtonState[num]) 
104   {
105     lastDebounceTime[num] = millis();
106 
107     if (buttonState == HIGH) 
108     {
109       lastButtonState[num] = buttonState;
110       return true;
111     }
112   }
113 
114   lastButtonState[num] = buttonState;
115   return false;
116 }
117 
118 
119 /*******************************************************************
120  * @name       :playMelody
121  * @date       :2024-01-30
122  * @function   :Do a victory melody
123  * @parameters :None
124  * @retvalue   :None
125 ********************************************************************/ 
126 void playMelody() {
127   // Iterate through all notes in the melody
128   for (int i = 0; i < 8; i++) 
129   {
130     // Play the note
131     tone(BUZZER_PIN, notes[i], 200);
132 
133     // Wait for the duration of the note plus a short delay
134     delay(200);
135 
136     // Stop the sound
137     noTone(BUZZER_PIN);
138 
139     // Pause between notes
140     delay(2);
141   }
142 }

étapes de fabrication

indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)

étape 1

étape 2

étape ...

troubleshouting

quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?

Sources et documentation complémentaire

ne pas modifier sous cette ligne