#include #include #include //Primer za testiranje DHT senzora E #include "DHT.h" #define DHTPIN A0 // pin Arduina za prijem podataka sa DHT senzora // u zavisnosti od tipa senzora potrebno je raskomentirati #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Inicijalizacija DHT senzora DHT dht(DHTPIN, DHTTYPE); int S_V_Z_pin = A1; int Vlaznost_zemlje ; int Temp_z,VlaznostV_z, VlaznostZ_z, podatak; char znak; void setup() { Serial.begin(9600); dht.begin(); } void loop() { // Za čitanje temperature ili vlažnosti treba 250 mS // Senzor je spor pa ga ne treba očitavati češće od 2 sekunde byte h = dht.readHumidity();//čitanje vlažnosti // čitanje temperature u Celzijusima byte t = dht.readTemperature(); // Ako treba i u Farenhajtima //float f = dht.readTemperature(true); //očitavanje vlažnosti zemljišta Vlaznost_zemlje= analogRead(S_V_Z_pin); //vrši se mapiranje da vrednost iz opsega 0 do1024 bude svedena na opseg 0 do 100% Vlaznost_zemlje = map(Vlaznost_zemlje,1023,0,0,100); //Očitavanje parametara za postavku kontrole while (Serial.available()!=0) //čeka na podatak sa serijskog porta { znak=Serial.read(); // prijem podatka i pretvaranje primljenog podatka u celobrojni format podatak=Serial.parseInt(); obracun(); } // Provera da li su uspela sva očitavanja, ako nisu izlazi se iz petlje da bi pokušali ponovo. if (isnan(h) || isnan(t) ) { Serial.println("Greška u očitavanju DHT senzora!"); return; } // Računa se indeks toplote ako treba, prema vrlo složenoj formuli-vidi Google /* //Za to je razvijena posebna funkcija // float hi = dht.computeHeatIndex(f, h); Serial.print("Vlažnost: "); Serial.print(h); Serial.print(" %\n"); Serial.print("Temperatura: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\n"); Serial.print("Indeks toplote: "); Serial.print(hi); Serial.print(" *F\n"); */ Serial.print('A'); Serial.print('K'); Serial.print((int)t); Serial.print('|'); Serial.print((int)h); Serial.print('|'); Serial.print(Vlaznost_zemlje); Serial.print('|'); Serial.print(Temp_z); Serial.print('|'); Serial.print(VlaznostV_z); Serial.print('|'); Serial.print(VlaznostZ_z); Serial.print('|'); delay(1000); } int obracun () // function declaration { switch (znak) { case 'T': Temp_z=podatak; // Serial.print("Zadata temperatura:"); //Serial.println(Temp_z); // if(Temp_z>50) // ( // Serial.print("Zadata temperatura je veca od 50C:") // ); break; case 'V': VlaznostV_z=podatak; //Serial.print("Zadata vlažnost vazduha:"); // Serial.println(VlaznostV_z); break; case 'Z': VlaznostZ_z =podatak; // Serial.print("Zadata vlažnost zemljista:"); // Serial.println(VlaznostZ_z); break; // default: // if nothing else matches, do the default // default is optional // break; } }