Por el momento, he logrado hacer lo que he querido hacer, excepto por una cosa.
El detalle es que cuando uso las funciones de apagar el buzzer, hasta lo intente con un led aparte, no logro apagar ninguno de los dos.
Dejo el codigo a ver si alguno logra visualizar el error en el control del buzzer.
El detalle es que cuando uso las funciones de apagar el buzzer, hasta lo intente con un led aparte, no logro apagar ninguno de los dos.
Dejo el codigo a ver si alguno logra visualizar el error en el control del buzzer.
Código:
int alarma = 11; // Definir el pin digital del Arduino para la Alarma
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 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;
int sensor_luz; // Declaracion del sensor de luz
int led=10;
int sensorflama = 28; // Declaracion del Sensor de flama
int valor_flama = 0;
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 sensormag = 6 ; // Definir el pin digital del Arduino para el sensor magnetico
int valor_mag ; // define una variable para ingresar el estado
int niveldeagua; // Declaracion del Sensor de nivel de agua
int bandera1=0;
int bandera2=0;
int bandera3=0;
int bandera4=0;
int bandera5=0;
float sinVal;
int toneVal;
float sinVal1;
int toneVal1;
float sinVal2;
int toneVal2;
float sinVal3;
int toneVal3;
float sinVal4;
int toneVal4;
float sinVal5;
int toneVal5;
int bandera=0;
unsigned long currentTime=0;
unsigned long previousTime=0;
unsigned long currentTime1=0;
unsigned long previousTime1=0;
unsigned long currentTime2=0;
unsigned long previousTime2=0;
unsigned long currentTime3=0;
unsigned long previousTime3=0;
unsigned long currentTime4=0;
unsigned long previousTime4=0;
unsigned long currentTime5=0;
unsigned long previousTime5=0;
char* statusAlarma = "Off";
#include <EtherCard.h>
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; // ethernet mac address - must be unique on your network
static byte myip[] = {192,168,1,200};
byte Ethernet::buffer[5500]; // tcp/ip send and receive buffer
BufferFiller bfill;
static void headPage(){
bfill.emit_p(PSTR(
"HTTP/1.0 200 OK\r\n"
"Content-Type: text/html\r\n"
"Pragma: no-cache\r\n"
"\r\n"
));
}
static word Login(){
bfill = ether.tcpOffset();
headPage();
bfill.emit_p(PSTR(
"<html>"
"<head><title>"
"Desarrollo de un sistema domótico de gestión y monitoreo de seguridad basado en la placa Arduino"
"</title></head>"
"<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">"
"<div style= 'margin:50px;'>"
"<body>"
"<h3 align=\"center\">Desarrollo de un sistema domótico de gestión y monitoreo de seguridad basado en la placa Arduino.</h3>"
"<h3 align=\"right\">Integrantes:</h3>"
"<h3 align=\"right\">Ligielena Malpica.</h3>"
"<body bgcolor=\"#FFFFF\">"
"<h3 align=\"center\"> Ingresa su código de validación, el mismo es sumistrado por su proveedor.</h3><br>"
"<script >"
"function usrpas(){"
"if(document.form1.num.value==\"1234\") {window.location=\"A\"}"
"else {alert(\"Error\")} }"
"document.oncontextmenu=new Function(\"return false\");"
"</script>"
"<form name=\"form1\" align=\"center\"> <input type=\"text\" name=\"num\"> Código de Validación <br><br> <input type=\"button\" value=\"Ir\" onclick=\"usrpas()\"> </form>"
"</body>"
"</html>"));
return bfill.position();
}
static word Sensores(){
bfill = ether.tcpOffset();
headPage();
bfill.emit_p(PSTR(
"<html>"
"<head> <title>"
"Desarrollo de un sistema domótico de gestión y monitoreo de seguridad basado en la placa Arduino"
"</title></head>"
"<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">"
"<meta http-equiv=\"refresh\" content=\"5\" >"
"<style>"
"#table, th, td{ border: 1px solid black; border-collapse: collapse; border-color: #000080; font-size:120%; }"
"#Alarma { text-align:center; } "
"#Modo_Noche { text-align:center; } "
"#Cerrar_Sesion { text-align:center; }"
"</style>"
"<div style= 'margin:50px;'>"
"<body>"
"<body bgcolor=\"#FFFFF\">"
"<h2 align=\"center\" > Estado de los sensores: </h2>"
"<table style=\"margin: 0 auto;\">"
"<tr>"
"<th scope=\"col\">Nombre del sensor</th>"
"<th scope=\"col\">Estado</th>"
"</tr>"
"<tr>"
"<td>Infrarrojo</td>"
"<td align=\"center\" >$S</td>"
"</tr>"
"<tr>"
"<td>Sonido</td>"
"<td align=\"center\" >$S</td>"
"</tr>"
"<tr>"
"<td>Fuego</td>"
"<td align=\"center\" >$S</td>"
"</tr>"
"<tr>"
"<td>Contactores</td>"
"<td align=\"center\" >$S</td>"
"</tr>"
"<tr>"
"<td>Vibración</td>"
"<td align=\"center\" >$S</td>"
"</tr>"
"<tr>"
"<td>Nivel de agua</td>"
"<td align=\"center\" >$D</td>"
"</tr>"
"</table> <br>"
"<div id=\"Modo_Noche\">"
"<input type=\"button\" value=\"Activar Modo Noche\" onclick=\"usrpas()\" >"
"</div>"
"<div id=\"Alarma\"> <br>"
"Estado Alarma = $S <br>"
"<a href='./Adata1=0'><input type='button' value='Apagar Alarma'></a>"
"</div>"
"<div id=\"Cerrar_Sesion\"> <br>"
"<form action=/ method=get>"
"<input type=submit value=Cerrar usuario>"
"</form>"
"</div> <br>"
"</body>"
"</html>"),
digitalRead(12) ? "Off" : "On",
digitalRead(26) ? "Off" : "On",
digitalRead(28) ? "On" : "Off",
digitalRead(6) ? "On" : "Off",
digitalRead(8) ? "Off" : "On",
analogRead(2),
statusAlarma
);
return bfill.position();
}
void setup() {
Serial.begin(57600);
pinMode(alarma, OUTPUT);
pinMode(led, OUTPUT);
pinMode(infrarrojo, INPUT);
pinMode(sensorvib,INPUT);
pinMode(sensorsonido,INPUT);
pinMode(sensormag, INPUT);
pinMode(sensorflama, INPUT);
pinMode(boton1, INPUT);
pinMode(boton2, INPUT);
digitalWrite(led, LOW);
//attachInterrupt(digitalPinToInterrupt(18),Lectura_paginaweb, CHANGE);
if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
Serial.println( "El controlador Ethernet ha fallado en inicializar");
else
Serial.println("Ethernet controller ok!");
ether.staticSetup(myip);
}
void Lectura_paginaweb(){
word pos = ether.packetLoop(ether.packetReceive());
if(pos){
for(int c=pos;Ethernet::buffer[c];c++)
Serial.print((char)Ethernet::buffer[c]);
Serial.println("");
word n;
switch(Ethernet::buffer[pos+5]){
case 'A': n=Sensores();break;
default: n=Login();
}
ether.httpServerReply(n);
if (strstr((char *)Ethernet::buffer + pos, "GET/Adata1=0") != 0) {
Serial.println("led Off");
apagaralarma();
digitalWrite(led, LOW);
statusAlarma = "OFF";
}
}
}
void tiposalarma() {
currentTime=millis();
if((currentTime-previousTime)>2){
sinVal = (sin(currentTime*(3.1412/180))); // convertir grados a radianes
toneVal = 2000 + (int(sinVal*1000)); // convertir frecuencia del valor.
previousTime=currentTime;
Lectura_paginaweb();
tone(alarma, toneVal);
}
}
void tiposalarma1() {
currentTime1=millis();
if((currentTime1-previousTime1)>10){
sinVal1 = (sin(currentTime1*(3.1412/180))); // convertir grados a radianes
toneVal1 = 2000 + (int(sinVal1*1000)); // convertir frecuencia del valor.
previousTime1=currentTime1;
Lectura_paginaweb();
tone(alarma, toneVal1);
}
}
void tiposalarma2() {
currentTime2=millis();
if((currentTime2-previousTime2)>20){
sinVal2 = (sin(currentTime2*(3.1412/180))); // convertir grados a radianes
toneVal2 = 2000 + (int(sinVal2*1000)); // convertir frecuencia del valor.
previousTime2=currentTime2;
Lectura_paginaweb();
tone(alarma, toneVal2);
}
}
void tiposalarma3() {
currentTime3=millis();
if((currentTime3-previousTime3)>30){
sinVal3 = (sin(currentTime3*(3.1412/180))); // convertir grados a radianes
toneVal3 = 2000 + (int(sinVal3*1000)); // convertir frecuencia del valor.
previousTime3=currentTime3;
Lectura_paginaweb();
tone(alarma, toneVal3);
}
}
void tiposalarma4() {
currentTime4=millis();
if((currentTime4-previousTime4)>40){
sinVal4 = (sin(currentTime4*(3.1412/180))); // convertir grados a radianes
toneVal4 = 2000 + (int(sinVal4*1000)); // convertir frecuencia del valor.
previousTime4=currentTime4;
Lectura_paginaweb();
tone(alarma, toneVal4);
}
}
void tiposalarma5() {
currentTime5=millis();
if((currentTime5-previousTime5)>10){
sinVal5 = (sin(currentTime5*(3.1412/180))); // convertir grados a radianes
toneVal5 = 2000 + (int(sinVal5*1000)); // convertir frecuencia del valor.
previousTime5=currentTime5;
Lectura_paginaweb();
tone(alarma, toneVal5);
}
}
void apagaralarma(){
noTone(alarma);
}
void loop()
{
Lectura_paginaweb();
valor_inf = digitalRead(infrarrojo);
valor_vib= digitalRead(sensorvib);
valor_sonido=digitalRead(sensorsonido);
valor_mag = digitalRead(sensormag) ;
valor_flama = digitalRead(sensorflama);
valor_boton1 = digitalRead(boton1);
valor_boton2 = digitalRead(boton2);
sensor_luz=analogRead(A1);
niveldeagua = analogRead(A2);
if (valor_boton1 == 1 || sensor_luz < 800){
if (valor_inf == 0){
bandera = 1;
while (bandera == 1){
tiposalarma();
digitalWrite(led, HIGH);
Lectura_paginaweb();
valor_boton2 = digitalRead(boton2);
if (valor_boton2==1){
bandera = 0;
// digitalWrite(led, LOW);
apagaralarma();
}
}
}
if (valor_mag == 1){
bandera1 = 1;
while (bandera1 == 1){
tiposalarma1();
digitalWrite(led, HIGH);
valor_boton2 = digitalRead(boton2);
if (valor_boton2==1){
bandera1 = 0;
digitalWrite(led, LOW);
apagaralarma();
}
}
}
if (valor_sonido == 0){
bandera2 = 1;
while (bandera2 == 1){
tiposalarma2();
digitalWrite(led, HIGH);
valor_boton2 = digitalRead(boton2);
if (valor_boton2==1){
bandera2 = 0;
digitalWrite(led, LOW);
apagaralarma();
}
}
}
}
if (valor_flama == 1){
bandera3 = 1;
while (bandera3 == 1){
tiposalarma3();
digitalWrite(led, HIGH);
valor_boton2 = digitalRead(boton2);
if (valor_boton2==1){
bandera3 = 0;
digitalWrite(led, LOW);
apagaralarma();
}
}
}
if (valor_vib == 0){
bandera4 = 1;
while (bandera4 == 1){
tiposalarma5();
digitalWrite(led, HIGH);
valor_boton2 = digitalRead(boton2);
if (valor_boton2==1){
bandera4 = 0;
digitalWrite(led, LOW);
apagaralarma();
}
}
}
if (niveldeagua > 500){
bandera5 = 1;
while (bandera5 == 1){
tiposalarma4();
digitalWrite(led, HIGH);
valor_boton2 = digitalRead(boton2);
if (valor_boton2==1){
bandera5 = 0;
digitalWrite(led, LOW);
apagaralarma();
}
}
}
}