Allarme magnetico
Un sensore magnetico digitale rileva la posizione on/off per far scattare un allarme
/*ALLARME_3.5
author........................FABIO
date..........................6 sept 2015
Arduino alimenta la mia interfaccia
+5V
Il pin A0 è collegato all'uscita dello stato del magnete
Il pin 7 è settato ad uscita alto/basso a seconda dello
stato del magnete: se il magnete:
magnete in linea=>tensione bassa=> pin 7 basso=> SILENZIO
magnete NON in linea=> tensione alta=> pin 7 alto=> ALLARME
*/
const int led=13; //led di controllo
const int ledMagnete=12;
const int Magnete=0; //uscita magnete pin 0 (A0 analogico)
const int Relay=7; //pin 7 collegato al relay
int Tensione=0; //inizializzazione a 0 Volt
const int Control=2; //il pin 2 digitale è collegato all'interruttore
int i=0; //contatore per la prima volta che si accende il sistema
int j=0; //contatore per la prima volta che si apre la porta
int ValoreControl=0; //inizializzazione tensione pin 2
void setup()
{
Serial.begin(9600);
//inizializza il pin 7 come output da collegare
// al relay e il 13 e 12 (led) come uscita
pinMode(led,OUTPUT);
pinMode(ledMagnete,OUTPUT);
pinMode(Relay,OUTPUT);
pinMode(Control,INPUT);
digitalWrite(Relay,LOW);
digitalWrite(Control,LOW);
}
////////////////////////////////////
//////////TEMPORIZZATORE///////////
//passano k secondi/////////////
//ogni accensione e spegnimento ///
//led dura un secondo//////////////
///////////////////////////////////
void AttesaInnesco(){
Serial.print("ATTESAINNESCO");
digitalWrite(ledMagnete,LOW);
for(int k=1;k<10;k++)
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
}
i++;
}
/////////////////////////////////////
//CONTROLLO STATO ON OFF PULSANTE
/////////////////////////////////////
int OnOff(){
if(ValoreControl==HIGH){
j==0;
return 1;
}
else {
j==1;
return 0;//// qui
}
}
///////////////////////////////////////////
////LOOOOOOOOOOOOOOOOPPPPP allarme/////////
///////////////////////////////////////////
void loop(){
ValoreControl=digitalRead(Control);
OnOff();
//
if (OnOff()==1)// allarme inserito
{ Serial.println("ON");
if(i==0)//se è la prima volta aspetta un tempo definito lampeggiando
{
AttesaInnesco();
}
Serial.println("CICLO ALLARME;;;;;;;;;;;;;;;");
Tensione=analogRead(Magnete);
//loop SILENZIO, se il magnete è COLLEGATO
// la tensione va sotto 1024.
//Non c'è uscita e il relé non si carica
if(Tensione<1020 && j==0)
{
Serial.print("SILENZIO");
Serial.println(Tensione);//al pin 7 arriva tensione bassa
digitalWrite(Relay,LOW);
digitalWrite(ledMagnete,LOW);
}
//loop ALLARME, se il magnete è SCOLLEGATO
// la tensione va sopra la soglia.
//C'è uscita e il relé si carica
else
{
j==1;
Serial.print(Tensione);
Serial.println("ALLARME");//al pin 7 arriva il massimo di tensione
Serial.print("j===");
Serial.println(j);
digitalWrite(Relay,HIGH);
digitalWrite(ledMagnete,HIGH);
delay(500);
}
}
else {
Serial.println(" OFF");//allarme disinserito
i=0; //allarme disinserito
digitalWrite(led,LOW); //allarme disinserito
digitalWrite(Relay,LOW); //allarme disinserito
}
}//fine ciclo loop