/* 24/09/2021 catWasherV4 Arduino Nano, pir sensor, temp sensor, relay module Senses movement and closes relay that starts water pump temp sensor to prevent pump running if frozen pins used A2 tempPin 8 pir sensor 9 pump relay 13 led */ const int tempPin = A2;//analog pin const int pirPin = 8; //movement sensor const int relayPin = 9; //Pump Relay const int ledPin = 13; //Built in LED unsigned long squirtTimer; int squirtState; //0 = off 1= someones getting wet unsigned long tempTimer; float tempCelc; void setup() { Serial.begin(9600); Serial.println("catWasherV4"); pinMode(pirPin, INPUT); pinMode(ledPin, OUTPUT); pinMode(relayPin, OUTPUT); } void loop() { int tempReading; //check the temperature if (millis() > tempTimer) { //tempTimer = millis() + 1000;//1 sec for testing tempTimer = millis() + 600000;//10 minutes tempReading = analogRead(tempPin); tempCelc = (tempReading / 1024.0) * 500; Serial.println(tempCelc); } //if the temp is above 4.0C (allows time for frozen system to de ice) if (tempCelc > 4.00) {//don't fire if temp lower than 4C...colder outside case //check if it's time to do something if (millis() > squirtTimer) { //either time to check pir or turn water off //Already squirting water so turn it off and wait 25 seconds if (squirtState > 0) { digitalWrite(relayPin, LOW); //water spraying so time to turn it off digitalWrite(ledPin, LOW);//led off squirtState = 0; squirtTimer = millis() + 25000;//stop everything for 25 secs } else { //Check the momement sensor for movement squirtState = digitalRead(pirPin); //Serial.println(squirtState); //If it spots movement...turn the relay/pump on if (squirtState > 0) { digitalWrite(relayPin, HIGH); //turn the pump on :-) digitalWrite(ledPin, HIGH);//led on //squirt for 5 seconds...cat will be up the road by now squirtTimer = millis() + 5000;//5 seconds is enough } else { //no movement check again in 0.3 seconds squirtTimer = millis() + 300; //check again in 0.3 seconds } } } } }