Go Down

Topic: Leds strip/Projet phares arrière. Problème code pour clignoteur (Read 1 time) previous topic - next topic

Toinit

Bonjour a tous. Mon projet est de remplacer les ampoules des phares arrieres de ma voiture, par des bandes leds.
Ils y aura 2 modèles de bandes dans chaque phares (ws2812b rgb  et sk6812 rgbw), qui seront
controlées par une carte arduino uno r3 en utilisant la bibliothèque adafruit neopixel.( je compte peut
être utiliser une carte olimex dans le futur, "soucis de bon fonctionnement").
J'aimerais utiliser le courant 12v qui sort de mon levier de clignotant, (prendre le courant avant le relais
du clignoteur pour avoir un courant maintenu, (cela supprimera la temporisation on, off du
relais du clignoteur)). Ce courant 12v, je compte le transformer en 5v en utilisant un ubec 5v (pas trop
cher) pour pouvoir le brancher sur l'entrée concernée de la carte arduino. Je compte utiliser des ubec 5v
pour chaque courant de commandes, cet a dire, 1 pour cligno gauche, 1 pour cligno droit,  1 pour
warning cligno,   1 pour freins,  1 pour marche arrière. Dans le futur, j'aimerais ajouter 2 commandes
supplémentaires pour lock et unlock encore 2 en plus. Ca fait 7 commandes qu'il faudra transformer le courant 12v en 5v pour pouvoir les brancher sur les entrées arduino. (7 ubec c'est beaucoup).
Ma première question est de savoir si quelqu'un pourrais m'aider a résoudre ce problème d'alim
d'entrées de commandes. Y a t il un moyen plus simple pour passer mes courant de commandes 12v en
5v?

Mon deuxième problème, c'est le code.
J'ai 4 boutons pour simuler l'arriver de courant sur les entrées de la carte.  cligno droit, cligno gauche
,freins, et marche arrière.
Les clignos sont dynamique, donc le code des clignos comporte des boucle for avec delay. Quand j'appuie
sur le bouton freins juste après avoir appuyer sur le BP cligno, les freins ne s'allume qu'au moment ou
ma boucle for des clignos se termine. Même problème pour la marche arrière. Même chose  
quand je change d'un clignoteur a l'autre, la boucle du premier cligno doit se terminer pour que l'autre
commence a clignoter.

Comment supprimer ce décalage de temps (1 a 2 secondes) et faire en sorte que les leds s'allument instantanément dès qu'on bascule l'appuie d'un bouton a un autre?

voici mon code et un schéma de mon projet


Code: [Select]


#include <Adafruit_NeoPixel.h>
#define NUMPIXELS      5


