Voila donc le code pour les deux zones, qu'en pensez vous?
par contre j'ai pas réussi a rajouter dans les modes des fonctions comme le fade et le clignotant car (delay) me bloque et je ne sais pas encore comment y remédier.
Avez-vous une solution ?
const int RLED1=9;
const int GLED1=10;
const int BLED1=11;
const int RLED2=3;
const int GLED2=5;
const int BLED2=6;
const int BUTTON=2;
const int APPUI=1;
const int PAS_APPUI=0;
const int Zone1=8;
const int Zone2=4;
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledMode = 0;
int ledMode1 = 0;
int ETAT_Zone1;
int ETAT_Zone2;
void setup()
{
pinMode (BLED1, OUTPUT);
pinMode (RLED1, OUTPUT);
pinMode (GLED1, OUTPUT);
pinMode (BLED2, OUTPUT);
pinMode (RLED2, OUTPUT);
pinMode (GLED2, OUTPUT);
pinMode (BUTTON, INPUT);
pinMode(Zone1,INPUT);
digitalWrite(Zone1,LOW);
pinMode(Zone2,INPUT);
digitalWrite(Zone2,LOW);
}
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON);
if (last != current)
{
delay(5);
current = digitalRead(BUTTON);
}
return current;
}
void setZone1(int mode)
{
//ROUGE
if (mode == 1)
{
digitalWrite(RLED1,HIGH);
digitalWrite(GLED1,LOW);
digitalWrite(BLED1,LOW);
}
//VERT
else if (mode == 2)
{
digitalWrite(RLED1,LOW);
digitalWrite(GLED1,HIGH);
digitalWrite(BLED1,LOW);
}
//BLEU
else if (mode == 3)
{
digitalWrite(RLED1,LOW);
digitalWrite(GLED1,LOW);
digitalWrite(BLED1,HIGH);
}
//ORANGE
else if (mode == 4)
{
analogWrite(RLED1,250);
analogWrite(GLED1,250);
analogWrite(BLED1,0);
}
//MAGENTA
else if (mode == 5)
{
analogWrite(RLED1,250);
analogWrite(GLED1,0);
analogWrite(BLED1,250);
}
//CYAN
else if (mode == 6)
{
analogWrite(RLED1,0);
analogWrite(GLED1,250);
analogWrite(BLED1,250);
}
//WHITE
else if (mode == 7)
{
analogWrite(RLED1,250);
analogWrite(GLED1,250);
analogWrite(BLED1,250);
}
//OFF(mode =0)
else
{
digitalWrite(RLED1,LOW);
digitalWrite(GLED1,LOW);
digitalWrite(BLED1,LOW);
}
}
void setZone2(int mode)
{
//ROUGE
if (mode == 1)
{
digitalWrite(RLED2,HIGH);
digitalWrite(GLED2,LOW);
digitalWrite(BLED2,LOW);
}
//VERT
else if (mode == 2)
{
digitalWrite(RLED2,LOW);
digitalWrite(GLED2,HIGH);
digitalWrite(BLED2,LOW);
}
//BLEU
else if (mode == 3)
{
digitalWrite(RLED2,LOW);
digitalWrite(GLED2,LOW);
digitalWrite(BLED2,HIGH);
}
//ORANGE
else if (mode == 4)
{
analogWrite(RLED2,250);
analogWrite(GLED2,250);
analogWrite(BLED2,0);
}
//MAGENTA
else if (mode == 5)
{
analogWrite(RLED2,250);
analogWrite(GLED2,0);
analogWrite(BLED2,250);
}
//CYAN
else if (mode == 6)
{
analogWrite(RLED2,0);
analogWrite(GLED2,250);
analogWrite(BLED2,250);
}
//WHITE
else if (mode == 7)
{
analogWrite(RLED2,250);
analogWrite(GLED2,250);
analogWrite(BLED2,250);
}
//OFF(mode =0)
else
{
digitalWrite(RLED2,LOW);
digitalWrite(GLED2,LOW);
digitalWrite(BLED2,LOW);
}
}
void loop()
{
ETAT_Zone1 = digitalRead(Zone1);
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
ledMode++;
ledMode1++;
}
lastButton = currentButton;
if (ledMode == 8) ledMode = 0;
lastButton = currentButton;
if (ledMode1 == 8) ledMode1 = 0;
if (ETAT_Zone1==HIGH)
setZone1(ledMode);
else
setZone1(0);
ETAT_Zone2 = digitalRead(Zone2);
if (ETAT_Zone2==HIGH)
setZone2(ledMode1);
else
setZone2(0);
}