Hola, mi proyecto consiste en que cuando se active el sensor infrarrojo, se active una alarma que suene como sirena, y que se quede encendida, hasta que al cambiar el estado del switch se apague.
Estoy teniendo problemas ahi, logre que sonara como una sirena y todo, pero cuando le coloco la condicion del switch no se apaga.
int alarma = 11; // Definir el pin digital del Arduino para la Alarma
int sensorflama; // Declaracion del Sensor de flama
int sensorsonido = 26; // Definir el pin digital del Arduino para el sensor de sonido
int valor_sonido = 0; // define una variable para ingresar el estado
int sensorvib = 8; // Definir el pin digital del Arduino para el sensor de vibracion
int valor_vib = 0; // define una variable para ingresar el estado
int sensor_luz; // Declaracion del sensor de luz
int sensormag = 6 ; // Definir el pin digital del Arduino para el sensor magnetico
int valor_mag ; // define una variable para ingresar el estado
int infrarrojo = 12; // Definir el pin digital del Arduino para el sensor Infrarrojo
int valor_inf = 0; // define una variable para ingresar el estado
int niveldeagua; // Declaracion del Sensor de nivel de agua
int boton1 = 4; // Declaracion el pin digital del Arduino del boton1
int valor_boton1 = 0; // Define una variable para ingresar el estado del valor del boton1
int boton2 = 2; // Declaracion el pin digital del Arduino del boton2
int valor_boton2 = 0; // Define una variable para ingresar el estado del valor del boton2
float sinVal;
int toneVal;
float sinVal1;
int toneVal1;
int led=10;
int bandera=0;
void setup() {
// Inicializar entradas y salidas
Serial.begin(9600); // Inicializar puerto serial
pinMode(alarma, OUTPUT);
pinMode(sensorvib,INPUT);
pinMode(sensorsonido,INPUT);
pinMode(sensormag, INPUT);
pinMode(infrarrojo, INPUT);
pinMode(boton1, INPUT);
pinMode(boton2, INPUT);
pinMode(led, OUTPUT);
}
void tiposalarma() {
while(bandera==1){
int x;
for ( x=0; x<250; x++){
sinVal = (sin(x*(3.1412/180))); // convertir grados a radianes
toneVal = 2000 + (int(sinVal*1000)); // convertir frecuencia del valor.
tone(alarma,toneVal);
delay(2);
if(valor_boton2==1){
digitalWrite(led, HIGH);
bandera=0;
noTone(alarma);
}
}
x=0;
}
}
void loop() {
//Lectura de los sensores
//Sensores Digitales
valor_vib= digitalRead(sensorvib);
valor_sonido=digitalRead(sensorsonido);
valor_mag = digitalRead(sensormag) ; // lee el estado del sensor
valor_inf = digitalRead(infrarrojo);
valor_boton1 = digitalRead(boton1);
valor_boton2 = digitalRead(boton2);
//Sensores Analogicos
sensorflama=analogRead(A7);
sensor_luz=analogRead(A1);
niveldeagua = analogRead(A2);
if (valor_inf ==0){
bandera=1;
tiposalarma();
}
//if (valor_boton1 == 1 || sensor_luz < 100){
//if( (valor_sonido == 1 || valor_mag==0|| valor_inf==0) ) {
// tone(alarma, 1000);
/* if (valor_sonido == 1) {
for(int x1=50; x1<100; x1++){
sinVal1 = (sin(x1*(3.1412/180))); // convertir grados a radianes
toneVal1 = 2000 + (int(sinVal1*1000)); // convertir frecuencia del valor.
tone(alarma, toneVal1);
delay(2);
}
}
if (valor_mag == 0){
tone(alarma, 1500);
} */
if(((sensorflama>100 && sensorflama<300) || valor_vib == 0 || niveldeagua>500 ) ) {
tone(alarma, 1000);
}
}
</>