GreenDuino - Source Code
#define DHTPIN A1
#define DHTTYPE DHT11

#include "DHT.h"
#include  
#include 

LiquidCrystal_I2C lcd(0x27,16,2);
DHT dht(DHTPIN, DHTTYPE);

const int pinoSensor = A0;
const int pinoRele = 6;

int ldr = A2;
int val = 0;
int valorLido;
int analogSoloSeco = 400;
int analogSoloMolhado = 150;
int percSoloSeco = 0;
int percSoloMolhado = 100;

void setup() 
{
    Serial.begin(9600);
    Serial.println("DHT11 Test!");
    dht.begin();
    pinMode(A1,INPUT);
    lcd.init();
    lcd.backlight();
    pinMode(pinoRele, OUTPUT);
    digitalWrite(pinoRele, HIGH);
    pinMode(ldr, INPUT);
}

void loop() 
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  valorLido = (analogRead(pinoSensor),analogSoloMolhado,analogSoloSeco);
  valorLido = map(valorLido,analogSoloMolhado,analogSoloSeco,percSoloMolhado,percSoloSeco);
  val = constrain(analogRead(ldr));
  val = map(val, 0, 1023, 0, 100);
  
  if (isnan(t) || isnan(h)) 
  {
    Serial.println("Failed to read from DHT");
  } 

  else
  {
    lcd.setCursor(1,0);
    lcd.print("Umidade:");
    lcd.print(h);
    lcd.print("%");
    lcd.setCursor(2,1);
    lcd.print("Temp: ");
    lcd.print(t);
    lcd.print("C");
    delay(2000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Umidade do Solo:");
    lcd.setCursor(7,1);
    lcd.print(valorLido);
    lcd.print("%");
    delay(2000);
    lcd.clear();
    lcd.setCursor(3,0);
    lcd.print("Luminoside");
    lcd.setCursor(7,1);
    lcd.print(val);
    lcd.print("%");
    delay(2000);
    lcd.clear();
  }

  if(valorLido <= 45)
  {
    Serial.println("Irriga��o Iniciada");
    Serial.print(valorLido),
    Serial.println("%");
    digitalWrite(pinoRele, HIGH);
  }

  else
  {
    Serial.print("Irriga��oo Finalizada");
    Serial.print(valorLido),
    Serial.println("%");
    digitalWrite(pinoRele, LOW);
    delay(1000);
  }
}