Como puedo controlar el buzzer y monitoreo de entradas mediante pagina web mediante enc28j60

Hola, he buscado informacion de como debo monitorear las entradas del arduino mediante una pagina web y solo consegui lo que he obtenido a traves de una tabla, arrojandome valores de 0 y 1, a ver si es posible que me indique ON/OFF en vez de esos valores?

Y lo otro es como podria controlar el apagado del buzzer. Tengo una serie de sensores y un contactor magnetico que cuando se active, encienda el buzzer, lo que quiero es apagarlo mediante un boton a traves de la pagina web. Lo he intentando, y se cuelga la pagina web al presionar el boton.

Tengo seis sensores de los cuales al ser activados hace que el buzzer suene de manera distinta.

Y el boton modo noche me gustaria que pudiera hacer lo mismo que la linea de codigo del condicional de si boton ==1 y sensor luz < 800. Pero tampoco. Alguna idea? Por favor

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;                        // 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 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;
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[5000]; // 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&oacutetico de gesti&oacuten 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&oacutetico de gesti&oacuten 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&oacutedigo de validaci&oacuten, 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&oacutedigo de Validaci&oacuten <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&oacutetico de gesti&oacuten 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\" >$D</td>"
        "</tr>"

        "<tr>"
        "<td>Sonido</td>"
        "<td align=\"center\" >$D</td>"
        "</tr>"

        "<tr>"
        "<td>Fuego</td>"
        "<td align=\"center\" >$D</td>"
        "</tr>"

        "<tr>"
        "<td>Contactores</td>"
        "<td align=\"center\" >$D</td>"
        "</tr>"

        "<tr>"
        "<td>Vibraci&oacuten</td>"
        "<td align=\"center\" >$D</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='./?data1=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),
    digitalRead(26),
    analogRead(2),
    digitalRead(6),
    digitalRead(8),
    analogRead(7),
    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(boton1, INPUT);
   pinMode(boton2, INPUT);
   digitalWrite(led, LOW);

    
  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 tiposalarma() {
      int x;
for ( x=0; x<180; 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);
       }
x=0;
}

void tiposalarma1() {
      int x;
for ( x=0; x<180; x++){
        sinVal1 = (sin(x*(3.1412/180)));                           // convertir grados a radianes
        toneVal1 = 2000 + (int(sinVal1*1000));                      // convertir frecuencia del valor. 
         tone(alarma,toneVal1);
        delay(10);
       }
x=0;
}

void tiposalarma2() {
      int x;
for ( x=0; x<180; x++){
        sinVal2 = (sin(x*(3.1412/180)));                           // convertir grados a radianes
        toneVal2 = 2000 + (int(sinVal2*1000));                      // convertir frecuencia del valor. 
         tone(alarma,toneVal2);
        delay(20);
       }
x=0;
}

void tiposalarma3() {
      int x;
for ( x=0; x<180; x++){
        sinVal3= (sin(x*(3.1412/180)));                           // convertir grados a radianes
        toneVal3 = 2000 + (int(sinVal3*1000));                      // convertir frecuencia del valor. 
         tone(alarma,toneVal3);
        delay(30);
       }
x=0;
}

void tiposalarma4() {
      int x;
for ( x=0; x<180; x++){
        sinVal4 = (sin(x*(3.1412/180)));                           // convertir grados a radianes
        toneVal4 = 2000 + (int(sinVal4*1000));                      // convertir frecuencia del valor. 
         tone(alarma,toneVal4);
        delay(40);
       }
x=0;
}

void tiposalarma5() {
      int x;
for ( x=0; x<180; x++){
        sinVal5 = (sin(x*(3.1412/180)));                           // convertir grados a radianes
        toneVal5 = 2000 + (int(sinVal5*1000));                      // convertir frecuencia del valor. 
         tone(alarma,toneVal5);
        delay(50);
       }
x=0;
}

void apagaralarma(){
  noTone(alarma);
}

