cambiar delay por millis (solucionado RIG)

#define R1 8
#define R2 9 
#define R3 10
#define pinFlama 2
int flama;

void setup() {
  pinMode(R1,OUTPUT);
  pinMode(R2,OUTPUT);
  pinMode(R3,OUTPUT);
  pinMode(pinFlama,INPUT_PULLUP);
  
}

void loop() {
  delay(5000);  
  digitalWrite(R1,HIGH);  
  digitalWrite(R2,HIGH);
  delay(5000);  

  flama=digitalRead(pinFlama);
    
  if(flama==HIGH){
  digitalWrite(R3,HIGH);
  digitalWrite(R2,HIGH);  
  delay(10000);
  digitalWrite(R1,LOW);  
  }

  do{
    flama=digitalRead(pinFlama);
    }while(flama==HIGH);

  if(flama==LOW){
    digitalWrite(R1,LOW);  
    digitalWrite(R2,LOW);
    digitalWrite(R3,LOW);
    delay(9000);
    }
}

e intentado usar los millis con este codigo: Ms Timer2 const int unsined Long time unsined Long interval unsined Long previusMillis bool estado = const int threshold = millis();

por mencionar algunas de las variables de millis que e intentado usar para dejar de usar los delay

Ve a Documentación => Indice de temas tutoriales => millis()

surbyte: Ve a Documentación => Indice de temas tutoriales => millis()

ya e estado hay varias veces y no e conseguido hacer lo ejemplo time = millis (); hasta aquí lo copila pero cuando agrego time = millis(500); ya no copila gracias de cual quier forma

vaya!!

time = millis(500);

Seguro que leíste lo que es millis()? Amigo así no funciona millis(), tu quieres usarlo como si fuese un delay y eso nunca te va a compilar

en el siguente enlace hay un archivo pdf descargalo y leelo https://forum.arduino.cc/index.php?topic=311734.0 la explicacion es clara, trata de practicar haciendo destellar un led y despues...

mira el siguiente hilo de @PeterKantTropus https://forum.arduino.cc/index.php?topic=414341.0 en él veras las diferencias entre usar delay y usar millis()

Los códigos no van como texto plano, van con etiquetas.

esto no va asi

const int R1 = 8 const int R2 = 9

va asi

const int R1 = 8
const int  R2 = 9

Tu respondes con una larga lista de instrucciones en un texto plano. Por favor lee de nuevo las normas, edita tu post, y en el post#4 usa etiquetas para mostrar ese código, y algo mas. No repitas lo que se lee arriba Si yo te digo Hola No respondas con lo que yo dije, no hace falta, podemos leerlo todos arriba donde uno lo ha escrito. Eso se usa en otros foros, en este no. Gracias, espero que entiendas lo que te pido y no lo dejes pasar.

Esto no existe

 millis (5000);

millis() es como un sensor que devuelve el tiempo que lleva el arduino desde que se conecto la energía. Asi que si usas una variable y le preguntas que valor tienes ahora... 5 y ahora 6 y ahora 300 Es como un corredor que sale y tu arrancas el cronometro y con cada vuelta le tomas tiempos parciales. Si tomas el tiempo parcial de la 2da y la 3er vuelta y los restas que te da? El tiempo de la segunda vuelta. Asi se usa millis().

//Control De Calentador.ino


const unsigned long intervalChispa =10000;   //tiempo que durara energizada la chispa cambiala a lo que necesites
const unsigned long intervalPiloto = 5000;   //tiempo para verificar que encendio el piloto
const unsigned long intervalEspera= 90000;    //tiempo de espera entre nuevos intentos
const unsigned long Flamainterval = 1000;      //tiempo para monitorear que el sistema no se apago y sigue encendido (medio segundo se me hace muy poco lo deje en un segundo, pero si crees necesario solo cambialo a 500)

#define R1Chispa 8     //relay de que enciende la chispa
#define R2Piloto 9      // relay del piloto
#define R3Quemador 10    // relay quemador maestro
#define sensorFlama 2       //sensor que verifica la presencia de flama en el piloto para saber que encendio HIGH=flama Low=apagado
#define DEBUG              //SI QUIERES VER DATOS EN EL MONITOR SERIAL DEJA ESTA LINEA, DEESPUES COMENTALA CON DOS DIAGONALES ANTES DEL #define // PARA AHORAR MEMORIA

enum estado{ARRANQUE, MONITOREO, NUEVO_INTENTO};
     estado estados;
//VARIABLES PARA GUARDAR TIEMPOS DE MILLIS()
unsigned long tiempoChispa;
unsigned long tiempoPiloto;
unsigned long tiempoSensor;
unsigned long Flamatimer;
unsigned long tiempoNuevoIntento;

