Temporary version: rain and wind actions disabled

This commit is contained in:
Filip Rojek 2024-05-21 11:15:16 +02:00
parent ef05ce16e0
commit fa60386901

View File

@ -1,216 +1,216 @@
#include <RCSwitch.h> #include <RCSwitch.h>
#include <Wire.h> #include <Wire.h>
#include <Rtc_Pcf8563.h> #include <Rtc_Pcf8563.h>
RCSwitch mySwitch = RCSwitch(); RCSwitch mySwitch = RCSwitch();
Rtc_Pcf8563 rtc; Rtc_Pcf8563 rtc;
// defining used pins // defining used pins
int wind = 8; int wind = 8;
int rain = 12; int rain = 12;
int receiver = 9; int receiver = 9;
int relay1 = 7; int relay1 = 4;
int relay2 = 6; int relay2 = 6;
int relay3 = 5; int relay3 = 5;
int relay4 = 4; int relay4 = 7;
// codes from remote controller // codes from remote controller
const int recRelay4 = 3696136; const int recRelay4 = 3696136;
const int recRelay3 = 16736114; const int recRelay3 = 16736114;
const int recRelay2 = 16736120; const int recRelay2 = 16736120;
const int recRelay1 = 16736113; const int recRelay1 = 16736113;
int delayTime = 500; int delayTime = 500;
// status of roleta // status of roleta
bool isOpen = false; bool isOpen = false;
void setup() void setup()
{ {
Serial.begin(9600); Serial.begin(9600);
pinMode(relay1, OUTPUT); pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT); pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT); pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT); pinMode(relay4, OUTPUT);
pinMode(wind, INPUT); pinMode(wind, INPUT);
pinMode(rain, INPUT); pinMode(rain, INPUT);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
//clear out the registers //clear out the registers
///rtc.initClock(); ///rtc.initClock();
//set a time to start with. //set a time to start with.
//day, weekday, month, century(1=1900, 0=2000), year(0-99) //day, weekday, month, century(1=1900, 0=2000), year(0-99)
///rtc.setDate(18, 6, 6, 0, 21); ///rtc.setDate(18, 6, 6, 0, 21);
//hr, min, sec //hr, min, sec
///rtc.setTime(18, 44, 0); ///rtc.setTime(18, 44, 0);
} }
void updateRTC() void updateRTC()
{ {
/* /*
function to update RTC time using user input function to update RTC time using user input
*/ */
// ask user to enter new date and time // ask user to enter new date and time
const char txt[6][15] = { "year [4-digit]", "month [1~12]", "day [1~31]", const char txt[6][15] = { "year [4-digit]", "month [1~12]", "day [1~31]",
"hours [0~23]", "minutes [0~59]", "seconds [0~59]"}; "hours [0~23]", "minutes [0~59]", "seconds [0~59]"};
String str = ""; String str = "";
long newDate[6]; long newDate[6];
while (Serial.available()) { while (Serial.available()) {
Serial.read(); // clear serial buffer Serial.read(); // clear serial buffer
} }
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
Serial.print("Enter "); Serial.print("Enter ");
Serial.print(txt[i]); Serial.print(txt[i]);
Serial.print(": "); Serial.print(": ");
while (!Serial.available()) { while (!Serial.available()) {
; // wait for user input ; // wait for user input
} }
str = Serial.readString(); // read user input str = Serial.readString(); // read user input
newDate[i] = str.toInt(); // convert user input to number and save to array newDate[i] = str.toInt(); // convert user input to number and save to array
Serial.println(newDate[i]); // show user input Serial.println(newDate[i]); // show user input
} }
// update RTC // update RTC
//rtc.adjust(DateTime(2021, newDate[1], newDate[2], newDate[3], newDate[4], newDate[5])); //rtc.adjust(DateTime(2021, newDate[1], newDate[2], newDate[3], newDate[4], newDate[5]));
rtc.setDate(newDate[2], 6, newDate[1], 0, 2020); rtc.setDate(newDate[2], 6, newDate[1], 0, 2020);
Serial.println("RTC Updated!"); Serial.println("RTC Updated!");
} }
void relayOn(int pin, bool controller = false) void relayOn(int pin, bool controller = false)
{ {
Serial.print("realy "); Serial.print("realy ");
Serial.print(pin); Serial.print(pin);
Serial.print("\n"); Serial.print("\n");
if(controller == false) if(controller == false)
{ {
Serial.println("jsemtu"); Serial.println("jsemtu");
if(pin == relay4) if(pin == relay4)
{ {
isOpen = true; isOpen = true;
} }
if(pin == relay1) if(pin == relay1)
{ {
isOpen = false; isOpen = false;
} }
} }
digitalWrite(pin, HIGH); digitalWrite(pin, HIGH);
delay(delayTime); delay(delayTime);
if(pin == relay3) { if(pin == relay3) {
// delay(1500); // delay(1500);
} }
digitalWrite(pin, LOW); digitalWrite(pin, LOW);
delay(delayTime); delay(delayTime);
} }
void loop() void loop()
{ {
//formatted strings are at the current time/date. //formatted strings are at the current time/date.
Serial.print(rtc.formatTime()); Serial.print(rtc.formatTime());
Serial.print("\r\n"); Serial.print("\r\n");
Serial.print(rtc.formatDate()); Serial.print(rtc.formatDate());
Serial.print("\r\n"); Serial.print("\r\n");
delay(1000); delay(1000);
// assign day and month into variable // assign day and month into variable
char h1 = rtc.formatTime(RTCC_TIME_HM)[0]; char h1 = rtc.formatTime(RTCC_TIME_HM)[0];
char h2 = rtc.formatTime(RTCC_TIME_HM)[1]; char h2 = rtc.formatTime(RTCC_TIME_HM)[1];
int onlyHour = ( 10 * (h1 - '0') ) + h2 - '0'; int onlyHour = ( 10 * (h1 - '0') ) + h2 - '0';
char m1 = rtc.formatTime(RTCC_TIME_HM)[3]; char m1 = rtc.formatTime(RTCC_TIME_HM)[3];
char m2 = rtc.formatTime(RTCC_TIME_HM)[4]; char m2 = rtc.formatTime(RTCC_TIME_HM)[4];
int onlyMinutes = ( 10 * (m1 - '0') ) + m2 - '0'; int onlyMinutes = ( 10 * (m1 - '0') ) + m2 - '0';
char M1 = rtc.formatDate()[0]; char M1 = rtc.formatDate()[0];
char M2 = rtc.formatDate()[1]; char M2 = rtc.formatDate()[1];
int onlyMonth = ( 10 * (M1 - '0') ) + M2 - '0'; int onlyMonth = ( 10 * (M1 - '0') ) + M2 - '0';
Serial.println(onlyHour); Serial.println(onlyHour);
Serial.println(onlyMinutes); Serial.println(onlyMinutes);
Serial.println(onlyMonth); Serial.println(onlyMonth);
Serial.println(isOpen); Serial.println(isOpen);
// setting up date and time from serial monitor // setting up date and time from serial monitor
if (Serial.available()) if (Serial.available())
{ {
char input = Serial.read(); char input = Serial.read();
if (input == 'u') updateRTC(); // update RTC time if (input == 'u') updateRTC(); // update RTC time
} }
// time actions // time actions
if(onlyMonth >= 5 && onlyMonth <= 8) if(onlyMonth >= 5 && onlyMonth <= 8)
{ {
if(onlyHour >= 7 && onlyHour <= 14) if(onlyHour >= 7 && onlyHour <= 14)
{ {
if(isOpen == false) if(isOpen == false)
{ {
Serial.println("cas otevira"); Serial.println("cas otevira");
relayOn(relay4); relayOn(relay4);
} }
} }
else else
{ {
if(isOpen == true) if(isOpen == true)
{ {
Serial.println("cas zavira"); Serial.println("cas zavira");
relayOn(relay1); relayOn(relay1);
} }
} }
} }
// rain actions // rain actions
if(digitalRead(rain) != HIGH) if(digitalRead(rain) != HIGH)
{ {
Serial.println("voda zavira"); Serial.println("voda zavira");
relayOn(relay1, true); //relayOn(relay1, true);
} }
// wind actions // wind actions
if (digitalRead(wind) == HIGH) if (digitalRead(wind) == HIGH)
{ {
Serial.println("vitr zavira"); Serial.println("vitr zavira");
//relayOn(relay1, true); //relayOn(relay1, true);
} }
else else
{ {
//digitalWrite(relay1, LOW); -> probably useless //digitalWrite(relay1, LOW); -> probably useless
} }
// remote controller actions // remote controller actions
if (mySwitch.available()) if (mySwitch.available())
{ {
int received = mySwitch.getReceivedValue(); int received = mySwitch.getReceivedValue();
Serial.println("Received " + received); Serial.println("Received " + received);
if (received == recRelay1) if (received == recRelay1)
{ {
relayOn(relay1, true); relayOn(relay1, true);
} }
if (received == recRelay2) if (received == recRelay2)
{ {
relayOn(relay2, true); relayOn(relay2, true);
} }
if (received == recRelay3) if (received == recRelay3)
{ {
relayOn(relay3, true); relayOn(relay3, true);
} }
if (received == recRelay4) if (received == recRelay4)
{ {
relayOn(relay4, true); relayOn(relay4, true);
} }
mySwitch.resetAvailable(); mySwitch.resetAvailable();
} }
} }