Adafruit_NeoPixel clignoGauche = Adafruit_NeoPixel(NUMPIXELS, 5, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel clignoDroit = Adafruit_NeoPixel(NUMPIXELS, 6, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel freins = Adafruit_NeoPixel(NUMPIXELS, 11, NEO_RGB + NEO_KHZ800);


boolean etat_ClignoGauche = 0;
boolean etat_ClignoDroit = 0;
boolean etat_Freins = 0;


int pin_ClignoGauche = 2;
int pin_ClignoDroit = 7;
int pin_Freins = 4;


 
void setup()
{
  pinMode(pin_ClignoGauche,INPUT);
  pinMode(pin_ClignoDroit,INPUT);
  pinMode(pin_Freins,INPUT);
      

  clignoGauche.begin();
  clignoDroit.begin();
  freins.begin();

  clignoGauche.show();
  clignoDroit.show();
  freins.show();
  

void loop()
{
  etat_ClignoGauche = digitalRead(pin_ClignoGauche);
  etat_ClignoDroit = digitalRead(pin_ClignoDroit);
  etat_Freins = digitalRead(pin_Freins);


     if(etat_ClignoGauche==1 && etat_ClignoDroit==0)
         {
           codeClignoGauche();
         }


            if(etat_ClignoDroit==1 && etat_ClignoGauche==0)
                {
                  codeClignoDroit();
                }


                   if(etat_ClignoGauche==1 && etat_ClignoDroit==1)
                       {
                         code_4_Clignotant();
                       }

                                        if(etat_Freins==1)
                                            {
                                              codeFreins();
                                            }
                                               else
                                                   {
                                                    codeFreinsEteint();
                                                   }
                                                  
}


void codeClignoGauche()
{
        for(int i=0; i<=4; i++)                                    
           {
             clignoGauche.setPixelColor(i, clignoGauche.Color(80,255,0));
             clignoGauche.show();
             delay(30);
           }
      delay(250);
            for(int i=0; i<=4; i++)
               {
                 clignoGauche.setPixelColor(i, clignoGauche.Color(0,0,0));
                 clignoGauche.show();
                 delay(30);
               }
      delay(250);
}


void codeClignoDroit()
{
      for(int i=0; i<=4; i++)                                    
           {
             clignoDroit.setPixelColor(i, clignoDroit.Color(80,255,0));
             clignoDroit.show();
             delay(30);
           }
      delay(250);
            for(int i=0; i<=4; i++)
               {
                 clignoDroit.setPixelColor(i, clignoDroit.Color(0,0,0));
                 clignoDroit.show();
                 delay(30);
               }
      delay(250);
}



void code_4_Clignotant()
{
      for(int i=0; i<=4; i++)
         {
           clignoGauche.setPixelColor(i, clignoGauche.Color(70,255,0));
           clignoDroit.setPixelColor(i, clignoDroit.Color(70,255,0));
           clignoGauche.show();
           clignoDroit.show();
           delay(30);
         }
delay(250);
          for(int i=0; i<=4; i++)
             {
               clignoGauche.setPixelColor(i, clignoGauche.Color(0,0,0));
               clignoDroit.setPixelColor(i, clignoDroit.Color(0,0,0));
               clignoGauche.show();
               clignoDroit.show();
               delay(30);    
             }
delay(250);            
}



void codeFreins()
{
      for(int i=0; i<=2; i++)
         {
           freins.setPixelColor(i, freins.Color(0,255,0));
           freins.setBrightness(255);
           freins.show();
         }
            for(int i=4; i>=0; i--)
               {
                 phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0,255,0));
                 phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0,255,0));
                 phareFreinGauche.setBrightness(255);
                 phareFreinDroit.setBrightness(255);
                 phareFreinGauche.show();                  
                 phareFreinDroit.show();
               }
}


void codeFreinsEteint()
{
      for(int i=0; i<=4; i++)
         {
           phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0,80,0));
           phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0,80,0));
           phareFreinGauche.setBrightness(80);
           phareFreinDroit.setBrightness(80);
           phareFreinGauche.show();                  
           phareFreinDroit.show();
         }
            for(int i=0; i<=2; i++)
               {
                 freins.setPixelColor(i, freins.Color(0,80,0));
                 freins.setBrightness(80);
                 freins.show();
               }

}








J-M-L

