Alarme com sensores digitais

Estou criando o projeto de alarme com diversos sensores, até a parte de acionar o alarme que seria uma sirene foi fácil e tudo bem, o problema está em inibir a sirene usando uma botoeira pois se outro sensor alarmar ele deve também tocar a sirene.

Discrição rápida
15 sensores, (temperatura, nível de água, pressão, etc)
Mostrador de alarme para cada tipo de sensor por LED.
Botoeira inibidor de alarme.
Arduino Mega

Funcionamento:
15 sensores digitais, quanto um sensor é acionado um LED demonstra no painel que foi acionado e é acionado uma sirene até que a botoeira INIBIDOR seja pressionada;

O problema que programei o Inibidor mas não funciona;
Aguem pode me auxiliar.
Agradeço
Segue código;

//Alarme de gerador
const int alarme1 = 1;
const int alarme2 = 2; 
const int alarme3 = 3;
const int alarme4 = 4;
const int alarme5 = 5;
const int alarme6 = 6;
const int alarme7 = 7;
const int alarme8 = 8;
const int alarme9 = 9;
const int alarme10 = 10;
const int alarme11 = 11;
const int alarme12 = A0;
const int alarme13 = A1;
const int alarme14 = A2;
const int alarme15 = A3;
const int ledPin =  13;
const int inibidor =  12;

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(alarme1, INPUT);     
    pinMode(alarme2, INPUT);   
      pinMode(alarme3, INPUT);   
        pinMode(alarme3, INPUT);   
          pinMode(alarme4, INPUT);   
            pinMode(alarme5, INPUT);   
              pinMode(alarme6, INPUT);   
                pinMode(alarme7, INPUT);   
                  pinMode(alarme8, INPUT);   
                    pinMode(alarme9, INPUT);   
                      pinMode(alarme10, INPUT);   
                        pinMode(alarme11, INPUT);   
                          pinMode(alarme12, INPUT);   
                            pinMode(alarme13, INPUT);   
                              pinMode(alarme14, INPUT);   
                                pinMode(alarme15, INPUT);  
       pinMode(inibidor, INPUT);  
}

void loop(){


 digitalRead(alarme1);

  if (alarme1 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo Lubrificante do MCP Bombordo");  
  } 
  
    if (alarme2 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixo nivel de agua do tanque de expansao do MCP Bombordo ");  
  }
    
    if (alarme3 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura dos gases da descarga do MCP Bombordo");  
  }
    
    if (alarme4 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo lubrificante da caixa redutora do MCP Bombordo");  
  }
    
    if (alarme5 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura de oleo Lubrificante da caixa redutora do MCP de Bombordo");  
  }
    
    if (alarme6 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo Lubrificante do MCP de Boreste");  
  }
    
    if (alarme7 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixo nivel de agua do tanque de expansao do MCP Boreste");  
  }
    
    if (alarme8 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura dos gases da descarga do MCP Boreste");  
  }
    
    if (alarme9 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo lubrificante da caixa redutora do MCP Boreste");  
  }
    
    if (alarme10 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura de oleo Lubrificante da caixa redutora do MCP Boreste");  
  }
    
    if (alarme11 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo Lubrificante do MCP Central");  
  }
    
    if (alarme12 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixo nivel de agua do tanque de expansao do MCP Central");  
  }
    
    if (alarme13 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura dos gases da descarga do MCP Central");  
  }
    
    if (alarme14 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo lubrificante da caixa redutora do MCP Central");  
  }
    
    if (alarme15 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura de oleo Lubrificante da caixa redutora do MCP Central");  
  }
     digitalRead(inibidor);
    if (inibidor == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, LOW);
  Serial.println("Alarme Inibido");  
  }
  
  
}

Estou criando o projeto de alarme com diversos sensores, até a parte de acionar o alarme que seria uma sirene foi fácil e tudo bem, o problema está em inibir a sirene usando uma botoeira pois se outro sensor alarmar ele deve também tocar a sirene.

Discrição rápida
15 sensores, (temperatura, nível de água, pressão, etc)
Mostrador de alarme para cada tipo de sensor por LED.
Botoeira inibidor de alarme.
Arduino Mega

Funcionamento:
15 sensores digitais, quanto um sensor é acionado um LED demonstra no painel que foi acionado e é acionado uma sirene até que a botoeira INIBIDOR seja pressionada;

