Created
September 24, 2016 10:50
-
-
Save anonymous/bfa6edce1ba02e50800e4c9ee65d56e0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// coltivino, last update: september 24th, 2016 | |
#include "DHT.h" | |
#define DHTPIN A2 | |
#define DHTTYPE DHT22 | |
DHT dht(DHTPIN, DHTTYPE); | |
#include <OneWire.h> | |
OneWire ds(10); | |
int rel_osm = 2; | |
int rel_neb = 4; | |
int sens_lev_wat = A0; | |
int sens_lev_sun = A1; | |
int sens_lev_rai = A3; | |
int sens_lev_soi = A4; | |
int lev_wat; | |
int lev_sun; | |
int lev_rai; | |
int lev_soi; | |
int val_lev_wat; | |
int val_lev_sun; | |
int val_lev_rai; | |
int val_lev_soi; | |
int h; | |
void setup() { | |
Serial.begin (9600); | |
dht.begin(); | |
pinMode (7, OUTPUT); | |
pinMode (8, OUTPUT); | |
pinMode (12, OUTPUT); | |
pinMode (rel_osm, OUTPUT); | |
pinMode (rel_neb, OUTPUT); | |
pinMode (sens_lev_wat, INPUT); | |
pinMode (sens_lev_sun, INPUT); | |
pinMode (sens_lev_rai, INPUT); | |
pinMode (sens_lev_soi, INPUT); | |
} | |
void loop(){ | |
byte i; | |
byte present = 0; | |
byte type_s; | |
byte data[12]; | |
byte addr[8]; | |
float celsius, fahrenheit; | |
if ( !ds.search(addr)) { | |
ds.reset_search(); | |
delay(250); | |
return; | |
} | |
ds.reset(); | |
ds.select(addr); | |
ds.write(0x44, 1); | |
delay(1000); | |
present = ds.reset(); | |
ds.select(addr); | |
ds.write(0xBE); | |
for ( i = 0; i < 9; i++) { | |
data[i] = ds.read(); | |
} | |
int16_t raw = (data[1] << 8) | data[0]; | |
if (type_s) { | |
raw = raw << 3; | |
if (data[7] == 0x10) { | |
raw = (raw & 0xFFF0) + 12 - data[6]; | |
} | |
} else { | |
byte cfg = (data[4] & 0x60); | |
if (cfg == 0x00) raw = raw & ~7; | |
else if (cfg == 0x20) raw = raw & ~3; | |
else if (cfg == 0x40) raw = raw & ~1; | |
} | |
celsius = (float)raw / 16.0; | |
fahrenheit = celsius * 1.8 + 32.0; | |
digitalWrite(7, HIGH); | |
digitalWrite(8, HIGH); | |
digitalWrite(12, HIGH); | |
lev_wat = analogRead(sens_lev_wat); | |
val_lev_wat = map(lev_wat, 0, 1023, 0, 100); | |
lev_sun = analogRead(sens_lev_sun); | |
val_lev_sun = map(lev_sun, 0, 1023, 0, 100); | |
lev_rai = analogRead(sens_lev_rai); | |
val_lev_rai = map(lev_rai, 0, 1023, 0, 100); | |
lev_soi = analogRead(sens_lev_soi); | |
val_lev_soi = map(lev_soi, 0, 1023, 100, 0); | |
float h = dht.readHumidity(); | |
float t = dht.readTemperature(); | |
if (val_lev_sun > 6) | |
{ | |
if (val_lev_wat < 10) | |
{ | |
digitalWrite(rel_osm, LOW); | |
digitalWrite(7, LOW); | |
digitalWrite(8, LOW); | |
digitalWrite(12, LOW); | |
} | |
else | |
{ | |
digitalWrite(rel_osm,HIGH); | |
digitalWrite(7, LOW); | |
digitalWrite(8, LOW); | |
digitalWrite(12, LOW); | |
} | |
} | |
else | |
{ | |
digitalWrite(rel_osm, HIGH); | |
digitalWrite(7, LOW); | |
digitalWrite(8, LOW); | |
digitalWrite(12, LOW); | |
} | |
delay (5000); | |
if (val_lev_sun > 6) | |
{ | |
if (h < 50) | |
{ | |
digitalWrite(rel_neb, LOW); | |
} | |
else | |
{ | |
digitalWrite(rel_neb,HIGH); | |
} | |
} | |
else | |
{ | |
digitalWrite(rel_neb, HIGH); | |
} | |
delay (5000); | |
Serial.println("============================================="); | |
Serial.print("Luce solare: "); | |
Serial.print(val_lev_sun); | |
Serial.println("%"); | |
Serial.print("Umidita' relativa: "); | |
Serial.print(h); | |
Serial.println(" %\t"); | |
Serial.print("Temperatura: "); | |
Serial.print(t); | |
Serial.println(" *C "); | |
Serial.print("Situazione meteo: "); | |
if (val_lev_rai > 20) | |
{ | |
Serial.println("tempo sereno"); | |
} | |
else if (val_lev_rai < 10) | |
{ | |
Serial.println("temporale"); | |
} | |
else | |
{ | |
Serial.println("pioggia"); | |
} | |
Serial.print("Temperatura del suolo: "); | |
Serial.print(celsius); | |
Serial.println("*C"); | |
Serial.print("Umidita' del suolo: "); | |
Serial.print(val_lev_soi); | |
Serial.print("% "); | |
if (val_lev_soi > 80) | |
{ | |
Serial.println("> OK!"); | |
} | |
else | |
{ | |
Serial.println("> INSUFFICIENTE!"); | |
} | |
Serial.print("Livello dell'acqua: "); | |
Serial.print(val_lev_wat); | |
Serial.println(" cm."); | |
Serial.println("============================================="); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment