Bentolux 2023
Page de travail de la Bentolux des eaux.
Réalisée en parallèle du Village de Bentolux du TN4 (22-26 mai 2023).
Idées et prise de notes
Réaliser une Bentolux en lien avec l'animation des eaux pour l'été 2023 (et après !).
Elle permettra de discuter de manière ludique du cycle de l'eau et de nos déchets dans tout ça.
Au lieu de faire un interrupteur par déchet, faire défiler avec potentiomètre sur l'écran et valider le déchet choisie > indique une couleur et dit vers quelles eaux va notre déchet (eaux domestiques/épuration ou océan/mer).
Pour convertir des images en bitmap https://www.mischianti.org/2021/07/14/ssd1306-oled-display-draw-images-splash-and-animations-2/ Il faudra copier sur le modèle de l'étoile du programme de test > sortir un code en byte sur le site et faire 'testdrawbitmap'
Ressource code pour potentiomètre https://arduino.developpez.com/tutoriels/arduino-a-l-ecole/?page=projet-10-le-potentiometre
Ressource code Neopixel https://arduino-france.site/adafruit-neopixel/ et https://arduino-france.site/neopixel-ring/
Branchement > 5V, D1, GND
Ressource gestion interrupteur https://www.locoduino.org/spip.php?article176 et https://arduino-france.site/bouton-poussoir/
Réussi à faire correspondre 'appuyer bouton 1' et neopixel rouge, puis 'appuyer bouton 2' et neopixel bleu. Problème : il faut rester enfoncé pour maintenir couleur.
Neopixel "tourne" pour patienter pour réponse. > utilisation du code "Exemples > Adafruit Neopixel > strandtest_wheel", retrait des lignes qui me sont inutiles et adaptation des couleurs.
Délai choix écran > permet de "valider" et fait tourner tel ou tel servo.
Notes manuscrites et photos essais
Parties de code
Dessiner maison sur écran C2I 128 x 64 px :
void tracerMaison(){ // MAISON // toit display.drawLine(40, 32, 63, 0, WHITE); // Ligne du toit gauche display.drawLine(63, 0, 90, 32, WHITE); // Ligne du toit droite // Dessiner les murs display.drawRect(41, 32, 50, 32, WHITE); // Dessiner la porte display.drawRect(48, 48, 10, 16, WHITE); }
Faire allumer toutes les LED d'un neopixel 24 LED en blanc :
#include <Adafruit_NeoPixel.h> #define NEOPIXEL_PIN 6 #define NEOPIXEL_COUNT 24 Adafruit_NeoPixel ring(NEOPIXEL_COUNT, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800); void setup() { ring.begin(); ring.show(); // Initialize all pixels to off } void loop() { // Allumer les 24 LED en blanc for (int i = 0; i < NEOPIXEL_COUNT; i++) { ring.setPixelColor(i, ring.Color(50, 50, 50)); } // Mettre à jour le ring NeoPixel ring.show(); }
Roue qui "Patiente" :
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 6 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN, NEO_GRB + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first. void setup() { // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // End of trinket special code strip.begin(); strip.setBrightness(50); strip.show(); // Initialize all pixels to 'off' } void loop() { // Some example procedures showing how to display to the pixels: colorWipe(strip.Color(255, 255, 255), 50); // White colorWipe(strip.Color(0, 0, 0), 50); // Black } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } }