como mantener estatus de sensores en una alarma?

buenos dias o tardes sea el caso, soy nuevo en lo que respecta arduino y necesito que en un sistema de alarma, los indicadores de los sensores que se activen se mantengan.
Pero de esta manera: que el primer sensor que se active el indicador led se mantenga fijo, el segundo en activarse parpadee el tercero parpadee mas rápido y el cuarto parpadee mas rápido aun.

Aquí dejo anexado el código que estoy usando para que lo revisen y den sus observaciones y si pueden ayudarme se los agradecería.

De ante mano muchas gracias

const int tonos[] = {494};/*constante de tonalidad*/
const int countTonos = 10;/*volumen de tonalidad*/

int sensor1 = 8; 
int sensor2 = 7;
int sensor3 = 4;
int sensor4 = 12;

int led_on_panel = 13; 
int led_armado = 3;
int led_desarmado = 5;

int zona1 = 11;
int zona2 = 10;
int zona3 = 9;
int zona4= 6;

int buzzer = 14;
int boton = 2;
int estadoboton = 0; 
int estado_sensor1 = 0;
int estado_sensor2 = 0; 
int estado_sensor3 = 0;
int estado_sensor4 = 0;

int temporal= 0;
int temporal2= 0;
int temporal3= 0;
int temporal4= 0;



int periodo = 5000;
unsigned long tiempo_ahora = 0;


void setup() {/*declaracion de las variables*/
  pinMode (sensor1, INPUT);
  pinMode (sensor2, INPUT);
  pinMode (sensor3, INPUT);
  pinMode (sensor4, INPUT);
  pinMode (boton, INPUT);
  pinMode (led_armado, OUTPUT);
  pinMode (led_on_panel, OUTPUT);
  pinMode (led_desarmado, OUTPUT);
  pinMode (zona1, OUTPUT);
  pinMode (zona2, OUTPUT);
  pinMode (zona3, OUTPUT);
  pinMode (zona4, OUTPUT);
  pinMode (buzzer, OUTPUT);
  pinMode (estado_sensor1, OUTPUT);
  pinMode (estado_sensor2, OUTPUT);
  pinMode (estado_sensor3, OUTPUT);
  pinMode (estado_sensor4, OUTPUT);
 
  Serial.begin(9600);//se inicia la comunicación con el monitor serie.
  Serial.println("CLEARDATA"); //Limpia para iniciar un nuevo registro
  Serial.println("LABEL,Hora Evento, Sensor Activo"); //Datos que muestra el formato de excel
  analogWrite(buzzer, 255);
  delay(200);
  analogWrite(buzzer, 0);
  digitalWrite(led_on_panel, HIGH);
  digitalWrite (led_armado, HIGH);

}

void loop() {/*Ejecutador*/
  

   
  do{/*funcion*/
  
  estadoboton = digitalRead (boton);
  estado_sensor1 = digitalRead (sensor1);
  estado_sensor2 = digitalRead (sensor2);
  estado_sensor3 = digitalRead (sensor3);
  estado_sensor4 = digitalRead (sensor4);

 if (estadoboton == LOW) {
      digitalWrite(led_desarmado, LOW);
      digitalWrite (led_armado, HIGH);


   
    if (estado_sensor1== HIGH){
      digitalWrite(zona1, HIGH); 
      digitalWrite(led_desarmado, LOW);
      if(millis() > tiempo_ahora + periodo){
      tiempo_ahora = millis();
    
         for (int iTono = 0; iTono < countTonos; iTono++)/*funcion repetidora*/
     {
        
        tone(buzzer, tonos[iTono]);
     }
     }
      Serial.print("DATA,TIME,");
      
      Serial.println("ACTIVADA:ZONA_1");
     temporal==1;
     
 }

      
      if (estado_sensor2== HIGH){
      digitalWrite(zona2, HIGH); 
      digitalWrite(led_desarmado, LOW);
      
          for (int iTono = 0; iTono < countTonos; iTono++)/*funcion repetidora*/
     {
        
        tone(buzzer, tonos[iTono]);
     }
      Serial.print("DATA,TIME,");   
         
      Serial.println("ACTIVADA:ZONA_2");
     temporal2==1;
     
 }  
      if (estado_sensor3== HIGH){
      digitalWrite(zona3, HIGH); 
      digitalWrite(led_desarmado, LOW);
      
        for (int iTono = 0; iTono < countTonos; iTono++)/*funcion repetidora*/
    {
        tone(buzzer, tonos[iTono]);
         
       
 
    } 
      Serial.print("DATA,TIME,");
      
      Serial.println("ACTIVADA:ZONA_3");
     temporal3==1;
     
 }
 if (estado_sensor4== HIGH){
      digitalWrite(zona4, HIGH); 
      digitalWrite(led_desarmado, LOW);
      
        for (int iTono = 0; iTono < countTonos; iTono++)/*funcion repetidora*/
     {
        tone(buzzer, tonos[iTono]);
      
     }
      Serial.print("DATA,TIME,");
      
      Serial.println("ACTIVADA:ZONA_4");
     }temporal4==1;
   
 }
    
    if (estadoboton == HIGH) {
      digitalWrite (led_armado, LOW);
      digitalWrite(led_desarmado, HIGH);
     
     if (estado_sensor1== HIGH){
      digitalWrite(zona1, HIGH); 
      noTone(buzzer);  
     
     }
     if (estado_sensor1== LOW){
      digitalWrite(zona1, LOW); 
      noTone(buzzer);
     }


     
      if (estado_sensor2== HIGH){
      digitalWrite(zona2, HIGH); 
      noTone(buzzer);
    
     }
     if (estado_sensor2== LOW){
      digitalWrite(zona2, LOW); 
      noTone(buzzer);
     }

     
      if (estado_sensor3== HIGH){
      digitalWrite(zona3, HIGH); 
      noTone(buzzer);
     }
      if (estado_sensor3== LOW){
      digitalWrite(zona3, LOW); 
      noTone(buzzer);
     }

     
      if (estado_sensor4== HIGH){
      digitalWrite(zona4, HIGH); 
      noTone(buzzer);
     }
      if (estado_sensor4== LOW){
      digitalWrite(zona4, LOW); 
      noTone(buzzer);
     }
   }
  
 } while (estadoboton==HIGH);
 
 }

codigo_de_alarma.ino (4.52 KB)

Para cumplir las normas del foro debes poner el código entre las etiquetas respectivas y no como adjunto.

Y luego debes formular alguna consulta.

A vista de pájaro hay un error en temporal4 == 1; eso es una comparación no asignación.

Que Arduino estas usando ? En Arduino UNO el pin 14 (buzzer) es el A0 pero no soporta PWM (solo los pines: 3, 5, 6, 9, 10 y 11). analogWrite(buzzer, 255).

La matriz tonos deberia tener countTones (10) frecuencias.

Te recomiendo que las variables de todos los pines sea const byte

Buenas tardes Kike_GL, ya se que temporal, temporal2, temporal3 y temporal4 son comparaciones, pero las aplique para que las zonas se mantengan los indicadores de las zonas fijos.
Ahora si puedes ayudarme con la manera correcta se hacerlo te lo agradeceria.

Para cumplir las normas del foro debes poner el código entre las etiquetas respectivas y no como adjunto.

Los códigos de menos de 9k deben visualizarse en el post que haces usando etiquetas para lo cual debes leer las normas del foro!! Ya edité tu hilo pero no lo volveré a hacer. Algo mas, cuando respondas no hace falta repetir como loro lo que se puede leer arriba. Espero lo comprendas, es para facilitar la limpieza del foro.