con il codice sistemato così funziona tutto bene apparte le posizioni in analogwrite su stopOut che si accende ma con una luce veramente troppo debole ma penso che domani risolvo....
int luciPosIn = 2;
int fariLungIn = 3;
int frecceIn = 4;
int lampIn = 5;
int stopIn = 6;
int retroIn = 7;
int luciPosOut = 8;
int faroLung1 = 9;
int faroLung2 = 10;
int stopOut = 11;
int retroOut = 12;
int frecceOut = 13;
int stopInS;
int retroInS;
int val1;
int val2;
int val3;
int val4; //Possibile non necessario!!
int val5 = LOW;
unsigned long previousMillis = 0;
unsigned long interval = 500;
extern unsigned long timer0_millis;
void setup() {
pinMode(luciPosIn, INPUT); //Input PPM ricevente radio (luciPosIn)
pinMode(fariLungIn, INPUT); //Input PPM ricevente radio (fariLungIn) Possibile anche lampeggio!!!
pinMode(frecceIn, INPUT); //Input PPM ricevente radio (frecceIn)
pinMode(stopIn, INPUT); //Input mosfet regolatore (stopIn)
pinMode(retroIn, INPUT); //Input mosfet regolatore (retroIn)
pinMode(lampIn, INPUT); //Input PPM ricevente radio (lampIn) Possibile non necessario!!!
pinMode(luciPosOut, OUTPUT); //Accensione luci posizione
pinMode(faroLung1, OUTPUT); //Accensione luce profondità !! o lampeggio strobo
pinMode(faroLung2, OUTPUT); //Accensione luce profondità !! o lampeggio strobo
pinMode(frecceOut, OUTPUT); //Accensione 4 frecce
pinMode(stopOut, OUTPUT); //Accensione Stop e posizione posteriore 1/2 potenza
pinMode(retroOut, OUTPUT); //Accensione retro
digitalWrite(luciPosOut,LOW);
digitalWrite(faroLung1,LOW);
digitalWrite(faroLung2,LOW);
digitalWrite(stopOut,LOW);
digitalWrite(retroOut,LOW);
}
void loop() {
val1 = pulseIn(luciPosIn, HIGH);
val2 = pulseIn(fariLungIn, HIGH);
val3 = pulseIn(frecceIn, HIGH);
val4 = pulseIn(lampIn, HIGH); //Possibile non necessario!!
stopInS = digitalRead(stopIn);
retroInS = digitalRead(retroIn);
if (val1 > 1600) digitalWrite(luciPosOut, HIGH);
if (val1 < 1600) digitalWrite(luciPosOut, LOW);
if (val1 > 1600) analogWrite(stopOut, 255);
if (val1 < 1600) analogWrite(stopOut, 0);
//if (val1 > 1600 && stopInS == LOW) analogWrite(stopOut, 255);
//if (val1 < 1600 || stopInS == HIGH) analogWrite(stopOut, 0);
if (val2 > 1600) digitalWrite(faroLung1, HIGH);
if (val2 < 1600) digitalWrite(faroLung1, LOW);
if (val2 > 1600) digitalWrite(faroLung2, HIGH);
if (val2 < 1600) digitalWrite(faroLung2, LOW);
if (val3 > 1600) {
if (millis() - previousMillis > interval) {
previousMillis = millis();
if (val5 == LOW)
val5 = HIGH;
else
val5 = LOW;
digitalWrite(frecceOut, val5);
}
}
if (val3 < 1600) digitalWrite(frecceOut, LOW);
if (val4 > 1600 && val2 < 1600) {
if (millis()>50 && millis()<100) digitalWrite(faroLung1, HIGH);
if (millis()>100 && millis()<150) digitalWrite(faroLung1, LOW);
if (millis()>150 && millis()<200) digitalWrite(faroLung1, HIGH);
if (millis()>200 && millis()<250) digitalWrite(faroLung1, LOW);
if (millis()>750 && millis()<800) digitalWrite(faroLung2,HIGH);
if (millis()>800 && millis()<850) digitalWrite(faroLung2, LOW);
if (millis()>850 && millis()<900) digitalWrite(faroLung2,HIGH);
if (millis()>900 && millis()<950) digitalWrite(faroLung2, LOW);
if (millis()>1400) {
cli();
timer0_millis = 0;
sei();
}
}
if (stopInS == HIGH) digitalWrite(stopOut, HIGH);
if (stopInS == LOW) digitalWrite(stopOut, LOW);
if (retroInS == HIGH) digitalWrite(retroOut, HIGH);
if (retroInS == LOW) digitalWrite(retroOut, LOW);
}