//Dodavanje potrebnih biblioteka
include <IRremote.h>
include <IRremoteInt.h>
//Definisanje pina za KY015 DHT11 senzor
int DHpin = 8;
byte dat [5];
//Citanje podataka
byte read_data () {
byte data;
for (int i = 0; i < 8; i ++) {
if (digitalRead (DHpin) == LOW) {
while (digitalRead (DHpin) == LOW);
delayMicroseconds (30);
if (digitalRead (DHpin) == HIGH)
data |= (1 << (7-i));
while (digitalRead (DHpin) == HIGH);
}
}
return data;}
void start_test () {
digitalWrite (DHpin, LOW); //Poalji pocetni signal
delay (30); //sacekaj kako bi se signal detektovao
digitalWrite (DHpin, HIGH);
delayMicroseconds (40); //Sacekaj odgovor od DHT11
pinMode (DHpin, INPUT);
while (digitalRead (DHpin) == HIGH);
delayMicroseconds (80);
if (digitalRead (DHpin) == LOW);
delayMicroseconds (80);
for (int i = 0; i < 4; i ++) //Procitane podatke upii u niz
dat[i] = read_data ();
pinMode (DHpin, OUTPUT);
digitalWrite (DHpin, HIGH);}
//Definisanje potrebnih signala
IRsend irsend;
unsigned int rawON[59] = {8500,4150,400,1650,350,650,350,650,400,600,350,1650,400,650,
350,650,350,650,350,650,350,700,300,700,300,700,350,650,350,650,350,700,300,700,300,700
,300,700,300,1700,350,1650,350,700,300,650,350,700,300,700,350,650,350,700,300,1650,400
,1650,350};
unsigned int rawOFF[59] = {8500,4200,350,1650,350,700,300,700,350,650,350,1650,350,650,
350,650,400,650,350,1650,350,1650,350,650,350,700,300,700,350,650,350,650,350,650,350,
650,350,700,300,700,350,650,350,650,350,1650,350,650,350,1700,350,650,350,650,350,650,3
50,1700,350};
unsigned int rawDvadeset[59] = {8500,4150,400,1650,350,650,350,650,350,650,350,1700,300
,700,350,650,350,650,350,650,350,650,350,700,300,700,300,1700,350,650,350,650,350,650,3
50,700,300,1700,350,650,350,1650,350,700,300,700,350,650,350,650,350,1650,400,1650,350,
650,350,1650,350};
unsigned int rawDevetnaest[59] = {8550,4150,400,1650,350,650,350,650,350,650,350,1650,3
50,700,350,650,350,650,350,650,350,650,350,650,350,700,300,1700,350,650,350,650,350,650
,350,700,350,650,350,1650,350,1650,350,700,350,650,350,650,350,650,350,1650,350,700,300
,1700,350,1650,350};
unsigned int raw[0] = {};
unsigned int on=0;
void setup () {
Serial.begin (9600);
pinMode (DHpin, OUTPUT);}
void loop () {
start_test (); //Pokreni snimanje senzora i ispii vrednosti
Serial.print (Current humdity =);
Serial.print (dat [0], DEC); //Prikaz int vrednosti vlanosti vazduha
Serial.print (.);
Serial.print (dat [1], DEC); //Prikaz decimalnog dela vrednosti vlanosti vazduha
Serial.println (%);
Serial.print (Current temperature =);
Serial.print (dat [2], DEC); //Prikaz int vrednosti tempreature
Serial.print (.);
Serial.print (dat [3], DEC); //Prikaz decimalnog dela vrednosti tempreature
Serial.println (C);
//Uzeti vrednost temperature kako bi se ona uporedila sa ciljanom
int t = dat[2];
//Ako je temperatura preko 26 i klima trenutno ne radi
if(t>26 && on==0){
irsend.sendRaw(rawON, 59, 38); //Pokreni klimu
delay(400); //Sacekaj da klima primi signal
irsend.sendRaw(raw, 0, 38); //Poniti signal da uredaj ne bi konstantno primao naredbe
on=1; //Postavi pomocni parametar koji ukazuje na to da li klima radi ili ne na 1
}
//Ako je temperatura ispod 27 i klima trenutno radi
if(t<27 && on==1){
irsend.sendRaw(rawOFF, 59, 38); //Ugasi klimu
delay(400); //Sacekaj da klima primi signal
irsend.sendRaw(raw, 0, 38); //Poniti signal da uredaj ne bi konstanto primao naredbe
on=0; //Postavi pomocni parametar koji ukazuje na to da li klima radi ili ne na 0
}
delay (2000);
}