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
#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();
}
}