Bonjour à tous, je réalise un petit projet en vue d'equiper un avion de modelisme. Je pilote 2 leds haute puissance 10w
Je réalise un strobe. Voila j'utilise une arduino nano et je mesure via l'entrée D4 la valeur renvoyé par mon recepteur RC pour changer de programme.
Mon probleme est que le changement de programme est assez aléatoire vu que la boucle de mon programme doit se terminer.
Parfois je saute un programme aussi ...
Comment je pourrais faire pour que le changement de programme soit instantanée ?
Mon programme.
int ledGreen = 11;
int ledBlue = 9;
int ledRed = 10;
int ledWhite = 5;
int rcreceiver;
int Prog;
void setup() {
Serial.begin(9600);
pinMode(ledGreen, OUTPUT);
pinMode(ledBlue, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledWhite, OUTPUT);
pinMode(4, INPUT);
Prog=1;
}
int strobe(int fadeRed, int fadeGreen, int fadeBlue)
{
analogWrite(ledWhite, 255);
delay(50);
analogWrite(ledWhite, 0);
delay(100);
analogWrite(ledWhite, 255);
delay(50);
analogWrite(ledWhite, 0);
delay(100);
analogWrite(ledWhite, 255);
delay(50);
analogWrite(ledWhite, 0);
delay(100);
analogWrite(ledWhite, 255);
delay(50);
analogWrite(ledWhite, 0);
analogWrite(ledRed, fadeRed);
analogWrite(ledGreen, fadeGreen);
analogWrite(ledBlue, fadeBlue);
delay(600);
analogWrite(ledRed, 0);
analogWrite(ledGreen, 0);
analogWrite(ledBlue, 0);
}
void loop() {
if (Prog==1)
{
strobe(127,0,0);
strobe(127,255,0);
strobe(0,255,0);
strobe(0,255,255);
strobe(0,0,255);
strobe(127,0,255);
strobe(127,255,255);
}
if (Prog==2)
{
strobe(0,255,0);
}
if (Prog==3)
{
strobe(127,0,0);
}
if (Prog==4)
{
analogWrite(ledWhite, 0);
analogWrite(ledRed, 0);
analogWrite(ledGreen, 0);
analogWrite(ledBlue, 0);
}
rcreceiver = pulseIn(4, HIGH, 25000);
if (rcreceiver <=1200)
{
Prog++;
delay(100);
if (Prog >4) Prog=1;
}
if (rcreceiver <=800)
{
Prog=4;
}
}
Cordialement,
bypbop