il faut virer les  delay() donc utiliser la technique de millis() (cf l'exemple blink without millis() ) et une machine à états (cf mon tuto sur ce sujet éventuellement)
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

b2r

Quote
Ma première question est de savoir si quelqu'un pourrais m'aider a résoudre ce problème d'alim
d'entrées de commandes. Y a t il un moyen plus simple pour passer mes courant de commandes 12v en
5v?
Bonjour la piste pour éviter d'avoir à abaisser la tension sur chacune de tes commandes, serait de n'utiliser qu'un seul ubec pour alimenter ton arduino et faire un système de commutation avec des transistor mosfet ou optocoupleurs ou des relais

Avec ta solution initiale il faudra également faire gaffe à l'ampérage en entrée de ton arduino.

Inutile de préciser (car du doit déja sans doute le savoir) que tu seras recalé au CT mais ce n'est pas l'objet du forum :smiley-mr-green:

Toinit

Merci a toi J-M-L, je vais de suite aller voir cette technique millis(), et en même temps, faire un tour son ton tuto.

Merci aussi b2r, j'irais voir comment fonctionnent ces composants, je déja visionné un tuto sur les mosfet, ca a l'air intéressant.

Encore merci pour vos réponses, je donnerai des nouvelles quand ce sera réglé.

lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Toinit

Je n'arrive pas à remplacer mes delay par cette satanée fonction millis() dans mon code. J'ai lu le tutoriel de J-M-L et d',eskimon mais pas moyen que mon cerveau comprenne l'astuce. Quelle frustration d'être bête. Je m'arrache les cheveux. Svp, aider moi à comprendre cette fonction millis() et a l'appliquer dans mon code. J'aimerais vraiment capter le fonctionnement de millis() car j'en aurais encore besoin pour de futur codes. Je posterai mon code en entier ce soir.

Toinit

voila mon code en entier
Code: [Select]
#include <Adafruit_NeoPixel.h>
#define NUMPIXELS      5


Adafruit_NeoPixel clignoGauche = Adafruit_NeoPixel(NUMPIXELS, 5, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel clignoDroit = Adafruit_NeoPixel(NUMPIXELS, 6, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel phareFreinGauche = Adafruit_NeoPixel(NUMPIXELS, 9, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel phareFreinDroit = Adafruit_NeoPixel(NUMPIXELS, 10, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel freins = Adafruit_NeoPixel(NUMPIXELS, 11, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel marcheArriereGauche = Adafruit_NeoPixel(NUMPIXELS, 12, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel marcheArriereDroit = Adafruit_NeoPixel(NUMPIXELS, 13, NEO_RGB + NEO_KHZ800);

boolean etat_ClignoGauche = 0;
boolean etat_ClignoDroit = 0;
boolean etat_WarningCligno = 0;
boolean etat_Freins = 0;
boolean etat_MarcheArriere = 0;

int pin_ClignoGauche = 2;
int pin_ClignoDroit = 7;
int pin_WarningCligno = 8;
int pin_Freins = 4;
int pin_MarcheArriere = 3;

 
void setup()
{
  pinMode(pin_ClignoGauche,INPUT_PULLUP);
  pinMode(pin_ClignoDroit,INPUT_PULLUP);
  pinMode(pin_WarningCligno,INPUT_PULLUP);
  pinMode(pin_Freins,INPUT_PULLUP);
  pinMode(pin_MarcheArriere,INPUT_PULLUP);     

  clignoGauche.begin();
  clignoDroit.begin();
  freins.begin();
  phareFreinGauche.begin();
  phareFreinDroit.begin();
  marcheArriereGauche.begin();
  marcheArriereDroit.begin();

  clignoGauche.show();
  clignoDroit.show();
  freins.show();
  phareFreinGauche.show();
  phareFreinDroit.show();
  marcheArriereGauche.show();
  marcheArriereDroit.show();
   
    for(int i=0; i<=4; i++)
       {
         phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0,40,0));
         phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0,40,0));
         delay(80);
         phareFreinGauche.show();
         phareFreinDroit.show();
         
       }
          for(int i=1; i<=2; i++)
             {
               freins.setPixelColor(i, freins.Color(0,40,0));
               delay(80);
               freins.show();
             }

             delay(200);

                for(int i=2; i>=1; i--)
                   {
                     freins.setPixelColor(i, freins.Color(0,255,0));
                     delay(45);
                     freins.show();
                   }
                      for(int i=4; i>=0; i--)
                         {
                           phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0,255,0));
                           phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0,255,0));
                           delay(45);
                           phareFreinGauche.show();
                           phareFreinDroit.show();
                         }

                         delay(1000);

                            for(int i=0; i<=4; i++)
                               {
                                 phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0,0,0));
                                 phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0,0,0));
                                 phareFreinGauche.show();
                                 phareFreinDroit.show();
                               }
                                  for(int i=0; i<=2; i++)
                                     {
                                       freins.setPixelColor(i, freins.Color(0,0,0));
                                       freins.show();
                                     }

                                     delay(600);

                                        for(int a=36; a<=80; a++)
                                           {
                                           
                                                delay(20);
                                                for(int i=0; i<=2; i++)
                                                   {
                                                    freins.setPixelColor(i, freins.Color(0,a,0));
                                                    freins.setBrightness(a);
                                                    freins.show();
                                                   }
                                                      for(int i=0; i<=4; i++)
                                                         {
                                                           phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0,a,0));
                                                           phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0,a,0));
                                                           phareFreinGauche.setBrightness(a);
                                                           phareFreinDroit.setBrightness(a);
                                                           phareFreinGauche.show();                   
                                                           phareFreinDroit.show();
                                                         }
                                            }
}

lesept

Fais un CTRL T dans l'IDE pour corriger l'indentation. Il manque la loop aussi...
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Toinit

désolé, voila mon code en entier
Code: [Select]

#include <Adafruit_NeoPixel.h>
#define NUMPIXELS      5


