Go Down

Topic: Création d'un timer lumineux sur un miroir (Read 330 times) previous topic - next topic

ticoq

Hello à tous !

Le projet est terminé et en place :)
Ça m'aura pris un peu de temps pour récupérer tout le matériel, tester diverses config et m'assurer qu'il n'y ai pas de bug dans le code.

J'ai un peu modifié le circuit électrique en partant sur un Arduino nano et en branchant le 5V/gnd sur 2 bornes du bandeau led. J'ai donc du rajouter un condensateur sur le chemin :


Je vous met aussi une petite vidéo de démo : https://www.youtube.com/watch?v=WoKyiEMQklQ

Et pour le code source, c'est là :
Code: [Select]

#include <Adafruit_NeoPixel.h>

int pinBouton = 5;
int pinData = 7;
float nbLed = 205.0;
float nbSec = 60.0;
int laps = 3;
int currentLap = 1;
int brightness = 100;
int timer = 100;
long launchChrono = 0;
long endLap = nbSec*timer*10;
int color[3][3]={255,0,0,
                 0,0,255,
                 255,255,0};


Adafruit_NeoPixel strip = Adafruit_NeoPixel(nbLed, pinData, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(9600);
  Serial.println("lancement du programme");
  pinMode(pinBouton,INPUT_PULLUP);
  setWhite();
}


void loop() {
  boolean etatBouton=digitalRead(pinBouton);
  if(!etatBouton)  {
    launchChrono = timer;
    currentLap = 1;
  }
  if(launchChrono) {scenario();}
  delay(timer);
}

void scenario(){
  if (launchChrono == timer && currentLap == 1){
      Serial.println("lancement du scénario");
      setWhite();
  }

  int ledToChange = round(launchChrono/((nbSec/nbLed)*timer*10));
  Serial.print(" | launchChrono : ");   
  Serial.print(launchChrono);
  Serial.print(" | ledToChange : ");   
  Serial.println(ledToChange);
  for(int i = 0; i <= ledToChange; i++ ) {
    int j = currentLap-1;
    int k = i+5;
    strip.setPixelColor(k, color[j][0], color[j][1], color[j][2]);
  }
  strip.setBrightness(brightness);
  strip.show(); // on affiche

  if (launchChrono == endLap && currentLap != laps){
    launchChrono = timer;
    currentLap++;
  } else {
    launchChrono += timer;
  }

  // FIN DU SCENARIO
  if (launchChrono > endLap && currentLap == laps) {
    launchChrono = 0;
    currentLap = 1;
    setWhite();
    Serial.println("Fin du scénario");
  }
}

void setWhite(){ 
  strip.begin();
  for(int i = 0; i <= nbLed; i++ ) {
    int k = i+5;
    strip.setPixelColor(k, 255, 255, 255);
    //delay(10);
  }
    strip.setBrightness(brightness);
    strip.show();
}


Ce code peut bien sur être modifié, amélioré, personnalisé !
Il y a certains éléments qui dépendent de mon besoin, comme par exemple le fait de ne pas allumer les 5 premières led car elles sont derrière le miroir, et donc non visible.

supercc

C'est bien sympa ! Il y a une rubrique projet fini dans le forum, histoire qu'on retrouve plus facilement les projets qui fonctionnent ;-)

J-M-L

Belle réalisation - merci pour le partage ! +1 Karma

(et oui, éventuellement postez un tuto dans les projets finis)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up