Kód: Vybrat vše
#include <OneWire.h> // TEPLOTNI SENZOR
#include <DallasTemperature.h> // TEPLOTNI SENZOR
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val){
return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val){
return( (val/16*10) + (val%16) );
}
const int pinCidlaDS = 30; // nastavení čísla vstupního pinu
int TEPLO = 1; // NASTAVENI PROMENE
int MRAZ = 10 ; // DIODA MRAZU CISLO PINU
OneWire oneWireDS(pinCidlaDS); // vytvoření instance oneWireDS z knihovny OneWire
DallasTemperature senzoryDS(&oneWireDS); // vytvoření instance senzoryDS z knihovny DallasTemperature
void setup(){
senzoryDS.begin(); // zapnutí komunikace knihovny s teplotním čidlem
OneWire oneWireDS(pinCidlaDS); // vytvoření instance oneWireDS z knihovny OneWire
DallasTemperature senzoryDS(&oneWireDS); // vytvoření instance senzoryDS z knihovny DallasTemperature
Wire.begin();
Serial.begin(9600);
// NASTAVENI RTC 3231:
// DS3231 seconds, minutes, hours, day, date, month, year
// setDS3231time(00,30,0,1,17,9,17);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year){
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year){
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void displayTime(){
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
// send it to the serial monitor
Serial.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
Serial.print(":");
if (minute<10){
Serial.print("0");
}
Serial.print(minute, DEC);
Serial.print(":");
if (second<10){
Serial.print("0");
}
Serial.print(second, DEC);
Serial.print(" ");
Serial.print(dayOfMonth, DEC);
Serial.print("/");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(year, DEC);
Serial.print(" Day of week: ");
switch(dayOfWeek){
case 1:
Serial.println("Nedele");
break;
case 2:
Serial.println("Pondeli");
break;
case 3:
Serial.println("Utery");
break;
case 4:
Serial.println("Streda");
break;
case 5:
Serial.println("Ctvrtek");
break;
case 6:
Serial.println("Patek");
break;
case 7:
Serial.println("Sobota");
break;
}
}
void loop() {
senzoryDS.requestTemperatures();
if (senzoryDS.getTempCByIndex(0)<= -5) {
TEPLO = 0; //MRZNE
digitalWrite(MRAZ, HIGH); //DIODA
}
if (senzoryDS.getTempCByIndex(0)>= -4) {
TEPLO = 1 ; //NEMRZNE
digitalWrite(MRAZ, LOW); //DIODA
}
Serial.print("Teplota: ");
Serial.print(senzoryDS.getTempCByIndex(0));
Serial.println(" stupnu Celsia");
displayTime(); // display the real-time clock data on the Serial Monitor,
byte s, m, h, dvt, dvm, mesic, r;
readDS3231time(&s, &m, &h, &dvt, &dvm, &mesic, &r);
//LEDEN
if (mesic==1 && dvm<=15 && h == 7 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==1 && dvm>=16 && h == 6 && m==45 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==1 && dvm<=15 && h == 16 && m==45){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==1 && dvm>=16 && h == 17 && m==15){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//UNOR
if (mesic==2 && dvm<=15 && h == 6 && m==30 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==2 && dvm>=16 && h == 6 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==2 && dvm<=15 && h == 17 && m==35){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==2 && dvm>=16 && h == 18 && m==5) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//BREZEN
if (mesic==3 && dvm<=15 && h == 6 && m==30 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==3 && dvm>=16 && h == 6 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==3 && dvm<=15 && h == 17 && m==35){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==3 && dvm>=16 && h == 18 && m==5) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//DUBEN
if (mesic==4 && dvm<=15 && h == 5 && m==30 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==4 && dvm>=16 && h == 5 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==4 && dvm<=15 && h == 20 && m==10){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==4 && dvm>=16 && h == 20 && m==40){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//KVETEN
if (mesic==5 && dvm<=15 && h == 5 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==5 && dvm>=16 && h == 5 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==5 && dvm<=15 && h == 20 && m==50) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==5 && dvm>=16 && h == 21 && m==2) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//CERVEN
if (mesic==6 && dvm<=15 && h == 5 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==6 && dvm>=16 && h == 5 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==6 && dvm<=15 && h == 21 && m==25) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==6 && dvm>=16 && h == 21 && m==25) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//CERVENEC
if (mesic==7 && dvm<=15 && h == 5 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==7 && dvm>=16 && h == 5 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==7 && dvm<=15 && h == 21 && m==25) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==7 && dvm>=16 && h == 21 && m==25){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//SRPEN
if (mesic==8 && dvm<=15 && h == 5 && m==5 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==8 && dvm>=16 && h == 5 && m==20 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==8 && dvm<=15 && h == 21 && m==5) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==8 && dvm>=16 && h == 20 && m==45){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//ZARI
if (mesic==9 && dvm<=15 && h == 5 && m==40 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==9 && dvm>=16 && h == 5 && m==50 && TEPLO == 1) {
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==9 && dvm<=15 && h == 20 && m==5) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==9 && dvm>=16 && h == 8 && m==58) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//RIJEN
if (mesic==10 && dvm<=15 && h == 6 && m==15 && TEPLO == 1) {
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==10 && dvm>=16 && h == 6 && m==30 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==10 && dvm>=1 && h == 14 && m==50){
digitalWrite(6, LOW); // rozepneme
digitalWrite(5, LOW); // rozepneme
Serial.println("ZAVIRAM");
}
if (mesic==10 && dvm>=16 && h == 18 && m==35) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//LISTOPAD
if (mesic==11 && dvm<=15 && h == 6 && m==1 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==11 && dvm>=16 && h == 6 && m==30 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==11 && dvm<=15 && h == 17 && m==5) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==11 && dvm>=16 && h == 16 && m==45){
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
//PROSINEC
if (mesic==12 && dvm<=15 && h == 6 && m==45 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==12 && dvm>=16 && h == 7 && m==10 && TEPLO == 1){
Serial.println("OTVIRAM");
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
if (mesic==12 && dvm<=15 && h == 16 && m==35) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
if (mesic==12 && dvm>=16 && h == 16 && m==35) {
Serial.println("ZAVIRAM");
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
delay(29000);
}