//***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"
#include <Adafruit_ST7735.h> // Hardware-specific library
#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 myRelay15 = 15;
int myRelay14 = 14;
int myRelay13 = 13;
int myRelay12 = 12;
int myRelay11 = 11;
int myRelay10 = 15;
int myRelay9 = 14;
int myRelay8 = 8;
int myRelay7 = 7;
int myRelay6 = 6;
int myRelay5 = 5;
int timeA = 0;//broj ponavljanja petlje A
int timeB = 0;
int timeC = 0;
int timeD = 0;
int timeE = 0;
int timeF = 0;
int timeG = 0;
int timeH = 0;
///////////////////////////////////////////////////////////
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;
volatile byte relayState9 = LOW;
volatile byte relayState10 = LOW;
volatile byte relayState13 = LOW;
volatile byte relayState14 = LOW;
volatile byte relayState15 = LOW;
int myCount = 1;
int buttonState2 = LOW;
int buttonState3 = LOW;
int buttonState4 = LOW;
int oldState2 = LOW; //staro stanje preekidaca da spreci non stop loop
int oldState3 = LOW; //staro stanje preekidaca da spreci non stop loop
int oldState4 = LOW; //staro stanje preekidaca da spreci non stop loop
void setup() {
Serial.begin(9600);
Serial.println("MCP9808! Connected");
tft.begin();
tft.setCursor(2, 10);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(2);
tft.println("MCP9808! Connected");
tft.drawLine(10, 30, 200, 30, ST7735_GREEN);
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 (14, OUTPUT);
pinMode (15, OUTPUT);
}
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");
int newState2 = digitalRead(2); //staro stanje preekidaca da spreci non stop loop
int newState3 = digitalRead(3); //staro stanje preekidaca da spreci non stop loop
int newState4 = digitalRead(4); //staro stanje preekidaca da spreci non stop loop
//staro stanje preekidaca da spreci non stop loop
if(newState2 != oldState2 || newState3 != oldState3 || newState4 != oldState4)
{
// a ) Ema termostat ON
if(buttonState2 == LOW && buttonState3 == HIGH && buttonState4 == HIGH)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeA++;
Serial.println("Ema termostat-ON" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeA);
tft.setTextColor(ILI9341_RED);
tft.println("Ema termostat-ON");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeA);
pullRelayHIGH5();//pumpa sprat 5
pullRelayLOW6();//pumpa prizemlje 6 OFF
pullRelayHIGH7();//aktuator prizemlje 7
pullRelayLOW8();//aktuator Ema 8
pullRelayHIGH14();//aktuator Damjan 9
pullRelayHIGH15();//bojler 10
delay(2000);}
// b ) Ema i Damjan termostat ON
if(buttonState2 == LOW && buttonState3 == LOW && buttonState4 == HIGH)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeB++;
Serial.println("Ema i Damjan termostati-ON" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeB);
tft.setTextColor(ILI9341_RED);
tft.println("Ema i Damjan termostat-ON");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeB);
pullRelayHIGH5();//pumpa sprat 5
pullRelayLOW6();//pumpa prizemlje 6 OFF
pullRelayHIGH7();//aktuator prizemlje 7
pullRelayLOW8();//aktuator Ema 8 OFF
pullRelayLOW14();//aktuator Damjan 9 OFF
pullRelayHIGH15();//bojler 10
delay(2000);
}
// c ) Ema i Damjan i prizemlje termostat ON
if(buttonState2 == LOW && buttonState3 == LOW && buttonState4 == LOW)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeC++;
Serial.println("Ema,Damjan i prizemlje termostati-ON" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeC);
tft.setTextColor(ILI9341_RED);
tft.println("Ema,Damjan i prizemlje termostati-ON");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeC);
pullRelayHIGH5();//pumpa sprat 5
pullRelayHIGH6();//pumpa prizemlje 6
pullRelayLOW7();//aktuator prizemlje 7 OFF
pullRelayLOW8();//aktuator Ema 8 OFF
pullRelayLOW14();//aktuator Damjan 9 OFF
pullRelayHIGH15();//bojler 10
delay(2000);
}
// d ) Damjan i prizemlje termostat ON
if(buttonState2 == HIGH && buttonState3 == LOW && buttonState4 == LOW)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeD++;
Serial.println("Damjan i prizemlje termostati-ON" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeD);
tft.setTextColor(ILI9341_RED);
tft.println("Damjan i prizemlje termostati-ON");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeD);
pullRelayHIGH5();//pumpa sprat 5
pullRelayHIGH6();//pumpa prizemlje 6
pullRelayLOW7();//aktuator prizemlje 7 OFF
pullRelayHIGH8();//aktuator Ema 8
pullRelayLOW14();//aktuator Damjan 9 OFF
pullRelayHIGH15();//bojler 10
delay(2000);
}
// e ) Prizemlje termostat ON
if(buttonState2 == HIGH && buttonState3 == HIGH && buttonState4 == LOW)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeE++;
Serial.println("Prizemlje termostat-ON" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeE);
tft.setTextColor(ILI9341_RED);
tft.println("Prizemlje termostat-ON");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeE);
pullRelayLOW5();//pumpa sprat 5 OFF
pullRelayHIGH6();//pumpa prizemlje 6
pullRelayLOW7();//aktuator prizemlje 7 OFF
pullRelayHIGH8();//aktuator Ema 8
pullRelayHIGH14();//aktuator Damjan 9
pullRelayHIGH15();//bojler 10
delay(2000);
}
// f ) Ema i prizemlje termostat ON
if(buttonState2 == LOW && buttonState3 == HIGH && buttonState4 == LOW)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeF++;
Serial.println("Ema i prizemlje termostati-ON" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeF);
tft.setTextColor(ILI9341_RED);
tft.println("Ema i prizemlje termostati-ON");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeF);
pullRelayHIGH5();//pumpa sprat 5
pullRelayHIGH6();//pumpa prizemlje 6
pullRelayLOW7();//aktuator prizemlje 7 OFF
pullRelayLOW8();//aktuator Ema 8 OFF
pullRelayHIGH14();//aktuator Damjan 9
pullRelayHIGH15();//bojler 10
delay(2000);
}
// g ) Damjan termostat ON
if(buttonState2 == HIGH && buttonState3 == LOW && buttonState4 == HIGH)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeG++;
Serial.println("Damjan termostat-ON" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeG);
tft.setTextColor(ILI9341_RED);
tft.println("Damjan termostat-ON");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeG);
pullRelayHIGH5();//pumpa sprat 5
pullRelayLOW6();//pumpa prizemlje 6 OFF
pullRelayHIGH7();//aktuator prizemlje 7
pullRelayHIGH8();//aktuator Ema 8
pullRelayLOW14();//aktuator Damjan 9 OFF
pullRelayHIGH15();//bojler 10
delay(2000);
}
// h) Svi termostati iskljuceni
if(buttonState2 == HIGH && buttonState3 == HIGH && buttonState4 == HIGH)
{ tft.fillScreen(0x0000);
tft.setCursor(2, 10);
timeH++;
Serial.println("Svi termostati-OFF" );
Serial.println("Broj ukljucivanja: " );
Serial.println( timeH);
tft.setTextColor(ILI9341_RED);
tft.println("Svi termostati-OFF");
tft.setTextColor(ILI9341_YELLOW);
tft.println("Broj ukljucivanja: ");
tft.println(timeH);
pullRelayLOW5();//pumpa sprat 5 OFF
pullRelayLOW6();//pumpa prizemlje 6 OFF
pullRelayLOW7();//aktuator prizemlje 7 OFF
pullRelayLOW8();//aktuator Ema 8 OFF
pullRelayLOW14();//aktuator Damjan 9 OFF
pullRelayLOW15();//bojler 10 OFF
delay(2000);
}
//tempsensor.shutdown_wake(1); // shutdown MSP9808 - power consumption ~0.1 mikro Ampere, stops temperature sampling
// myCount = myCount+1;
// delay(100);
}
delay(20); // wait for the switch to stop bouncing.
oldState2 = newState2;
oldState3 = newState3;
oldState4 = newState4;
}
// 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");
tft.println("RELAY ON-Pumpa prizemlje");
}
}
void pullRelayLOW6() {
if(relayState6 != LOW){
digitalWrite(myRelay6, LOW);
relayState6 = LOW;
Serial.println("RELAY OFF-Pumpa prizemlje");
tft.println("RELAY OFF-Pumpa prizemlje");
}
}
//aktuator prizemlje
void pullRelayHIGH7() {
if(relayState7 != HIGH){
digitalWrite(myRelay7, HIGH);
relayState7 = HIGH;
Serial.println("RELAY ON-aktuator prizemlje");
tft.println("RELAY ON-aktuator prizemlje");
}
}
void pullRelayLOW7() {
if(relayState7 != LOW){
digitalWrite(myRelay7, LOW);
relayState7 = LOW;
Serial.println("RELAY OFF-aktuatori prizemlje");
tft.println("RELAY OFF-aktuatori prizemlje");
}
}
//aktuator Ema
void pullRelayHIGH8() {
if(relayState8 != HIGH){
digitalWrite(myRelay8, HIGH);
relayState8 = HIGH;
Serial.println("RELAY ON-Aktuator Ema");
tft.println("RELAY ON-Aktuator Ema");
}
}
void pullRelayLOW8() {
if(relayState8 != LOW){
digitalWrite(myRelay8, LOW);
relayState8 = LOW;
Serial.println("RELAY OFF-Aktuator Ema");
tft.println("RELAY OFF-Aktuator Ema");
}
}
//aktuator Damjan
void pullRelayHIGH14() {
if(relayState14 != HIGH){
digitalWrite(myRelay14, HIGH);
relayState14 = HIGH;
Serial.println("RELAY ON-Aktuator Damjan");
tft.println("RELAY ON-Aktuator Damjan");
}
}
void pullRelayLOW14() {
if(relayState14 != LOW){
digitalWrite(myRelay14, LOW);
relayState14 = LOW;
Serial.println("RELAY OFF-Aktuator Damjan");
tft.println("RELAY OFF-Aktuator Damjan");
}
}
//Bojler
void pullRelayHIGH15() {
if(relayState15 != HIGH){
digitalWrite(myRelay15, HIGH);
relayState15 = HIGH;
Serial.println("RELAY ON-Bojler");
tft.println("RELAY ON-Bojler");
}
}
void pullRelayLOW15() {
if(relayState15 != LOW){
digitalWrite(myRelay15, LOW);
relayState15 = LOW;
Serial.println("RELAY OFF-Bojler");
tft.println("RELAY OFF-Bojler");
}
}