soy un mirón del foro, rara vez escribo ya que soy fan del buscador y alguna de las preguntas que he tenido las he ubicado en post antiguos.
ahora me surgió una duda y quería ver si son tan amables de darme un poco de luz en este pequeño cuestiona miento:
tengo un sistema de control de una Granja de Codornices que me monte junto con un pequeño sistema SCADA, el cual monitoreo remotamente con un Teamviewer a una maquina virtual instala en mi casa, pero como saben uno no puede estar pegado al celular viendo parámetros de incubadoras, niveles de tanques de agua ETC, por lo que viendo en el foro americano encontré la posibilidad de enviar twitters por un arduino nano conectado al internet.
el ejemplo que encontré es muy básico es un "HOLA TWITTER" y nada mas, mi intencion es programar este arduino nano para leer entradas digitales que saldrán del Master que es un Mega y dependiendo del digital que se active y lea el nano mande una alarma correpondiente a ese punto.
por ejemplo que los digitales sean los siguiente:
Digital 5 (HIGH) = Puerta abierta!.
Digital 6 (HIGH) = Nivel de tanque bajo activando válvula de llenado!.
Digital 7 (HIGH) = Parametro "X" de incubación fuera de rango!.
ETC.
hasta que todo bien, pero si habilito esto con una sentencia básica de IF el void loop me llenara de notificaciones el celular.
mi cuestiona miento es:
que instrucción debo utilizar para que la condición se cumpla una vez y no se genere un loop infino de alarmas, por ejemplo; que se active la arma de la puerta solo me envié una sola alarma y evitar que al estar contante esta condición se envíen muchas alarmas con el mismo problema.
Tienes algo que se llama IFFT que te permite crear todo tipo de notificaciones desde/hasta el sistema que quieras, twitter, facebook, IOS, Android.. lo que gustes, email, sms, telegram, etc.
Creo que es lo que buscas.
Hay soluciones para Arduino incluidas.
Ahora me doy cuenta que leí a medias.
Cuando una señal se ejecuta como puerta abierta o un HIGH/LOW según sea el estado del sensor, lo unico que debes hacer es ver el flanco.
Que es el flanco, pues el cambio de la señal de su estado anterior al nuevo estado. Eso te asegura (si no rebota) que lo hará una sola vez. Casi siempre eso pasa.
Lo he escrito muchas veces pero no molesta hacerlo una vez y claro, no será la última.
defines un par de variables bool
bool estado, estadoAnt = false; // esta ultima es la que uso para almacenar el viejo estado del switch
en tu loop lees el pin que supongamos se llame puertaPin (tu decides cual pin usas)
estado = digitalRead(puertaPin);
if (estado && !esatdoAnt) { // esta instrucción mira el flanco de 0 (anterior) a 1 (nuevo)
// aca envias tu alerta
}
estadoAnt = estado;
surbyte:
Tienes algo que se llama IFFT que te permite crear todo tipo de notificaciones desde/hasta el sistema que quieras, twitter, facebook, IOS, Android.. lo que gustes, email, sms, telegram, etc.
Creo que es lo que buscas.
Hay soluciones para Arduino incluidas.
Ahora me doy cuenta que leí a medias.
Cuando una señal se ejecuta como puerta abierta o un HIGH/LOW según sea el estado del sensor, lo unico que debes hacer es ver el flanco.
Que es el flanco, pues el cambio de la señal de su estado anterior al nuevo estado. Eso te asegura (si no rebota) que lo hará una sola vez. Casi siempre eso pasa.
Lo he escrito muchas veces pero no molesta hacerlo una vez y claro, no será la última.
defines un par de variables bool
bool estado, estadoAnt = false; // esta ultima es la que uso para almacenar el viejo estado del switch
en tu loop lees el pin que supongamos se llame puertaPin (tu decides cual pin usas)
estado = digitalRead(puertaPin);
if (estado && !esatdoAnt) { // esta instrucción mira el flanco de 0 (anterior) a 1 (nuevo)
// aca envias tu alerta
}
estadoAnt = estado;
Muchas Gracias Surbyte, aplicare la lógica que me facilitaste y de pasada veo en que consiste el IFTT, ahorita ando en el trabajo espero y la pagina la tengo bloqueda ;C