Stap 6: Arduino code voor Wasserij alarm
/*
Wasserij strobe alarm door Emile 'Butch' Alline
monitoren turn off van een wasmachine of droger, dan draait op stroboscoop en aan boord van de LED
Hardware is ardweeny 328 ATmega, werkt met de IDE 1.0 en eerder
*/
int loopDelay = 1000; lus vertraging tussen lezingen ingesteld door gebruiker
Const int LEDpin = 13; uitgang pins voor aan boord van de LED
Const int strobePin = 5; flitser trigger uitgang pins
Const int dryerPin = 2; droger hall schakelaar pin
Const int washerPin = 3; wasmachine hall schakelaar pin
int dryerState = 0; huidige stand van de droger, ingesteld op nul = off
int washerState = 0; huidige stand van de wasmachine, ingesteld op nul = off
int lastDryerState = 0; vorige staat van de droger, ingesteld op nul = off
int lastWasherState = 0; vorige status van de wasmachine, ingesteld op nul = off
int firstDryerRead = 0; eerste lezing van de droger pin
int firstWasherRead = 0; eerste lezing van de ring pin
int secondDryerRead = 0; tweede lezing van de droger pin
int secondWasherRead = 0; tweede lezing van de ring pin
int readDelay = 8320; het aantal microseconden moet worden gewacht tussen lezingen
8320 experimenteel bepaald opleveren van de beste detectie van 60 hz (~99.3% nauwkeurig)
VOID Setup {}
pinMode(LEDpin,OUTPUT); LED pin initialiseren als output voor debug
digitalWrite(LEDpin,LOW); LED verrekening
pinMode (strobePin, OUTPUT); initialiseren van de stroboscoop pin als uitgang
digitalWrite(strobePin,LOW); set de strobe pin LOW (strobe uit)
pinMode (dryerPin, INPUT); initialiseren van de droger pin als input uit hall-switch
pinMode (washerPin, INPUT); initialiseren van de ring pin als input uit hall-switch
}
void loop
{
digitalWrite(LEDpin,HIGH); flitser LED om aan te geven van de lus is actief
vertraging(20); waarde niet kritisch
digitalWrite(LEDpin,LOW);
eerst zien we als er 60 hz huidige op de droger, Zoja dan droger staat brandt (= 1)
firstDryerRead = digitalRead(dryerPin); status van droger pin voor Hallo deel van 60 hz
delayMicroseconds(readDelay); wachten voor mogelijke volgende cyclus
secondDryerRead = digitalRead(dryerPin); Controleer het opnieuw om te voorkomen dat lezen lichtnet spikes
Als (firstDryerRead! = secondDryerRead) {//set de droger staat op of af (! = betekent niet gelijk)
dryerState = 1; lezingen zijn verschillend, dus er moet nog steeds 60 hz op dryerPin
}
else {/ / geen 60 Hz dus droger moet zijn uitgeschakeld
dryerState = 0; steady-state toestand, geen huidige 60 hz
}
Als ((lastDryerState == 1) & & (dryerState == 0)) {/ / 60 hz gewijzigd van op (& & betekent boolean en)
Serial.println ("droger uitgeschakeld"); gebruiker op de hoogte
digitalWrite(strobePin,HIGH); set strobe pin HIGH (strobe op), de gebruiker zal doen reset voor zwenking op vandoor
digitalWrite(LEDpin,HIGH);
terwijl (waar) / / klus te klaren, lus totdat een mens komt om te resetten
{
}
}
einde van de droger lezingen
Controleerinderegel voor 60 hz op de ring, dus dan is de wasmachine staat op (= 1)
firstWasherRead = digitalRead(washerPin); status van wasmachine pin voor Hallo deel van 60 hz
delayMicroseconds(readDelay); wachten voor mogelijke volgende cyclus
secondWasherRead = digitalRead(washerPin); Controleer het opnieuw om te voorkomen dat lezen lichtnet spikes
if(firstWasherRead!=secondWasherRead) {}
washerState = 1; lezingen zijn verschillend, dus moet er 60 hz op washerPin
}
else {/ / geen 60 Hz dus droger moet zijn uitgeschakeld
washerState = 0; steady-state toestand, geen 60 hz
}
Als ((lastWasherState == 1) & & (washerState == 0)) {/ / 60 hz gewijzigd van op uit
Serial.println ("wasmachine uitgeschakeld"); gebruiker op de hoogte
digitalWrite(strobePin,HIGH); set strobe pin HIGH (strobe op), de gebruiker zal doen reset voor zwenking op vandoor
digitalWrite(LEDpin,HIGH);
terwijl (waar) / / taak gedaan, net lus tot een mens binnenkomt om te resetten
{
}
}
einde van wasmachine lezingen
lastDryerState = dryerState; opslaan van de droger staat voor later vergelijking
lastWasherState = washerState; wasmachine staat voor later vergelijking opslaan
vertraging (loopDelay); optioneel, geen vereiste
}