void loop() 
{
  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 /?data1=0") != 0) {
         Serial.println("Led1 OFF");
         digitalWrite(led, LOW);
         statusAlarma = "OFF";
      }
    }

    valor_inf = digitalRead(infrarrojo);
    valor_vib= digitalRead(sensorvib);
    valor_sonido=digitalRead(sensorsonido);
    valor_mag = digitalRead(sensormag) ;
    valor_boton1 = digitalRead(boton1);
    valor_boton2 = digitalRead(boton2);

    sensor_luz=analogRead(A1);
    niveldeagua = analogRead(A2);
    sensorflama=analogRead(A7);
    
    if (valor_boton1 == 1 || sensor_luz < 800){
    if (valor_inf == 0){
      bandera = 1;
      while (bandera == 1){
     tiposalarma();
     digitalWrite(led, HIGH);
     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 (sensorflama > 100 && sensorflama < 300){
      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();
        valor_boton2 = digitalRead(boton2);
        if (valor_boton2==1){
          bandera5 = 0;
          digitalWrite(led, HIGH);
          apagaralarma();
        }
      }      
    }
    
}

Prueba reemplazar, por ej.

digitalRead(12),

por

digitalRead(12) ? "ON" : "OFF",

en Sensores().
Lo mismo para los otros 3 digitalRead().

Te aclaro que no estoy seguro si funcionará (si es que llega compilar). Ahora no lo puedo comprobar.

Codigos que tienen delay(10) delay(30) en ciclos solo transforman eso en grandes retardos de tiempo. NO USEN DELAY()
Esto por ejemplo

for ( x=0; x<180; x++){
        sinVal5 = (sin(x*(3.1412/180)));                           // convertir grados a radianes
        toneVal5 = 2000 + (int(sinVal5*1000));                      // convertir frecuencia del valor. 
         tone(alarma,toneVal5);
        delay(50);
       }
50 mseg x 180 ciclos = 9000 mseg = 9 seg de un tono.. okay supongamos que para la alarma esta bien

dede tipoalarma a tipoalarma5 veo lo mismo

En el código me encuentro con
while (bandera == 1){
     tiposalarma();
     digitalWrite(led, HIGH);
     valor_boton2 = digitalRead(boton2);

o sea que debo esperar 9 seg para ver si reacciona al boton2.
Tienes que replantear esos tonos de alarma sin que bloqueen todo el comportamiento.
Usa millis().

Si compila,pero muestra valores aleatorios. Ni el "ON" ni el "OFF"

Lo que pasa es que en el proyecto establecieron que cada sensor debe sonar de un modo distinto, se podria obtener el mismo resultado supongo que con la funcion millis()?

Mira si te sirve este ejemplo.

No es dificil de hacer que solo veas un botón para encender/apagar incluso cambiarle el color, envias el codigo HTML según el estado de la variable

En este ejemplo uso CSS para usar un estilo según el estado de la variable.

if (estadoTermostato) {
      t += "<a href=\"/cambiotermostato/\"><button class=\"button\">Termostato ON</button></a><br>";
    } else {
      t += "<a href=\"/cambiotermostato/\"><button class=\"button button2\">Termostato OFF</button></a><br>";
    }

También puedes monitorizar sensores en tiempo real, mira este ejemplo.

Tienes que cambiar "$D" (que inserta un entero) por "$S" (que inserta un texto) en el código html para esos 4 casos
Por ej.

"<tr>" 
"<td>Infrarrojo</td>" 
"<td align=\"center\" >$D</td>" 
"</tr>"

cambiar a

"<tr>" 
"<td>Infrarrojo</td>" 
"<td align=\"center\" >$S</td>" 
"</tr>"

Agrego: Revisa el archivo "bufferfiller.h" de la librería que te indica todas las opciones de formato para "imprimir" en el buffer.

listo, resuelto de esa manera. Gracias.

Ahora me pondre con las cosas faltantes.

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.

Aplique las recomendaciones de @anon90500195 y todo bien y aplique el consejo de los millis de @Surbyte. Alguna recomendacion de su parte?

Dejo el codigo a ver si alguno logra visualizar el error en el control del buzzer.

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&oacutetico de gesti&oacuten 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&oacutetico de gesti&oacuten 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&oacutedigo de validaci&oacuten, 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&oacutedigo de Validaci&oacuten <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&oacutetico de gesti&oacuten 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&oacuten</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();
        }
      }      
    }
    
}

