Une petite aide des connaisseur pour me donner un coup de main pour débuguer et optimiser ce code
Code : Tout sélectionner
/*
RC LEDRGB CONTROL
Contrôlez une LEDRGB via la voie des gaz de la radiocommande
Jouez avec les valeurs ch1 (entre 1000 et 2000) pour déterminer la position des 5 états sur la voie
Jouez avec les valeurs de délais pour modifier l'état ON Blink (séquence de flash)
DATE 17/02/2015 --> By Willmodelisme
DATE 19/02/2015 --> By manu_86
*/
int ch1 = 0;
int ledPinRouge = 9; // pin D9 atmega 328
int ledPinVert = 5; // pin D5 atmega 328
int ledPinBleu = 6; // pin D6 atmega 328
void setup()
{
pinMode(3, INPUT);
pinMode(9, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop()
{
//acquisition creneau radio
ch1 = pulseIn(3, HIGH);
//detection de l'absence d'un creneau radio valide (<900ms), flash LED specifique
if (ch1<900){
//séquence de flash failsafe, jouez a modifiez les valeurs de delay du ON et du OFF
digitalWrite(9, HIGH);
delay (250);
digitalWrite(9, LOW);
delay(0);
digitalWrite(6, HIGH);
delay(250);
digitalWrite(6, LOW);
delay(0);
digitalWrite(5, LOW);
delay(0);
}
else if ((ch1>1000) && (ch1<1250))
{
digitalWrite(9, HIGH);
delay(250);
digitalWrite(9, LOW);
delay(0);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(5, LOW);
delay(0);
digitalWrite(6, HIGH);
delay(250);
digitalWrite(6, LOW);
delay(0);
}
else if ((ch1>1250) && (ch1<1500))
{
digitalWrite(6, LOW);
delay(0);
digitalWrite(9, LOW);
delay(0);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(5, LOW);
delay(250);
}
else if ((ch1>1500) && (ch1<1750))
{
digitalWrite(5, LOW);
delay(0);
digitalWrite(9, LOW);
delay(0);
digitalWrite(6, HIGH);
delay(250);
digitalWrite(6, LOW);
delay(250);
}
else if ((ch1>1750)){
digitalWrite(9, HIGH); //led full
digitalWrite(5, LOW);
delay(0);
digitalWrite(6, LOW);
delay(0);
}
//règle la position de la voie pour un autre état de la led, ici OFF et voie des gaz en position basse (boucle vide led éteinte)
else {}
}
Au début, les couleur ne s'éteignaient pas complétement et ça faisait le bazar, j'ai été obligé de rajouter des digitalWrite avec des delay a 0.
Bon, c'est vraie que je débute et c'est mon premier code dérivé de celui de Will et de Manu
Tout ça a été monté sur une arduino mini pro et 3 transistors 2N2222 (ça je sais encore les monter).
A votre bon coeur