Etape 6: Code d’Arduino pour alarme de blanchisserie
/*
alarme stroboscopique blanchisserie par Emile Alline « Butch »
moniteurs tourner hors d’une laveuse ou sécheuse, puis tour à tour sur la lampe stroboscopique et à bord de LED
Matériel est ardweeny ATmega 328, fonctionne avec IDE 1.0 et versions antérieures
*/
loopDelay int = 1000 ; boucle de retard entre lecture défini par utilisateur
const int LEDpin = 13 ; broche de sortie pour à bord de LED
const int strobePin = 5 ; stroboscope, ergot de sortie
const int dryerPin = 2 ; broche de commutateur sécheuse salle
const int washerPin = 3 ; goupille de commutateur de rondelle hall
int dryerState = 0 ; état actuel de la sécheuse, la valeur zéro = off
int washerState = 0 ; état actuel de la laveuse, la valeur zéro = off
int lastDryerState = 0 ; l’état antérieur de la sécheuse, la valeur zéro = off
int lastWasherState = 0 ; l’état antérieur de la laveuse, la valeur zéro = off
int firstDryerRead = 0 ; première lecture du séchoir broche
int firstWasherRead = 0 ; première lecture de la broche de la machine à laver
int secondDryerRead = 0 ; deuxième lecture du séchoir broche
int secondWasherRead = 0 ; deuxième lecture de la broche de la machine à laver
int readDelay = 8320 ; le nombre de microsecondes pour retarder entre lectures
8320 déterminée expérimentalement donner la meilleure détection de 60 hz (~99.3% précis)
void setup() {}
pinMode(LEDpin,OUTPUT) ; Initialise les broches de la LED en sortie de débogage
digitalWrite(LEDpin,LOW) ; partit LED
pinMode (strobePin, sortie) ; initialiser la broche strobe comme sortie
digitalWrite(strobePin,LOW) ; ensemble la broche strobe faible (strobe off)
pinMode (dryerPin, entrée) ; initialiser la tige sèche comme une entrée de l’interrupteur de la salle
pinMode (washerPin, entrée) ; initialiser la broche de la machine à laver comme entrée de l’interrupteur de la salle
}
void loop()
{
digitalWrite(LEDpin,HIGH) ; flash LED pour indiquer la boucle est active
Delay(20) ; valeur non critique
digitalWrite(LEDpin,LOW) ;
tout d’abord nous voir si il y a 60 hz courant sur la sécheuse, dans l’affirmative, alors état sécheuse est sur (= 1)
firstDryerRead = digitalRead(dryerPin) ; vérifier l’état de pin sèche pour Salut partie de 60 hz
delayMicroseconds(readDelay) ; Attendez que possible prochain cycle
secondDryerRead = digitalRead(dryerPin) ; puis vérifiez à nouveau pour éviter les pointes de courant de lecture
Si (firstDryerRead! = secondDryerRead) {//set l’État séchoir à on ou off (! = signifie pas égal)
dryerState = 1 ; lectures sont différentes, donc il doit toujours y avoir 60 hz sur dryerPin
}
else {/ / aucun 60 Hz si sèche ne doit être sur off
dryerState = 0 ; État d’équilibre condition, aucun courant de 60 hz
}
Si ((lastDryerState == 1) & & (dryerState == 0)) {/ / 60Hz passée à (& & signifie boolean et)
Serial.println ("séchoir éteint") ; notifier l’utilisateur
digitalWrite(strobePin,HIGH) ; réglage stroboscopique pin haute (strobe sur), l’utilisateur va faire reset pour éteindre
digitalWrite(LEDpin,HIGH) ;
tandis que (true) / / travail réalisé, en boucle jusqu'à ce qu’un homme arrive pour réinitialiser
{
}
}
fin du séchoir lectures
Vérifiez pour 60 hz sur machine à laver, si oui, alors état de machine à laver est sur (= 1)
firstWasherRead = digitalRead(washerPin) ; vérifier l’état de la broche de la machine à laver pour Salut partie de 60 hz
delayMicroseconds(readDelay) ; Attendez que possible prochain cycle
secondWasherRead = digitalRead(washerPin) ; puis vérifiez à nouveau pour éviter les pointes de courant de lecture
{if(firstWasherRead!=secondWasherRead)}
washerState = 1 ; lectures sont différentes, donc il doit y avoir 60 hz sur washerPin
}
else {/ / aucun 60 Hz si sèche ne doit être sur off
washerState = 0 ; État d’équilibre condition, aucune 60 hz
}
Si ((lastWasherState == 1) & & (washerState == 0)) {/ / 60Hz passée à
Serial.println ("laveuse éteint") ; notifier l’utilisateur
digitalWrite(strobePin,HIGH) ; réglage stroboscopique pin haute (strobe sur), l’utilisateur va faire reset pour éteindre
digitalWrite(LEDpin,HIGH) ;
tandis que (true) / / travail, boucle juste jusqu'à ce qu’un homme arrive pour réinitialiser
{
}
}
fin des lectures de la rondelle
lastDryerState = dryerState ; enregistrer l’état de séchoir pour la comparaison plus tard
lastWasherState = washerState ; enregistrer l’état de la rondelle pour la comparaison plus tard
retard (loopDelay) ; en option, non requis
}