Adafruit_NeoPixel clignoGauche = Adafruit_NeoPixel(NUMPIXELS, 5, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel clignoDroit = Adafruit_NeoPixel(NUMPIXELS, 6, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel phareFreinGauche = Adafruit_NeoPixel(NUMPIXELS, 9, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel phareFreinDroit = Adafruit_NeoPixel(NUMPIXELS, 10, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel freins = Adafruit_NeoPixel(NUMPIXELS, 11, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel marcheArriereGauche = Adafruit_NeoPixel(NUMPIXELS, 12, NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel marcheArriereDroit = Adafruit_NeoPixel(NUMPIXELS, 13, NEO_RGB + NEO_KHZ800);

boolean etat_ClignoGauche = 0;
boolean etat_ClignoDroit = 0;
boolean etat_WarningCligno = 0;
boolean etat_Freins = 0;
boolean etat_MarcheArriere = 0;

int pin_ClignoGauche = 2;
int pin_ClignoDroit = 7;
int pin_WarningCligno = 8;
int pin_Freins = 4;
int pin_MarcheArriere = 3;


void setup()
{
  pinMode(pin_ClignoGauche, INPUT_PULLUP);
  pinMode(pin_ClignoDroit, INPUT_PULLUP);
  pinMode(pin_WarningCligno, INPUT_PULLUP);
  pinMode(pin_Freins, INPUT_PULLUP);
  pinMode(pin_MarcheArriere, INPUT_PULLUP);

  clignoGauche.begin();
  clignoDroit.begin();
  freins.begin();
  phareFreinGauche.begin();
  phareFreinDroit.begin();
  marcheArriereGauche.begin();
  marcheArriereDroit.begin();

  clignoGauche.show();
  clignoDroit.show();
  freins.show();
  phareFreinGauche.show();
  phareFreinDroit.show();
  marcheArriereGauche.show();
  marcheArriereDroit.show();

  for (int i = 0; i <= 4; i++)
  {
    phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0, 40, 0));
    phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0, 40, 0));
    delay(80);
    phareFreinGauche.show();
    phareFreinDroit.show();

  }
  for (int i = 1; i <= 2; i++)
  {
    freins.setPixelColor(i, freins.Color(0, 40, 0));
    delay(80);
    freins.show();
  }

  delay(200);

  for (int i = 2; i >= 1; i--)
  {
    freins.setPixelColor(i, freins.Color(0, 255, 0));
    delay(45);
    freins.show();
  }
  for (int i = 4; i >= 0; i--)
  {
    phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0, 255, 0));
    phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0, 255, 0));
    delay(45);
    phareFreinGauche.show();
    phareFreinDroit.show();
  }

  delay(1000);

  for (int i = 0; i <= 4; i++)
  {
    phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0, 0, 0));
    phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0, 0, 0));
    phareFreinGauche.show();
    phareFreinDroit.show();
  }
  for (int i = 0; i <= 2; i++)
  {
    freins.setPixelColor(i, freins.Color(0, 0, 0));
    freins.show();
  }

  delay(600);

  for (int a = 36; a <= 80; a++)
  {

    delay(20);
    for (int i = 0; i <= 2; i++)
    {
      freins.setPixelColor(i, freins.Color(0, a, 0));
      freins.setBrightness(a);
      freins.show();
    }
    for (int i = 0; i <= 4; i++)
    {
      phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0, a, 0));
      phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0, a, 0));
      phareFreinGauche.setBrightness(a);
      phareFreinDroit.setBrightness(a);
      phareFreinGauche.show();
      phareFreinDroit.show();
    }
  }
}


void loop()
{
  etat_ClignoGauche = digitalRead(pin_ClignoGauche);
  etat_ClignoDroit = digitalRead(pin_ClignoDroit);
  etat_WarningCligno = digitalRead(pin_WarningCligno);
  etat_Freins = digitalRead(pin_Freins);
  etat_MarcheArriere = digitalRead(pin_MarcheArriere);

  if (etat_ClignoGauche == 0 && etat_ClignoDroit == 1 && etat_WarningCligno == 1)
  {
    codeClignoGauche();
  }


  if (etat_ClignoDroit == 0 && etat_ClignoGauche == 1 && etat_WarningCligno == 1)
  {
    codeClignoDroit();
  }


  if (etat_WarningCligno == 0)
  {

    code_4_Clignotant();
  }


  if (etat_MarcheArriere == 0)
  {
    codeMarcheArriere();
  }
  else
  {
    codeMarcheArriereEteint();
  }


  if (etat_Freins == 0)
  {
    codeFreins();
  }
  else
  {
    codeFreinsEteint();
  }

}


