ENIB 2024 : Apuie viiiiite
Révision datée du 30 janvier 2024 à 20:18 par Best coder (discussion | contributions) (→Mettre du code Arduino)
Titre de la fiche expérience :
Sommaire
description (résumé)
éventuelle photo de l'équipe
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
- https://openledrace.net
- https://www.wikidebrouillard.org/wiki/LED_RACER
- https://projecthub.arduino.cc/gbarbarov/open-led-race-bb534b