O problema que programei o Inibidor mas não funciona;
Aguem pode me auxiliar.
Agradeço

I am creating the project with various alarm sensors, back to the part that would trigger the alarm siren was easy and fine, the problem is to inhibit the siren using a buttonhole because if another sensor alarm he must also tap the siren.

quick discretion
15 sensors (temperature, water level, pressure, etc.)
Alarm display for each sensor type LED.
Buttonhole inhibitor alarm.
Arduino Mega

operation:
15 digital sensors, a sensor is triggered as an LED panel shows which was triggered and fires a siren until INHIBITOR pushbutton is pressed;

The problem I programmed the inhibitor but does not work;
Would anyone can help me.
thank

GOOGLE TRANSLATE (PORTUGESE => ENGLISH)

Edite seu post usando o botão Modificar.
Destaque seu código e clique no botão “#” TAGS código.
Clique em Salvar

Please edit your post using the MODIFY button.
Highlight your code and click the “#” CODE TAGS button.
CLICK SAVE

Ok, agradeço pela dica.

Ok, agradeço pela dica.

Ok, thanks for the tip.

 digitalRead(inibidor);
    if (inibidor == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, LOW);
if (alarme1 == LOW) 
{     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);

Can't find any code for the siren and your Inhibiter code does nothing to change or inhibit the alarms. You need to do a boolean AND in your IF statement so :
if ( (alarme1 == LOW) && (inhibitor ==HIGH)
{
// turn LED on:
digitalWrite(ledPin, LOW)
}
//==============================
Não foi possível encontrar nenhum código para a sirene e seu código inibidor não faz nada para alterar ou inibir os alarmes. Você precisa fazer um booleano E na sua declaração se assim for:
if ((alarme1 == LOW) && (inibidor == HIGH)
{
LED / / ligue:
digitalWrite (ledPin, LOW)
}
Are all alarms independent or tied to each other ? (is there a MASTER ALARM ?)
Será que todos os alarmes independentes ou ligados um ao outro? (existe um alarme de mestre?)

Eu fiz a mudança no código, não funcionou, o problema é o seguinte:
Os sensores digitais, quando acionado ficam em nível ALTO (HIGH) até reset no sensor local.
Se ocorrer mais de um alarme ele deve mostrar nos LED e tocar a sirene.
A botoeira e uma chave normalmente aberta e ao ser pressionada deve inibir somente a sirene, mas continuar pronta para alarmar novamente caso tenha novo alarme.
O alarme nunca é desligado está sempre aguardando a próxima falha, e o inibidor somente para a sirene naquele momento e fica pronto para a próxima falha.

A dificuldade é que os sensores não funcionam com pulso eles mudam de nível LOW -> HIGH e permanecem assim até o reset manual no sensor.

Eu fiz a mudança no código, não funcionou, o problema é o seguinte: Os sensores digitais, quando acionado ficam em nível ALTO (HIGH) até reset no sensor local. Se ocorrer mais de um alarme ele deve mostrar nos LED e tocar a sirene. A botoeira e uma chave normalmente aberta e ao ser pressionada deve inibir somente a sirene, mas continuar pronta para alarmar novamente caso tenha novo alarme. O alarme nunca é desligado está sempre aguardando a próxima falha, e o inibidor somente para a sirene naquele momento e fica pronto para a próxima falha. A dificuldade é que os sensores não funcionam com pulso eles mudam de nível LOW -> HIGH e permanecem assim até o reset manual no sensor.

I did change the code did not work, the problem is the following: Digital sensors are triggered when HIGH (HIGH) to reset the sensor location. If more than one alarm it should show in the LED and ring the bell. The pushbutton and a normally open and the key should be pressed only inhibit the siren, but still ready to alarm again if new alarm. The alarm is not turned off is alwayswaiting for the next failure, and the inhibitor only for the siren at the time and is ready for the next failure. The difficulty is that the sensors do not work with pulse they change level LOW -> HIGH and remain so until manually reset the sensor.

I can't find anything in the code about a siren

Eu não consigo encontrar nada no código sobre uma sirene

Olá!

Este é o código que você está usando?

Você disse que tem 15 sensores mas, eu só vi uma chamada de leitura.

Onde estão os outros "digitalRead"?

Quais tipos de sensores está usando? Eles só têm "status" de 0 e 1 ?

Como não criou variáveis para guardar os "status" dos botões o correto é:

  if (digitalRead(alarme1) == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo Lubrificante do MCP Bombordo");  
  }

Abraço.

Fernando Garcia

Olá!
Este é o código que você está usando?
Você disse que tem 15 sensores mas, eu só vi uma chamada de leitura.
Onde estão os outros "digitalRead"?
Quais tipos de sensores está usando? Eles só têm "status" de 0 e 1 ?
Como não criou variáveis para guardar os "status" dos botões o correto é:

Hello!
This is the code you are using?
You said you have 15 sensors but I only saw one read call.
Where are the other "digitalRead"?
What kind of sensors are you using? They only have "status" of 0 and 1?
How not create variables to hold the "status" of the buttons is correct:

Isso foi apenas uma parte do código que copiou a partir de (autor original) primeiro post do OP.

That was just a piece of the code I copied from the OP's (original poster) first post.

Aqui está o código inteiro

Here is the entire code:

 //Alarme de gerador
const int alarme1 = 1;
const int alarme2 = 2; 
const int alarme3 = 3;
const int alarme4 = 4;
const int alarme5 = 5;
const int alarme6 = 6;
const int alarme7 = 7;
const int alarme8 = 8;
const int alarme9 = 9;
const int alarme10 = 10;
const int alarme11 = 11;
const int alarme12 = A0;
const int alarme13 = A1;
const int alarme14 = A2;
const int alarme15 = A3;
const int ledPin =  13;
const int inibidor =  12;

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(alarme1, INPUT);     
    pinMode(alarme2, INPUT);   
      pinMode(alarme3, INPUT);   
        pinMode(alarme3, INPUT);   
          pinMode(alarme4, INPUT);   
            pinMode(alarme5, INPUT);   
              pinMode(alarme6, INPUT);   
                pinMode(alarme7, INPUT);   
                  pinMode(alarme8, INPUT);   
                    pinMode(alarme9, INPUT);   
                      pinMode(alarme10, INPUT);   
                        pinMode(alarme11, INPUT);   
                          pinMode(alarme12, INPUT);   
                            pinMode(alarme13, INPUT);   
                              pinMode(alarme14, INPUT);   
                                pinMode(alarme15, INPUT);  
       pinMode(inibidor, INPUT);  
}

void loop(){


 digitalRead(alarme1);

  if (alarme1 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo Lubrificante do MCP Bombordo");  
  } 
  
    if (alarme2 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixo nivel de agua do tanque de expansao do MCP Bombordo ");  
  }
    
    if (alarme3 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura dos gases da descarga do MCP Bombordo");  
  }
    
    if (alarme4 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo lubrificante da caixa redutora do MCP Bombordo");  
  }
    
    if (alarme5 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura de oleo Lubrificante da caixa redutora do MCP de Bombordo");  
  }
    
    if (alarme6 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo Lubrificante do MCP de Boreste");  
  }
    
    if (alarme7 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixo nivel de agua do tanque de expansao do MCP Boreste");  
  }
    
    if (alarme8 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura dos gases da descarga do MCP Boreste");  
  }
    
    if (alarme9 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo lubrificante da caixa redutora do MCP Boreste");  
  }
    
    if (alarme10 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura de oleo Lubrificante da caixa redutora do MCP Boreste");  
  }
    
    if (alarme11 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo Lubrificante do MCP Central");  
  }
    
    if (alarme12 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixo nivel de agua do tanque de expansao do MCP Central");  
  }
    
    if (alarme13 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura dos gases da descarga do MCP Central");  
  }
    
    if (alarme14 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Baixa pressao de oleo lubrificante da caixa redutora do MCP Central");  
  }
    
    if (alarme15 == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);
  Serial.println("Alta temperatura de oleo Lubrificante da caixa redutora do MCP Central");  
  }
     digitalRead(inibidor);
    if (inibidor == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, LOW);
  Serial.println("Alarme Inibido");  
  }
  
  
}
P

Vou fazer algumas alterações e postar o novo código ainda hoje.
Agradeço a todos.

Olá!

Só para entender as respostas do raschemmel.

esfernando, você tinha postado este tópico em outro fórum?

Abraço.
Fernando Garcia

Senhores, conforme mencionei vou postar o código reduzido com 3 sensores digitais para facilitar a leitura do mesmo.
Fiz algumas alterações e continuo com o mesmo problema do inibidor;
Em resposta ao amigo essa é a primeira vez que posto essa dúvida.

O que acontece o alarme é acionado e permanece em nível baixo, a SIRENE é acionada porém não consigo INIBIR (desligar ) a SIRENE ao pressionar o INIBIDOR. (pulso de nível baixo)
o problema que vejo é que o sistema tem que voltar a ficar preparado a acionar para outro sensor.

Vejam se consegue me ajudar.

//Alarme
const int alarme1 = 2;
const int alarme2 = 3; 
const int alarme3 = 4;
const int ledPin =  13;// SIRENE
const int inibidor =  12; //Botoeira INIBIDOR

// variables will change:
int inibidors = 0;         // Variavel INIBIDOR
int alarme1s = 0;         // Variavel Alarme 1
int alarme2s = 0;          // Variavel Alarme 2
int alarme3s = 0;         // Variavel Alarme 3

void setup() {
  Serial.begin(9600);
  Serial.print("Sistema de Alarme de motores, Desenvolvido 2014 ");
 
  pinMode(ledPin, OUTPUT);   // Saída SIRENE   
  pinMode(alarme1, INPUT);   // Entrada ALARME 1
    pinMode(alarme2, INPUT);   // Entrada ALARME 2
      pinMode(alarme3, INPUT);   // Entrada ALARME 3
           pinMode(inibidor, INPUT);  // Entrada BOTOEIRA INIBIDOR

digitalWrite(alarme1, HIGH); // Pull-up ALARME 1
digitalWrite(alarme2, HIGH); // Pull-up ALARME 2
digitalWrite(alarme3, HIGH); // Pull-up ALARME 2
digitalWrite(inibidor, HIGH); // Pull-up INIBIDOR
}

void loop(){

 alarme1s = digitalRead(alarme1);// Leitura ALARME 1
  if (alarme1s == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);// Ligar SIRENE
  Serial.print("Baixa pressao de oleo Lubrificante");  
  } 
    alarme2s = digitalRead(alarme2);// Leitura ALARME 2
    if (alarme2s == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);// Ligar SIRENE
  Serial.print("Baixo nivel de agua do tanque de expansao");  
  }
      alarme3s = digitalRead(alarme3);// Leitura ALARME 3
    if (alarme3s == LOW) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);// Ligar SIRENE
  Serial.print("Alta temperatura");  
  }
     inibidors = digitalRead(inibidor); // Leitura Botoeira
    if (inibidors == LOW) {     
    digitalWrite(ledPin, LOW);// Desligar SIRENE
  Serial.print("Alarme Inibido");  
  }  
    }

Olá!

Se não mostrar os circuitos fica impossível de te ajudar.

Se uma destas igualdades for verdadeira mesmo após apertar o botão.

alarme1s == LOW

alarme2s == LOW

A sirene só vai desligar por uma fração de segundo.

Abraço.

O meu problema é não conseguir desligar a SIRENE pino 13, enquanto tem nível alto em um sensor, preciso deixar os outros sensores atuando se houver falha depois.
segue esquema e foto.

Da forma como está enquanto o pino não estiver ligado ao GND o estado vai ficar variando aleatóriamente.

Note

If the pin isn't connected to anything, digitalRead() can return either HIGH or LOW (and this can change randomly).
The analog input pins can be used as digital pins, referred to as A0, A1, etc.

Se quer que a sirene desligue mesmo sem corrigir o primeiro erro apontado, vai precisar adicionar mais condições.

Exemplo:

boolean alarme1_inibido = false;

     inibidors = digitalRead(inibidor); // Leitura Botoeira
    if (inibidors == LOW) {     
    digitalWrite(ledPin, LOW);// Desligar SIRENE
  Serial.print("Alarme Inibido");  
  alarme1_inibido = true;
  } 
 
 if ((alarme1s == LOW)  && (alarme1_inibido == false)){     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);// Ligar SIRENE
  Serial.print("Baixa pressao de oleo Lubrificante");  
  }

Em algum lugar após a correção do erro 1, você vai precisar colocar a variável "alarme1_inibido" como "false".

Exemplo:

    if (alarme1s == HIGH) {     
  alarme1_inibido = false;
  }

Senhores, consegui uma solução para a questão de inibir o alarme, ficou funcionando bem, porém quero melhorar ainda o sistema, coloquei LEDs para indicar qual alarme foi acionado e ainda estou com um probleminha que é:
Após INIBIR a SIRENE tenho que fazer o reset total para ele voltar a acionar, vou ver o que poderei melhorar, se puderem me ajudar.
Estou postando o código para todos.

Agradeço a ajuda.

//Alarme
const int alarme1 = 2;
const int alarme2 = 3; 
const int alarme3 = 4;
const int alarme1l = 5; // LED ALARME 1
const int alarme2l = 6;  // LED ALARME 2
const int alarme3l = 7; // LED ALARME 3
const int ledPin =  13;// SIRENE
const int inibidor =  12; //Botoeira INIBIDOR

int inibi = HIGH;
int inibi2 = HIGH;
int inibi3 = HIGH;
int inibidors = 0;         // Variavel INIBIDOR
int alarme1s = 0;         // Variavel Alarme 1
int alarme2s = 0;          // Variavel Alarme 2
int alarme3s = 0;         // Variavel Alarme 3

void setup() {
  Serial.begin(9600);
  Serial.print("Sistema de Alarme de motores, Desenvolvido 2014 ");
  Serial.print("");
 
  pinMode(ledPin, OUTPUT);   // Saída SIRENE   
  pinMode(alarme1, INPUT);   // Entrada ALARME 1
    pinMode(alarme2, INPUT);   // Entrada ALARME 2
      pinMode(alarme3, INPUT);   // Entrada ALARME 3
        pinMode(alarme1l, OUTPUT);   // Saída ALARME 1
          pinMode(alarme2l, OUTPUT);   // Saída ALARME 2
            pinMode(alarme3l, OUTPUT);   // Saída ALARME 3
               pinMode(inibidor, INPUT);  // Entrada BOTOEIRA INIBIDOR

digitalWrite(alarme1, HIGH); // Pull-up ALARME 1
digitalWrite(alarme2, HIGH); // Pull-up ALARME 2
digitalWrite(alarme3, HIGH); // Pull-up ALARME 2
digitalWrite(inibidor, HIGH); // Pull-up INIBIDOR
}
void loop(){
      
 alarme1s = digitalRead(alarme1);// Leitura ALARME 1
  if ((alarme1s == LOW) && (inibi == HIGH)){     
      // turn LED on:      
     digitalWrite(ledPin, HIGH);// Ligar SIRENE
     Serial.print("Baixa pressao de oleo Lubrificante");  
  }
   if (alarme1s == LOW){     
    digitalWrite(alarme1l, HIGH); // Ligar Mostrador ALARME 1
  } 
  
inibidors = digitalRead(inibidor); // Leitura Botoeira
    if ((inibidors == LOW) && (alarme1s == LOW)) {
          digitalWrite(ledPin, LOW);// Desligar SIRENE
  inibi = LOW; 
Serial.print("Alarme 1 Inibido"); 
}
    alarme2s = digitalRead(alarme2);// Leitura ALARME 2
    if ((alarme2s == LOW) && (inibi2 == HIGH)){     
    digitalWrite(ledPin, HIGH);// Ligar SIRENE
      Serial.print("Baixo nivel de agua do tanque de expansao"); 
    }
  if (alarme2s == LOW){
    digitalWrite(alarme2l, HIGH);// Ligar ALARME 2
   }
  if ((inibidors == LOW) && (alarme2s == LOW)) {
          digitalWrite(ledPin, LOW);// Desligar SIRENE
  inibi2 = LOW;
  Serial.print("");
Serial.print("Alarme2 Inibido");  
}
      alarme3s = digitalRead(alarme3);// Leitura ALARME 3
   if ((alarme3s == LOW) && (inibi3 == HIGH)){     
   digitalWrite(ledPin, HIGH);// Ligar SIRENE
   Serial.print("Alta temperatura");  }
   
    if (alarme3s == LOW){
    digitalWrite(alarme3l, HIGH);// Ligar ALARME 2
   }
  if ((inibidors == LOW) && (alarme3s == LOW)) {
          digitalWrite(ledPin, LOW);// Desligar SIRENE
  inibi3 = LOW;
  Serial.print("");
   Serial.print("Alarme 3 Inibido");  }
  
    }