bool estadoFlama,
     flag; //solo para impresion


void setup() {

  pinMode(R1Chispa,OUTPUT);
  pinMode(R2Piloto,OUTPUT);
  pinMode(R3Quemador,OUTPUT);
  pinMode(sensorFlama,INPUT);

  digitalWrite(R1Chispa, HIGH);
  digitalWrite(R2Piloto, HIGH);
  digitalWrite(R3Quemador, HIGH);
  Serial.begin(9600);
  Serial.println("Iniciando...");
  delay(5000);    //ESPERAMOS 5 SEGUNDOS AL INICIAR EL ARDUINO... Siempre y cuando este en el setup es valido utilizar delay


  digitalWrite(R2Piloto, LOW);    //se abre gas de piloto
  #ifdef DEBUG
   Serial.println("Piloto Encendido");
  #endif
  delay(500);   //Esperamos medio segundo para dar tiempo a salir el gas del piloto (PUEDES CAMBIARLO SEGUN TU NECESIDAD)
  digitalWrite(R1Chispa, LOW);  //se enciende la chispa
   #ifdef DEBUG
    Serial.println("Chispa encendida");
   #endif
  estados=ARRANQUE;
  tiempoPiloto=millis();


  }

void loop() {
   

   estadoFlama=digitalRead(sensorFlama);   
   
     switch (estados) {
         case ARRANQUE:
                           
           if(millis()-tiempoPiloto >= intervalPiloto){
              if(estadoFlama){                     //Si el sensor detecta que el piloto está encendido
                 digitalWrite(R3Quemador, LOW);  //Abre gas quemador
                 estados=MONITOREO;
                 tiempoChispa=millis();
                 #ifdef DEBUG
                   flag=true;
                   Serial.println("Quemador Encendido");
                  #endif
                 }
               else { // si no
                   digitalWrite(R2Piloto, HIGH); //cierra el gas del piloto
                   digitalWrite(R1Chispa, HIGH);
                 estados=NUEVO_INTENTO;   //INENTAMOS NUEVAMENTE
                  tiempoNuevoIntento=millis();
                    
                    #ifdef DEBUG
                      flag=true; //Solo lo uso para que imprima una sola vez
                      Serial.println("el sistema no encendio, intentando nuevamente dentro de 90 Seg");
                     #endif
                  } 
              } 
           break;

         case  NUEVO_INTENTO:
            if(millis()-tiempoNuevoIntento >= intervalEspera-500UL){ //para que el piloto se abra medio segundo antes de la chispa PUEDES CAMBIAR EL 500 AL TIEMPO QUE NECESITES
                 digitalWrite(R2Piloto, LOW);
                 #ifdef DEBUG
                 if(flag){
                 Serial.println("Abriendo piloto.... esperando medio segundo para chispa" );
                  flag=false;}
                 #endif
             }
           
            if(millis() - tiempoNuevoIntento >= intervalEspera){
                digitalWrite(R1Chispa,LOW);
                tiempoChispa=millis();
                tiempoPiloto=millis();
                estados=ARRANQUE;
                #ifdef DEBUG
                  Serial.println("Chispa encendida, verificando sensor");
                #endif 
                }       
           break;

          case MONITOREO:
             if(millis()-tiempoChispa >=intervalChispa) {//Se apaga la chispa 10 segundos despues de encendido el quemador principal
                    digitalWrite(R1Chispa, HIGH);   //Apaga chispa
                    #ifdef DEBUG
                     if(flag){
                    Serial.println("chispa apagada despues de 10 seg de encendido el quemador");
                      flag=false;}
                    #endif
                }

             if(millis()-Flamatimer >= Flamainterval){  //Cada cierto tiempo verificamos que el quemador este encendido
                  if(!estadoFlama){    // si no hay flama
                  digitalWrite(R2Piloto, HIGH);  // SE CIERRA EL GAS DEL PILOTO
                  digitalWrite(R3Quemador,HIGH);  // SE CIERRA EL QUEMADOR
                  estados=NUEVO_INTENTO;
                  tiempoNuevoIntento=millis();
                   #ifdef DEBUG
                     Serial.println("el piloto se apago, Se cierran valvulas de gas y se intentara encenderlo nuevamente dentro de 90Seg");
                   #endif 

                     }
                      #ifdef DEBUG
                      else
                         Serial.println("el sistema trabaja correctamente");
                      #endif
                         
             Flamatimer=millis();       
             }     
          break;
     }

}

Asi quedo el codigo espero y a alguien mas le sea util mi agrede cimento a RIG y surbyte por su apoyo