[Risolto] Blink con millis() lettura PPM con pulseIn() Ritardi e Problemi

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);
  
}