void codeClignoGauche()
{
  for (int i = 0; i <= 4; i++)
  {
    clignoGauche.setPixelColor(i, clignoGauche.Color(80, 255, 0));
    clignoGauche.show();
    delay(30);
  }
  delay(250);
  for (int i = 0; i <= 4; i++)
  {
    clignoGauche.setPixelColor(i, clignoGauche.Color(0, 0, 0));
    clignoGauche.show();
    delay(30);
  }
  delay(250);
}


void codeClignoDroit()
{
  for (int i = 0; i <= 4; i++)
  {
    clignoDroit.setPixelColor(i, clignoDroit.Color(80, 255, 0));
    clignoDroit.show();
    delay(30);
  }
  delay(250);
  for (int i = 0; i <= 4; i++)
  {
    clignoDroit.setPixelColor(i, clignoDroit.Color(0, 0, 0));
    clignoDroit.show();
    delay(30);
  }
  delay(250);
}



void code_4_Clignotant()
{
  for (int i = 0; i <= 4; i++)
  {
    clignoGauche.setPixelColor(i, clignoGauche.Color(70, 255, 0));
    clignoDroit.setPixelColor(i, clignoDroit.Color(70, 255, 0));
    clignoGauche.show();
    clignoDroit.show();
    delay(30);
  }
  delay(250);
  for (int i = 0; i <= 4; i++)
  {
    clignoGauche.setPixelColor(i, clignoGauche.Color(0, 0, 0));
    clignoDroit.setPixelColor(i, clignoDroit.Color(0, 0, 0));
    clignoGauche.show();
    clignoDroit.show();
    delay(30);
  }
  delay(250);
}


void codeMarcheArriere()
{
  for (int i = 0; i <= 4; i++)
  {
    marcheArriereGauche.setPixelColor(i, marcheArriereGauche.Color(50, 100, 40));
    marcheArriereDroit.setPixelColor(i, marcheArriereDroit.Color(50, 100, 40));
    marcheArriereGauche.show();
    marcheArriereDroit.show();
  }
}


void codeMarcheArriereEteint()
{
  for (int i = 0; i <= 4; i++)
  {
    marcheArriereGauche.setPixelColor(i, marcheArriereGauche.Color(0, 0, 0));
    marcheArriereDroit.setPixelColor(i, marcheArriereDroit.Color(0, 0, 0));
    marcheArriereGauche.show();
    marcheArriereDroit.show();
  }
}

void codeFreins()
{
  for (int i = 0; i <= 2; i++)
  {
    freins.setPixelColor(i, freins.Color(0, 255, 0));
    freins.setBrightness(255);
    freins.show();
  }
  for (int i = 4; i >= 0; i--)
  {
    phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0, 255, 0));
    phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0, 255, 0));
    phareFreinGauche.setBrightness(255);
    phareFreinDroit.setBrightness(255);
    phareFreinGauche.show();
    phareFreinDroit.show();
    delay(40);
  }
}


void codeFreinsEteint()
{
  for (int i = 0; i <= 4; i++)
  {
    phareFreinGauche.setPixelColor(i, phareFreinGauche.Color(0, 80, 0));
    phareFreinDroit.setPixelColor(i, phareFreinDroit.Color(0, 80, 0));
    phareFreinGauche.setBrightness(80);
    phareFreinDroit.setBrightness(80);
    phareFreinGauche.show();
    phareFreinDroit.show();
  }
  for (int i = 0; i <= 2; i++)
  {
    freins.setPixelColor(i, freins.Color(0, 80, 0));
    freins.setBrightness(80);
    freins.show();
  }

}

Toinit

je viens de poster une video sur youtube. ca aidera a mieux comprendre ce que j'aimerais faire. voici le lien.

https://www.youtube.com/watch?v=5FCdHe6ozGI

Toinit

j'ai réussi a remplacer mes delay par la fonction millis() mais je n'arrive pas a faire fonctionner une machine a état dans mon code. Je remémore le projet. j'ai deux boutons poussoir(etat_clignoGauche) et (etat_clignoDroit) qui commande chacun une bande leds.