Senhores, consegui uma solução para a questão de inibir o alarme, ficou funcionando bem, porém quero melhorar ainda o sistema, coloquei LEDs para indicar qual alarme foi acionado e ainda estou com um probleminha que é: Após INIBIR a SIRENEtenho que fazer o reset total para ele voltar a acionar, vou ver o que poderei melhorar, se puderem me ajudar.
Estou postando o código para todos.

Agradeço a ajuda.

Gentlemen, I got a solution to the issue of inhibiting the alarm was working fine, but I want to further improve the system, put LEDs to indicate which alarm was triggered and I'm still having a little problem that is: After BLANK SIRENE have to do the full reset it back to the fire, I'll see what I can improve, if they can help me. I am posting the code for everyone.

I appreciate the help.

Já pensaste em começar o teu código com um alarme apenas e tentares que funcione correctamente antes de adicionares tudo o resto?
Tens uma selecção de inibição por alarme? Ou uma inibição para todos?

Não tens nada no teu código que altere o estado da variável inibi para HIGH. Logo só com reset. Importas-te de explicar se queres inibir ou só queres desligar a sirene.

Preciso inibir a SIRENE até que outro alarme seja acionado,
O botão INIBIR é para todos os alarmes.

Foram criadas variáveis para INIBIR separadas, não sei se consigo fazer com uma só variável.

Então o que tu queres é silenciar a sirene até que um alarme novo seja accionado.

Para isso, porque não fazes algo assim:

//Alarme
const int alarme1 = 2;
const int alarme1l = 5; // LED ALARME 1
const int Sirene =  13;// SIRENE
const int inibidor =  12; //Botoeira INIBIDOR

unsigned char Active1 = 0;
unsigned char inibidors = 0;         // Variavel INIBIDOR
unsigned char alarme1s = 0;         // Variavel Alarme 1

void setup() {
  Serial.begin(9600);
  Serial.println("Sistema de Alarme de motores, Desenvolvido 2014 ");
 
  pinMode(ledPin, OUTPUT);   // Saída SIRENE   
  pinMode(alarme1, INPUT_PULLUP);   // Entrada ALARME 1
  pinMode(alarme1l, OUTPUT);   // Saída ALARME 1
  pinMode(inibidor, INPUT_PULLUP);  // Entrada BOTOEIRA INIBIDOR
}


void loop(){
 
//lê todos os pinos no inicio do ciclo!      
 alarme1s = digitalRead(alarme1);// Leitura ALARME 1
 inibidors = digitalRead(inibidor); // Leitura Botoeira


//Análise do alarme 1. 
  if ((alarme1s == LOW && Active == 0){ //se alarme está activo pela primeira vez.  
      // turn LED on:      
     digitalWrite(Sirene, HIGH);// Ligar SIRENE 
     digitalWrite(alarme1l, HIGH); // Ligar Mostrador ALARME 1
     Serial.print("Baixa pressao de oleo Lubrificante");  
     Active1 = 1; //diz que o alarme está activo. 
  }

if (alarme1s == HIGH) { //se voltar ao normal... 
    Active = 0; 
     digitalWrite(alarme1l, LOW); // Desligar Mostrador ALARME 1
     digitalWrite(Sirene, LOW);// Desligar SIRENE
       Serial.println("Alarme 1 desactivado."); //debug 
   }

  if (inibidors == LOW) { //inibição está activa. 
       digitalWrite(Sirene, LOW);// Desligar SIRENE
       Serial.println("Sirene desligada."); 
   }
}

Este excerto, o que faz é usar um encravamento para a sirene. Isto é, se houver uma condição de alarme, a sirene e a lâmpada ligam e só quando essa condição deixar de existir é que a sirene e a luz apagam.
Se o botão inibidor for carregado, a sirene é desligada, mas as luzes ficam ligadas.

Agora só tens de copiar e alterar os nomes das variáveis para fazeres os restantes casos. Eu aproveitei para limpar um pouco as variáveis, etc...
Nota que só tens de copiar a parte da verificação do alarme. O teste do botão inibidor deve ser feito apenas uma vez.