Bonjour à tous,
Etant nouveau dans l'univers Arduino, je me tourne vers vous car je ne sais plus quoi faire concernant le problème que je rencontre et j'espère qu'une personne parmi vous pourra trouver une solution.
J'ai pour projet de mettre en place un système d'éclairage pour les marches de mon escalier avec 14 bandeaux LED distincts (1 bandeau WS2812 de 45 leds par marche) et un arduino Nano.
J'ai réussi dans un premier temps à faire fonctionner les 14 rubans avec un déclanchement des ces derniers lors d'une détection de présente grâce à un capteur PIR situé en bas de l'escalier.
Une fois cette étape réalisé, j'ai ajouté une capteur PIR en haut de l'escalier ainsi que 2 potentiomètres pour régler la temporisation d'allumage entre chaque marches et le second pour régler le temps que les marches restent allumées.
Le problème intervient à partir de ce moment, une fois ce nouveau capteur ajouté ainsi que les 2 potentiomètres, je peux toujours allumer les bandeaux via le capteur PIR en bas de l'escalier mais les bandeaux se trouvant sur les PIN 9,10 et 13 ne s'allument plus.
Le capteurs PIR se trouvant en haut de l'escalier ne déclenche pas l'allumage des bandeau (celui-ci capte bien les mouvement, j'ai une tension de 3.3v au voltmètre à sa sortie quand je passe devant) et les potentiomètre fonctionnent correctement pour régler les 2 temporisations.
Si je commente dans le code les parties liées aux 2 potentiomètres et au PIR haut, tout les bandeaux refonctionne correctement.
Voici le code que j'utilise:
#include "FastLED.h"
#define NUM_LEDS 45
#define NUM_STRIPS 14
int tempo;
int duree;
int PIRHAUT = A4;
int PIRBAS = A5;
int POT_TEMPO = A6;
int POT_DUREE = A7;
int lecture_duree;
CRGB leds[NUM_LEDS];
CLEDController *controllers[NUM_STRIPS];
uint8_t gBrightness = 128;
void setup() {
FastLED.addLeds<WS2812,2>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,3>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,4>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,5>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,6>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,7>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,8>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,9>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,10>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,11>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,12>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,13>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,A0>(leds, NUM_LEDS);
FastLED.addLeds<WS2812,A1>(leds, NUM_LEDS);
//FastLED.addLeds<WS2812,A2>(leds, NUM_LEDS);
pinMode(PIRHAUT,INPUT); //définir la pin A4 comme une entré
pinMode(PIRBAS,INPUT); //définir la pin A5 comme une entré
pinMode(POT_TEMPO,INPUT);//définir la pin A6 comme une entré
pinMode(POT_DUREE,INPUT);//définir la pin A7 comme une entré
}
void loop()
{
tempo = analogRead(POT_TEMPO); // Lecture de la valeur du potentiometre tempo entre les marches
lecture_duree = analogRead(POT_DUREE); // Lecture de la valeur du potentiometre durée d'allumage des marches
int duree = map(lecture_duree, 0, 1023, 3000, 30000);
if(digitalRead(PIRBAS)==HIGH){ //le capteur BAS détecte un mouvement
allumageBH();
delay(duree);
extinctionBH();
}
if(digitalRead(PIRHAUT)==HIGH){ //le capteur HAUT détecte un mouvement
allumageHB();
delay(duree);
extinctionHB();
}
}
void allumageBH()
{
for(int i = 0; i < 14; i++) {
// draw led data for the first strand into leds
fill_solid(leds, NUM_LEDS, CRGB::White);
FastLED[i].showLeds(gBrightness);
delay(tempo);
}
}
void extinctionBH()
{
for(int i = 0; i < 14; i++) {
// draw led data for the first strand into leds
fill_solid(leds, NUM_LEDS, CRGB::Black);
FastLED[i].showLeds(gBrightness);
delay(tempo);
}
}
void allumageHB()
{
for(int i = 13; i < -1; i--) {
// draw led data for the first strand into leds
fill_solid(leds, NUM_LEDS, CRGB::White);
FastLED[i].showLeds(gBrightness);
delay(tempo);
}
}
void extinctionHB()
{
for(int i = 13; i < -1; i--) {
// draw led data for the first strand into leds
fill_solid(leds, NUM_LEDS, CRGB::Black);
FastLED[i].showLeds(gBrightness);
delay(tempo);
}
}
Lorsque je compile le programme, celui-ci m'indique que j'utilise 66% pour le stockage et 39% pour la mémoire dynamique.
Si vous avez une idée sur un éventuel problème dans mon code/utilisation de l'arduino ou bien une limitation dont je n'ai pas connaissance, je suis preneur !
Merci d'avoir pris le temps de me lire.
N'hésitez pas si vous avez besoin d'informations complémentaires.
Eric.