//***Project Rain Shield***
//Measure temp every ten minutes, if condition is met, pull pin high to activate relay every 10 minutes for 10 seconds.
//Relay will control solenoid to turn on water.
//Delay between relay and water start must be accounted for.
#include <Wire.h>
//#include "Adafruit_MCP9808.h"
//Create the MCP9808 temperature sensor object
//Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// Pin for relay module set as output
int myRelay13 = 13;
int myRelay12 = 12;
int myRelay11 = 11;
int myRelay10 = 10;
int myRelay9 = 9;
int myRelay8 = 8;
int myRelay7 = 7;
int myRelay6 = 6;
int myRelay5 = 5;
///////////////////////////////////////////////////////////
int ledPins[] = {
2, 3, 4, 5, 6, 7, 8
}; // an array of pin numbers to which LEDs are attached
const int analogPin = A0;//analogno
///////////////////////////////////////////////////////////
volatile byte relayState5 = LOW;
volatile byte relayState6 = LOW;
volatile byte relayState7 = LOW;
volatile byte relayState8 = LOW;
int myCount = 1;
int buttonState2 = LOW;
int buttonState3 = LOW;
int buttonState4 = LOW;
void setup() {
Serial.begin(9600);
Serial.println("MCP9808! Connected");
tft.begin();
tft.setCursor(2, 10);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(1);
tft.println("MCP9808! Connected");
tft.setTextColor(ILI9341_YELLOW);
pinMode (2, INPUT_PULLUP);
pinMode (3, INPUT_PULLUP);
pinMode (4, INPUT_PULLUP);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
pinMode(A0, INPUT_PULLUP);//analogno
}
void loop() {
//Wake temp sensor
// tempsensor.wake();
buttonState2 = digitalRead (2);//ema
buttonState3 = digitalRead (3);//damjan
buttonState4 = digitalRead (4);//prizemlje
// float myTemp = 101; //= tempsensor.readTempF();
// Serial.print(myCount);Serial.print(" Temp: "); Serial.print(myTemp, 1); Serial.println("*F");
// a ) Emin termostat ON
if(buttonState2 == LOW && buttonState3 == HIGH && buttonState4 == HIGH)
{ // pullRelayHIGH5();
pullRelayHIGH6();
pullRelayHIGH7();
pullRelayHIGH8();
delay(2000);
}
else{
pullRelayLOW5();
pullRelayLOW6();
pullRelayLOW7();
pullRelayLOW8();
}
delay(2000);
// b ) Ema i Damjan termostat ON
if(buttonState2 == LOW && buttonState3 == LOW && buttonState4 == HIGH)
{ // pullRelayHIGH5();
// pullRelayHIGH6();
pullRelayHIGH7();
pullRelayHIGH8();
delay(2000);
}
else{
pullRelayLOW5();
pullRelayLOW6();
pullRelayLOW7();
pullRelayLOW8();
}
delay(2000);
// c ) Ema i Damjan termostat ON
// d ) Ema i Damjan termostat ON
// e ) Ema i Damjan termostat ON
// f ) Ema i Damjan termostat ON
//tempsensor.shutdown_wake(1); // shutdown MSP9808 - power consumption ~0.1 mikro Ampere, stops temperature sampling
// myCount = myCount+1;
// delay(100);
}
// pumpa sprat
void pullRelayHIGH5() {
if(relayState5 != HIGH){
digitalWrite(myRelay5, HIGH);
relayState5 = HIGH;
Serial.println("RELAY ON-Pumpa sprat");
tft.println("RELAY ON-Pumpa sprat");
}
}
void pullRelayLOW5() {
if(relayState5 != LOW){
digitalWrite(myRelay5, LOW);
relayState5 = LOW;
Serial.println("RELAY OFF-Pumpa sprat");
tft.println("RELAY OFF-Pumpa sprat");
}
}
//pumpa prizemlje
void pullRelayHIGH6() {
if(relayState6 != HIGH){
digitalWrite(myRelay6, HIGH);
relayState6 = HIGH;
Serial.println("RELAY ON-Pumpa prizemlje");
}
}
void pullRelayLOW6() {
if(relayState6 != LOW){
digitalWrite(myRelay6, LOW);
relayState6 = LOW;
Serial.println("RELAY OFF-Pumpa prizemlje");
}
}
void pullRelayHIGH7() {
if(relayState7 != HIGH){
digitalWrite(myRelay7, HIGH);
relayState7 = HIGH;
Serial.println("RELAY ON-Bojler");
}
}
void pullRelayLOW7() {
if(relayState7 != LOW){
digitalWrite(myRelay7, LOW);
relayState7 = LOW;
Serial.println("RELAY OFF-Bojler");
}
}
void pullRelayHIGH8() {
if(relayState8 != HIGH){
digitalWrite(myRelay8, HIGH);
relayState8 = HIGH;
Serial.println("RELAY ON-Aktuatori prizemlje");
}
}
void pullRelayLOW8() {
if(relayState8 != LOW){
digitalWrite(myRelay8, LOW);
relayState8 = LOW;
Serial.println("RELAY OFF-Aktuatori prizemlje");
}
}