Paso 2: Codificación de la vigilancia
Aquí está el código de baratija, completado. Timer.h es idéntico al paso anterior.Nota que puse 30 segundo latido del corazón tiempo de espera, esto da mi bosquejo principal un montón de tiempo
para ejecutar sus 15 + segunda subrutina y alternar el latido del corazón del estado sin tiempo fuera.
(El LED no ciclismo durante ese tiempo es inconsecuente, ya que hay actividad visible,
llevando a cabo).
Este sketch es una baratija de Adafruit 5V.
//
Los actos de baratija como un vigilante de hardware en cualquier host que tiene un reset pin que
funciones por ser arrastrado bajo tierra.
//
El Abalorio monitores hbPin, que requieren un cambio de estado en hbTime.
//
El LED de baratija imita el estado de la señal de hbPin desde el host, dando un visual
latido del corazón de ambos equipos con un LED.
//
Si no se detecta un cambio de estado, resetPin se tiró bajo para forzar un reset en el host.
Obviamente, resetPin en el Abalorio tiene que estar conectado al pin RST en el host y ambos
los dispositivos tienen que estar en un terreno común.
//
Al inicio y después de un reset, resetTime es invocada para asegurar que el host tiene tiempo para
correctamente puesta en marcha y empezar a emitir la señal del latido del corazón.
#include "timer.h"
constantes no va a cambiar, solía organizar números pin y definir retardos
const int hbPin = 3; Utilice la señal desde el host para establecer la
Estado del latido del corazón
const int resetPin = 4; Utilice esta clavija para restablecer el host
const int ledPin = 1; LED incorporado en la baratija
const unsigned resetTime largo = (1000 * 60 * 3); dar el host 3 minutos para arrancar
const unsigned hbTime largo = (1000 * 30); 30 segundo latido ciclo antes de reset
variables globales
int currState = alto;
int prevState = bajo;
Crear instancias de contador de tiempo
temporizador resetTimer = timer(resetTime); restablecer el temporizador de retardo
temporizador hbTimer = timer(hbTime); contador de latidos del corazón
/* --------------------------------------------------------------------------------- */
void setup() {}
Modos de juego pin
pinMode (resetPin, salida);
Asegúrese de que estamos empezar!
digitalWrite (resetPin, HIGH);
Comenzar con un cero a temporizadores
resetTimer.reset();
hbTimer.reset();
}
/* --------------------------------------------------------------------------- */
void loop() {}
ledHeartbeat();
Si ((hbTimer.update() == 1) & & (resetTimer.update() == 1)) {}
resetHost(resetPin);
}
}
/* --------------------------------------------------------------------------------- */
void ledHeartbeat(void) {}
Pulso del LED para demostrar que estamos vivos!
Usar señal de latido del corazón del host para el LED
De esta manera tenemos visibilidad en ambos controladores con 1 indicador
digitalWrite (ledPin, currState = digitalRead(hbPin));
Si (currState! = prevState) {/ / Estado ha cambiado
prevState = currState; Actualización
hbTimer.reset(); Reiniciar el temporizador
}
}
/* -------------------------------------------------------------------------------- */
void resetHost (int resetPin) {}
digitalWrite (resetPin, bajo); Desactivar el relé de potencia (transistores)
Delay(5000); 5 segundos para no ciclo de bombillas demasiado rápidas
digitalWrite (resetPin, HIGH); Encenderla para que pueda arrancar el host!
resetTimer.reset(); Cero hacia fuera el contador de tiempo
}