Han pasado dos meses que sigo intentando apagar el buzzer desde una aplicacion web con arduino como servidor. Me ha funcionado perfectamente, menos apagar la alarma. No se si es que el codigo esta malo, o simplemente no llega la corriente, porque la verdad ningun control me sirve. Probe con un codigo aparte de encendido y apagado, y prende muy tenuemente, casi ni se visualiza el cambio. Tal vez no apague la alarma porque la corriente que necesita no es suficiente? Porque si llega el dato al arduino, por la titilicacion de los leds.
Me ayudan por fa.

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};
//static byte myip[] = {190,170,95,141};   //192,168,1,200
//static byte gwip[] = { 190,170,95,129 };
//static byte dnsip[] = { 10,64,0,1 };

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&oacutetico de gesti&oacuten 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&oacutetico de gesti&oacuten y monitoreo de seguridad basado en la placa Arduino.</h3><br>"
    "<body bgcolor=\"#FFFFF\">"
    "<h3 align=\"center\"> Ingresa su c&oacutedigo de validaci&oacuten, 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&oacutedigo <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&oacutetico de gesti&oacuten 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 align=\"left\"scope=\"col\">Sensor</th>" 
        "<th scope=\"col\">Estado</th>"
        "</tr>"

        "<tr>"
        "<td>Presencia</td>"
        "<td align=\"center\" >$S</td>"
        "</tr>"

        "<tr>"
        "<td>Sonido</td>"
        "<td align=\"center\" >$S</td>"
        "</tr>"

        "<tr>"
        "<td>Incendio</td>"
        "<td align=\"center\" >$S</td>"
        "</tr>"

        "<tr>"
        "<td>Apertura de puerta o ventana</td>"
        "<td align=\"center\" >$S</td>"
        "</tr>"

        "<tr>"
        "<td>Temblor</td>"
        "<td align=\"center\" >$S</td>"
        "</tr>"

        "<tr>"
        "<td>Inundaci&oacuten</td>"
        "<td align=\"center\" >$D</td>"
        "</tr>"

        "</table>"

       "<h3 align=\"center\">Inundaci&oacuten = ON si es > 500 </h3>"
       
       "<div id=\"Alarma\">"
       "Estado Alarma = $S <br>"
       "<a href=\"/A1=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) ? "On" : "Off",
    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/A1=0") != 0) {
          Serial.println("Comando ON recibido");
          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_flama == 1){    
      bandera3 = 1;
      while (bandera3 == 1){
        tiposalarma3();
        digitalWrite(led, HIGH);
        statusAlarma = "ON";
        valor_boton2 = digitalRead(boton2);
        if (valor_boton2==1){
          bandera3 = 0;
         digitalWrite(led, LOW);
          apagaralarma();
          statusAlarma = "OFF";
        }
      }
    }
 
    if (valor_boton1 == 0 || sensor_luz > 300){
    if (valor_inf == 0){
      bandera = 1;
      while (bandera == 1){
     tiposalarma();
     statusAlarma = "ON";
     digitalWrite(led, HIGH);
     Lectura_paginaweb();
     valor_boton2 = digitalRead(boton2);
     if (valor_boton2==1){
      bandera = 0;
     digitalWrite(led, LOW);
      apagaralarma();
      statusAlarma = "OFF";
      }
      }
    } 

    if (valor_mag == 1){
      bandera1 = 1;
      while (bandera1 == 1){
        tiposalarma1();
        statusAlarma = "ON";
        digitalWrite(led, HIGH);
        valor_boton2 = digitalRead(boton2);
        if (valor_boton2==1){
          bandera1 = 0;
          digitalWrite(led, LOW);
          apagaralarma();
          statusAlarma = "OFF";
        }
      }
    }

      if (valor_sonido == 1){
      bandera2 = 1;
      while (bandera2 == 1){
        tiposalarma2();
        statusAlarma = "ON";
        digitalWrite(led, HIGH);
        valor_boton2 = digitalRead(boton2);
        if (valor_boton2==1){
          bandera2 = 0;
          digitalWrite(led, LOW);
          apagaralarma();
          statusAlarma = "OFF";
        }
      }
    }
    }

        if (niveldeagua > 500){
      bandera5 = 1;
      while (bandera5 == 1){
        tiposalarma4();
        statusAlarma = "ON";
        digitalWrite(led, HIGH);
        valor_boton2 = digitalRead(boton2);
        if (valor_boton2==1){
          bandera5 = 0;
          digitalWrite(led, LOW);
          apagaralarma();
          statusAlarma = "OFF";
        }
      }      
    }
    
     if (valor_vib == 0){
      bandera4 = 1;
      while (bandera4 == 1){
        tiposalarma5();
        statusAlarma = "ON";
        digitalWrite(led, HIGH);
        valor_boton2 = digitalRead(boton2);
        if (valor_boton2==1){
          bandera4 = 0;
          digitalWrite(led, LOW);
          apagaralarma();
          statusAlarma = "OFF";
        }
      }
    }
    
}

Yo se que hay muchas partes que se repiten, en especial con las alarmas. Pero me pidieron especificamente que cada alarma sonara de una manera distinta. Y eso es lo mejor que pude hacer. Alguna idea de como apagar el buzzer?

Funciona perfecto el monitoreo. Pero nada el control. Lo he probado con leds, cambiando el codigo del ajax, pero nada. Ni alarma ni leds.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.