Quand j'appuie sur le BP (etat_clignoGauche), les leds de la bande de gauche commence, et reste allumer dans cet ordre :de 0 a 1, de 1 a 2, jusqu'a ce quelle soit toutes allumées, puis elles s'éteignent dans le meme ordre : de 0 a 1, de 1 a 2, jusqu'a ce qu'elles soit toutes éteintes. Le BP (etat_clignoDroit) agit exactement de la meme facon sur la bande led de droite, normal, c'est des clignoteur.

Dès que j'appuie sur BP (etat_clignoGauche), les leds de la bande de gauche font leur cycles.
Si j'appuie sur BP (etat_clignoDroit) directement apres avoir relaché BP (etat_clignoGauche), les leds de la bande de droite commenceront a s'allumer que quand la bande de gauche aura terminé sont cycle. Meme chose dans le sens inverse

Ce que j'aimerais, c'est que dès que j'appuie sur le bouton, la bande concerné s'allume et l'autre s'éteint instantanément.

Merci d'avance pour vos aident
voici le code

 
Code: [Select]

#include <Adafruit_NeoPixel.h>
#define NUMPIXELS 5

Adafruit_NeoPixel clignoGauche = Adafruit_NeoPixel(NUMPIXELS, 5, NEO_RGBW + NEO_KHZ800);
Adafruit_NeoPixel clignoDroit = Adafruit_NeoPixel(NUMPIXELS, 6, NEO_RGBW + NEO_KHZ800);

boolean etat_ClignoGauche = 0;
boolean etat_ClignoDroit = 0;

int pin_ClignoGauche = 2;
int pin_ClignoDroit = 7;

long prevMillis = 0;
int allumageClignoGaucheEtDroit = 30;
int tempsAttenteHighEtLow = 50;

void setup()
{
  Serial.begin(9600);
  pinMode(pin_ClignoGauche, INPUT_PULLUP);
  pinMode(pin_ClignoDroit, INPUT_PULLUP);

  clignoGauche.begin();
  clignoDroit.begin();

  clignoGauche.show();
  clignoDroit.show();
}


void loop()
{
  etat_ClignoGauche = digitalRead(pin_ClignoGauche);
  etat_ClignoDroit = digitalRead(pin_ClignoDroit);

  if (etat_ClignoGauche == 0 && etat_ClignoDroit == 1)
  {
    codeClignoGauche();
  }
  if (etat_ClignoDroit == 0 && etat_ClignoGauche == 1)
  {
    codeClignoDroit();
  }
}

void codeClignoGauche()
{
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > allumageClignoGaucheEtDroit) {
      prevMillis = millis();
      clignoGauche.setPixelColor (i, clignoGauche.Color(80, 255, 0));
      clignoGauche.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempsAttenteHighEtLow ) {
      prevMillis = millis();
      clignoGauche.setPixelColor (i, clignoGauche.Color(80, 255, 0));
      clignoGauche.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > allumageClignoGaucheEtDroit) {
      prevMillis = millis();
      clignoGauche.setPixelColor(i, clignoGauche.Color(0, 0, 0));
      clignoGauche.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempsAttenteHighEtLow ) {
      prevMillis = millis();
      clignoGauche.setPixelColor (i, clignoGauche.Color(0, 0, 0));
      clignoGauche.show();
      i++;
    }
  }
}

void codeClignoDroit()
{

  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > allumageClignoGaucheEtDroit) {
      prevMillis = millis();
      clignoDroit.setPixelColor (i, clignoDroit.Color(80, 255, 0));
      clignoDroit.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempsAttenteHighEtLow ) {
      prevMillis = millis();
      clignoDroit.setPixelColor (i, clignoDroit.Color(80, 255, 0));
      clignoDroit.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > allumageClignoGaucheEtDroit) {
      prevMillis = millis();
      clignoDroit.setPixelColor(i, clignoDroit.Color(0, 0, 0));
      clignoDroit.show();
      i++;
    }
  }
  for (int i = 0; i <= 4; i)
  {
    if ( millis() - prevMillis > tempsAttenteHighEtLow ) {
      prevMillis = millis();
      clignoDroit.setPixelColor (i, clignoDroit.Color(0, 0, 0));
      clignoDroit.show();
      i++;
    }
  }
}





J-M-L

pouvez vous dessiner un diagramme des états (comme les ronds dans mon tuto)

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

J-M-L

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

Toinit

voici le diagramme d'une partie de mon code qui comporte 2 bandes leds commandées par 2 boutons. Un bouton pour chaque bandes leds.

J-M-L

voici votre dessin:



vous nous expliquez comment ça se lit ?
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