Bonjour,
je suis nouveau sur le forum et j’aurais besoin d’un petit coup de main.
je débute dans le code et l’arduino et mon premier projet est un ruban led RGB qui réagit au bruit ambiant et qui se contrôle par infrarouge.
Alors je rencontre un problème avec l'infrarouge.
Donc j'arrive à allumer et éteindre les led avec une télécommande mais le reste de mon programme pour la gestion des led avec un capteur sonore se bloque et ne se joue pas correctement.
j'appelle votre aide je comprend pas.
#include <Adafruit_NeoPixel.h>
#include <IRremote.h>
//nom de chaque broche
#define LED_PIN 3
#define N_LED 60
#define CAPTEUR A0
#define RECV 2
//configuration des leds
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LED, LED_PIN, NEO_RGB + NEO_KHZ400);
//variables
int RC = 0;
int GC = 0;
int BC = 0;
int valeur = 0;
int val = 0;
const int lumiON = 10;
const int lumiOFF = 0;
void setup()
{
strip.begin();
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
IrReceiver.begin(RECV);
}
void loop()
{
valeur = analogRead(CAPTEUR);
setcouleur();
//Serial.println(CAPTEUR);
delay(10);
if (IrReceiver.decode()) {
unsigned int cmd = IrReceiver.decodedIRData.command;
switch (cmd) {
case 0x45:
Serial.println("ON");
strip.setBrightness(lumiON);
strip.show();
if (valeur > 1001){
strip.clear();
strip.fill(strip.Color(0, 255, 0), 0, 60);
strip.show();
}
else if (valeur < 1000 && valeur >= 51){
strip.clear();
val = valeur/51;
strip.fill(strip.Color(RC, GC, BC), 0, val+1);
for(int i = 20; i < 20+val; i++){
strip.setPixelColor(i, strip.Color(RC, GC, BC));
}
for(int i = 40; i < 40+val; i++){
strip.setPixelColor(i, strip.Color(RC, GC, BC));
}
strip.show();
}
else if (valeur == 0){
strip.clear();
strip.setPixelColor(0, strip.Color(RC, GC, BC));
strip.setPixelColor(20, strip.Color(RC, GC, BC));
strip.setPixelColor(40, strip.Color(RC, GC, BC));
strip.show();
}
else{
strip.show();
}
break;
case 0x47:
Serial.print("OFF");
strip.setBrightness(lumiOFF);
for( int i = 0 ; i = 60 ; i++ ){
strip.setPixelColor(i, strip.Color(0,0,0)); // Moderately bright green color.
strip.show();
break;
}
break;
default:
Serial.print("Received code: ");
Serial.println(cmd);
}
IrReceiver.resume();
}
}
void setcouleur(){ //boucle des couleurs
RC = 0; //random(100, 150); //VERT //0;
GC = 70; //random(0, 100); //ROUGE //70;
BC = 255; //random(150, 255); //bLEU //255;
}
Après j'ai refait un code mais je rencontre le même problème mais a l'inverse, ma gestion des led avec le capteur se joue mais je ne peux pas éteindre ou allumer les led par infrarouge.
#include <Adafruit_NeoPixel.h>
#include <IRremote.h>
//nom de chaque broche
#define LED_PIN 3
#define N_LED 60
#define CAPTEUR A0
#define RECV 2
//configuration des leds
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LED, LED_PIN, NEO_RGB + NEO_KHZ400);
//variables
int RC = 0;
int GC = 0;
int BC = 0;
int valeur = 0;
int val = 0;
const int lumiON = 10;
const int lumiOFF = 0;
void setup()
{
strip.begin();
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
IrReceiver.begin(RECV);
}
void loop()
{
valeur = analogRead(CAPTEUR);
setcouleur();
infrarouge();
strip.setBrightness(lumiON);
//Serial.println(CAPTEUR);
delay(10);
if (valeur > 1001){
strip.clear();
strip.fill(strip.Color(0, 255, 0), 0, 60);
strip.show();
}
else if (valeur < 1000 && valeur >= 51){
strip.clear();
val = valeur/51;
strip.fill(strip.Color(RC, GC, BC), 0, val+1);
for(int i = 20; i < 20+val; i++){
strip.setPixelColor(i, strip.Color(RC, GC, BC));
}
for(int i = 40; i < 40+val; i++){
strip.setPixelColor(i, strip.Color(RC, GC, BC));
}
strip.show();
}
else if (valeur == 0){
strip.clear();
strip.setPixelColor(0, strip.Color(RC, GC, BC));
strip.setPixelColor(20, strip.Color(RC, GC, BC));
strip.setPixelColor(40, strip.Color(RC, GC, BC));
strip.show();
}
else{
strip.show();
}
}
void infrarouge(){
if (IrReceiver.decode()) {
unsigned int cmd = IrReceiver.decodedIRData.command;
switch (cmd) {
case 0x45: // allumer toutes les led.
Serial.println("ON");
valeur = analogRead(CAPTEUR);
strip.setBrightness(lumiON);
strip.show();
break;
case 0x47: // eteindre toutes les led.
Serial.print("OFF");
strip.setBrightness(lumiOFF);
for( int i = 0 ; i = 60 ; i++ ){
strip.setPixelColor(i, strip.Color(0,0,0));
strip.show();
break;
}
break;
default:
Serial.print("Received code: ");
Serial.println(cmd);
}
IrReceiver.resume();
}
}
void setcouleur(){ //boucle des couleurs
RC = 0; //random(100, 150); //VERT //0;
GC = 70; //random(0, 100); //ROUGE //70;
BC = 255; //random(150, 255); //bLEU //255;
}