ENIB 2022 - groupe B : BreizhCarrousel : Différence entre versions
Ligne 157 : | Ligne 157 : | ||
== Les pistes d'améliorations ? == | == Les pistes d'améliorations ? == | ||
On aurai pu ajouter de la musique avec un lecteur MP3, et nous aurions voulu ajouter des cycles en faisant varier la vitesse. La fixation sur l'axe moteur peut aussi être amélioré. | On aurai pu ajouter de la musique avec un lecteur MP3, et nous aurions voulu ajouter des cycles en faisant varier la vitesse. La fixation sur l'axe moteur peut aussi être amélioré. | ||
+ | |||
+ | == Ressources : == | ||
+ | Vidéo youtube : #35 arduino moteur à courant continu et driver l298n tuto en français. | ||
+ | Vidéo youtube : #51 Arduino comment faire une guirlande de led rgb ou un ruban adressable ws2812b tuto en français | ||
+ | De la chaîne Youtube Lasdi . | ||
+ | |||
==Catégories== | ==Catégories== | ||
[[Catégorie:Enib2022]] | [[Catégorie:Enib2022]] |
Version du 18 janvier 2022 à 11:42
Sommaire
photo de l'équipe
Que fait ce projet ?
Le projet consiste en un carrousel de fête foraine. Il s'agit d'un manège qui tourne sur lui même à l'aide d'un petit moteur. Il est commandé par une carte arduino qui va gérer le moteur et les leds colorées du manège.
Liste des composants
- cerveau moteur
- fils
- bandeau led
- medium 3mm (une plaque de 600x300)
- interrupteur
- petits animaux
- stickers colorés
- arduino wemos mini
- pont en H
- plaque électronique d'essais
- carton
- entretoise
Code
#include <FastLED.h> #define LED_PIN D5 #define NUM_LEDS 40 #define BRIGHTNESS 64 #define LED_TYPE WS2811 #define COLOR_ORDER GRB CRGB leds[NUM_LEDS]; #define UPDATES_PER_SECOND 100 int in1 = D8; CRGBPalette16 currentPalette; TBlendType currentBlending; extern CRGBPalette16 myRedWhiteBluePalette; extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM; void setup() { delay( 3000 ); // power-up safety delay FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); FastLED.setBrightness( BRIGHTNESS ); pinMode(in1, OUTPUT); currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; } void loop() { digitalWrite(in1, 1); ChangePalettePeriodically(); static uint8_t startIndex = 0; startIndex = startIndex + 1; /* motion speed */ FillLEDsFromPaletteColors( startIndex); FastLED.show(); FastLED.delay(1000 / UPDATES_PER_SECOND); } void FillLEDsFromPaletteColors( uint8_t colorIndex) { uint8_t brightness = 255; for( int i = 0; i < NUM_LEDS; i++) { leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending); colorIndex += 3; } } void ChangePalettePeriodically() { uint8_t secondHand = (millis() / 1000) % 60; static uint8_t lastSecond = 99; if( lastSecond != secondHand) { lastSecond = secondHand; if( secondHand == 0) { currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; } if( secondHand == 10) { currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND; } if( secondHand == 15) { currentPalette = RainbowStripeColors_p; currentBlending = LINEARBLEND; } if( secondHand == 20) { SetupPurpleAndGreenPalette(); currentBlending = LINEARBLEND; } if( secondHand == 25) { SetupTotallyRandomPalette(); currentBlending = LINEARBLEND; } if( secondHand == 30) { SetupBlackAndWhiteStripedPalette(); currentBlending = NOBLEND; } if( secondHand == 35) { SetupBlackAndWhiteStripedPalette(); currentBlending = LINEARBLEND; } if( secondHand == 40) { currentPalette = CloudColors_p; currentBlending = LINEARBLEND; } if( secondHand == 45) { currentPalette = PartyColors_p; currentBlending = LINEARBLEND; } if( secondHand == 50) { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; } if( secondHand == 55) { currentPalette = myRedWhiteBluePalette_p; currentBlending = LINEARBLEND; } } } // This function fills the palette with totally random colors. void SetupTotallyRandomPalette() { for( int i = 0; i < 16; i++) { currentPalette[i] = CHSV( random8(), 255, random8()); } } void SetupBlackAndWhiteStripedPalette() { // 'black out' all 16 palette entries... fill_solid( currentPalette, 16, CRGB::Black); // and set every fourth one to white. currentPalette[0] = CRGB::White; currentPalette[4] = CRGB::White; currentPalette[8] = CRGB::White; currentPalette[12] = CRGB::White; } // This function sets up a palette of purple and green stripes. void SetupPurpleAndGreenPalette() { CRGB purple = CHSV( HUE_PURPLE, 255, 255); CRGB green = CHSV( HUE_GREEN, 255, 255); CRGB black = CRGB::Black; currentPalette = CRGBPalette16( green, green, black, black, purple, purple, black, black, green, green, black, black, purple, purple, black, black ); } const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM = { CRGB::Red, CRGB::Gray, // 'white' is too bright compared to red and blue CRGB::Blue, CRGB::Black, CRGB::Red, CRGB::Gray, CRGB::Blue, CRGB::Black, CRGB::Red, CRGB::Red, CRGB::Gray, CRGB::Gray, CRGB::Blue, CRGB::Blue, CRGB::Black, CRGB::Black };
Les problématiques ?
Nous avons eu quelques problèmes au moment du codage. Mais le problème principal à été la stabilisation de notre manège sur l'axe moteur, cela peut être optimisé.
Les pistes d'améliorations ?
On aurai pu ajouter de la musique avec un lecteur MP3, et nous aurions voulu ajouter des cycles en faisant varier la vitesse. La fixation sur l'axe moteur peut aussi être amélioré.
Ressources :
Vidéo youtube : #35 arduino moteur à courant continu et driver l298n tuto en français. Vidéo youtube : #51 Arduino comment faire une guirlande de led rgb ou un ruban adressable ws2812b tuto en français De la chaîne Youtube Lasdi .