Paso 6: Código de Arduino para la alarma de la ropa
/*
alarma de luz estroboscópica de lavandería por Alline 'Butch' Emile
monitores de vuelta apagado ya sea lavadora o secadora, entonces se convierte en luz estroboscópica y a bordo de LED
Hardware es ardweeny ATmega 328, trabaja con IDE 1.0 y versiones anteriores
*/
int loopDelay = 1000; bucle de retardo entre lecturas configurada por el usuario
const int LEDpin = 13; pin de salida para a bordo del LED
const int strobePin = 5; pin de salida de disparador de luz estroboscópica
const int dryerPin = 2; pin de interruptor de secadora sala
const int washerPin = 3; pin de interruptor lavadora hall
int dryerState = 0; estado actual de la secadora, ponga a cero = off
int washerState = 0; estado actual de la lavadora, ponga a cero = off
int lastDryerState = 0; estado anterior de la secadora, ponga a cero = off
int lastWasherState = 0; estado anterior de la lavadora, ponga a cero = off
int firstDryerRead = 0; primera lectura del pin secador
int firstWasherRead = 0; primera lectura del perno de la arandela
int secondDryerRead = 0; segunda lectura del pin secador
int secondWasherRead = 0; segunda lectura del perno de la arandela
int readDelay = 8320; el número de microsegundos a retardo entre lecturas
8320 determinado experimentalmente para mejor detección de 60 hz (~99.3% exacta)
void setup() {}
pinMode(LEDpin,OUTPUT); Inicializa el pin LED como salida para debug
digitalWrite(LEDpin,LOW); sistema LED apagado
pinMode (strobePin, salida); Inicializa el pin de strobe como salida
digitalWrite(strobePin,LOW); conjunto el pin de strobe baja (Flash apagado)
pinMode (dryerPin, entrada); inicializar el secador pin como una entrada del interruptor de la sala
pinMode (washerPin, entrada); inicializar el perno arandela como entrada del interruptor de la sala
}
void loop()
{
digitalWrite(LEDpin,HIGH); Flash LED para indicar que esté activo bucle
Delay(20); valor no crítico
digitalWrite(LEDpin,LOW);
Primero vemos si hay 60 hz corriente de la secadora, si es así entonces estado secador está en (= 1)
firstDryerRead = digitalRead(dryerPin); comprobar estado de pin secador para hi parte de 60 hz
delayMicroseconds(readDelay); esperar a que sea posible próximo ciclo
secondDryerRead = digitalRead(dryerPin); luego comprobarlo una vez más para evitar picos de corriente de la lectura
Si (firstDryerRead! = secondDryerRead) {//set secador estado ON u off (! = significa no es igual)
dryerState = 1; las lecturas son diferentes así que allí debe ser 60 hz en dryerPin
}
Else {/ / no 60 Hz hasta secador debe apagarse
dryerState = 0; condición de estado estacionario, no 60 hz corriente
}
Si ((lastDryerState == 1) & & (dryerState == 0)) {/ / 60Hz cambió de a (& & significa boolean y)
Serial.println ("la secadora apagada"); notificar al usuario
digitalWrite(strobePin,HIGH); luz estroboscópica ajuste perno alta (intermitente en), usuario hará reset para apagar
digitalWrite(LEDpin,HIGH);
mientras (true) / / tarea, bucle hasta que un ser humano llega a restablecer
{
}
}
final del secador lecturas
Compruebe para 60 hz en la lavadora, si entonces estado de la lavadora está en (= 1)
firstWasherRead = digitalRead(washerPin); comprobar estado del perno de la arandela para hi parte de 60 hz
delayMicroseconds(readDelay); esperar a que sea posible próximo ciclo
secondWasherRead = digitalRead(washerPin); luego comprobarlo una vez más para evitar picos de corriente de la lectura
{if(firstWasherRead!=secondWasherRead)}
washerState = 1; las lecturas son diferentes por lo que debe ser 60 hz en washerPin
}
Else {/ / no 60 Hz hasta secador debe apagarse
washerState = 0; condición de estado estacionario, no 60 hz
}
Si ((lastWasherState == 1) & & (washerState == 0)) {/ / 60Hz cambió de a
Serial.println ("lavadora apagada"); notificar al usuario
digitalWrite(strobePin,HIGH); luz estroboscópica ajuste perno alta (intermitente en), usuario hará reset para apagar
digitalWrite(LEDpin,HIGH);
mientras (true) / / trabajo, lazo justo hasta un ser humano llega a restablecer
{
}
}
final de las lecturas de la lavadora
lastDryerState = dryerState; Guardar estado secador para comparar más adelante
lastWasherState = washerState; guarda el estado de la arandela para comparar más adelante
retardo (loopDelay); opcional, no necesario
}