Stap 4: De Code van de Arduino
Hier is de code die ik schreef voor dit project. U moet zitten kundig voor plak deze direct in een nieuwe Arduino Sketch
Toilet Sensor
int ToiletSensor = 0; Toilet Sensor Pin int ToiletValue = 0; int ToiletAverage = 520; int ToiletDifference = 0; int ToiletSensitivity = 20;
Koudwater pijp Sensor int SinkOneSensor = 1; Koudwater pijp Sensor Pin int SinkOneValue = 0; int SinkOneAverage = 520; int SinkOneDifference = 0; int SinkOneSensitivity = 20;
Warmwater pijp Sensor int SinkTwoSensor = 2; Warmwater pijp Sensor Pin int SinkTwoValue = 0; int SinkTwoAverage = 520; int SinkTwoDifference = 0; int SinkTwoSensitivity = 20;
int UnwashedHands = false; True = handen niet zijn gewassen, false = handen zijn int DoorSensorPin gewassen = 7; Deur Sensor Pin int DoorSensor = laag; zintuigen bij de toilet deur is geopend int AlarmPin = 9; Alarm uitgang pins unsigned long ResetTimer = 0; / / opgeslagen tijd voor automatische reset
void setup {Serial.begin(9600) pinMode (DoorSensorPin, INPUT); pinMode (AlarmPin, uitvoer);
Output pinnen voor indicator LEDs tijdens het testen van pinMode (9, OUTPUT); pinMode (10, OUTPUT); pinMode (11, OUTPUT); pinMode (12, OUTPUT); pinMode (13, OUTPUT); }
void loop {}
Lees elke sensor en automatisch aanpassen van de gemiddelde waarde voor elke sensor ToiletValue = analogRead(ToiletSensor); ToiletDifference = ToiletValue - ToiletAverage; ToiletAverage = ToiletAverage + (ToiletDifference / 10);
SinkOneValue = analogRead(SinkOneSensor); SinkOneDifference = SinkOneValue - SinkOneAverage; SinkOneAverage = SinkOneAverage + (SinkOneDifference / 10);
SinkTwoValue = analogRead(SinkTwoSensor); SinkTwoDifference = SinkTwoValue - SinkTwoAverage; SinkTwoAverage = SinkTwoAverage + (SinkTwoDifference / 10);
DoorSensor = digitalRead(DoorSensorPin);
Als (abs(ToiletDifference) > ToiletSensitivity & & millis() > 20000) //waits 20 seconden om gemiddelden {digitalWrite (10, hoge); //turns op indicator LED Serial.println("Toilet") //This Sensor overschreden de gevoeligheid drempel Serial.println(ToiletDifference); //Difference tussen de huidige waarde van de sensor en sensor gemiddelde if((millis()-ResetTimer) > 30000) //waits 30 seconden voor tank te vullen voordat de toilet-sensor opnieuw kan worden geactiveerd {UnwashedHands = true, //sets hand wassen status ResetTimer = millis(); //Stores huidige tijd voor automatische reset}} else {digitalWrite (10 LAAG); }
Als (abs(SinkOneDifference) > SinkOneSensitivity & & millis() > 20000) //waits 20 seconden om gemiddelden {digitalWrite (11, hoog), //turns op indicator LED Serial.println("Sink One"), //This Sensor overschreden de gevoeligheid drempel Serial.println(SinkOneDifference); //Difference tussen de huidige waarde van de sensor en sensor gemiddelde UnwashedHands = false;} else {digitalWrite (11, laag);}
Als (abs(SinkTwoDifference) > SinkTwoSensitivity & & millis() > 20000) //waits 20 seconden om gemiddelden {digitalWrite (12, hoog), //turns op indicator LED Serial.println("Sink Two"), //This Sensor overschreden de gevoeligheid drempel Serial.println(SinkTwoDifference); //Difference tussen de huidige waarde van de sensor en sensor gemiddelde UnwashedHands = false;} else {digitalWrite (12, laag);}
Als (DoorSensor == HIGH) {Serial.println("Door") digitalWrite (13, hoge); //turns op indicator LED
if(UnwashedHands == True) {for (int i = 0; ik < = 5; i ++) //sound alarm voor 5 seconden {digitalWrite (AlarmPin, hoge) //Activates Alarm delay(500) digitalWrite (AlarmPin, laag); delay(500);}}
} else {digitalWrite (13, laag);} if((millis()-ResetTimer) > 300000) //resets sensoren na 5 minuten van inactiviteit {UnwashedHands = false;}}