nid69ita:
Se posti lo sketch che usi, magari possiamo dirti qualcosa.
Non è che hai nel setup() la famosa while() sulla seriale che serve ... solo per la Leonardo ?
No, non ho nessuna while(), il display l'ho testato in due progetti diversi e ho sempre lo stesso problema.. fino a quando non apro la seriale il display resta vuoto...
Inserisco lo sketch anche se per me non centra nulla...
/* Questo progetto utilizza due Igrometri e un sensore DHT11 per gestire una Serra Automatica
*/
int lettura = 0 ; // Pin analogico a cui è collegato il sensore 1
int lettura1 = A1 ; // sensore 2
int pompa = 9 ; //Pin a cui è collegato i rele' per attivare al pompa
int hc12 = 11 ;
int sensorValue = 1008; // Valore del sensore 1 immerso in acqua
int sensorValue1 = 1014; // Valore del sensore 2 immerso in acqua
int sensPower1 = 5 ; // Pin Vcc IGROMETRO 1
int sensPower2 = 6 ; // Pin Vcc IGROMETRO 2
#include <HygrometerSensor.h>
#include <Adafruit_Sensor.h>
//DHT11 Sensor:
#include "DHT.h"
#define DHTPIN 12 // Sensore collegato al PIN 12
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
//I2C LCD:
#include <Wire.h> // Libreria WIRE
#include <LiquidCrystal_I2C.h> // Libreria LCD I2C
// LCD I2C address
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup()
{
pinMode(sensPower1, OUTPUT); // Uscita Vcc Igrometro 1
pinMode(sensPower2, OUTPUT); // Uscita Vcc Igrometro 2
pinMode(pompa,OUTPUT); // Uscita relè pompa
digitalWrite(pompa, HIGH); // Stato relè spento
pinMode(hc12,OUTPUT);
digitalWrite(hc12,HIGH); // HC-12 Trasmittente
// PIN 10 al relè - IN2
pinMode(10, OUTPUT); // Uscita relè sensore DHT11
digitalWrite(10,HIGH);
//I2C LCD
Serial.begin(9600);
lcd.begin(20,4);
Serial.println("Serra Automatica");
// Avvio sensore DHT11
dht.begin();
}
void loop(){
// Accendo il sensore ON
digitalWrite(sensPower1, HIGH);
digitalWrite(sensPower2, HIGH);
delay(30); // Pausa calibrazione
// Igrometro 1
lettura = analogRead(A0);
sensorValue = map (lettura, 1008, 258, 0, 100); // converto il valore analogico in percentuale
Serial.print("Umidità terra 1 : ");
Serial.print(sensorValue);
Serial.println ("%"); //Stampa a schermo il valore
// Igrometro 2
lettura1 = analogRead(A1);
sensorValue1 = map (lettura1, 1014, 228, 0, 100); // converto il valore analogico in percentuale
Serial.print("Umidità terra 2 : ");
Serial.print(sensorValue1);
Serial.println ("%"); //Stampa a schermo il valore
if ((lettura >= 800) && (lettura1 >= 840))
{
digitalWrite (pompa,HIGH); //... attiva la pompa
digitalWrite (hc12,HIGH); // invio dati
} else {
digitalWrite (pompa,LOW); //.... spegne la pompa
digitalWrite (hc12,LOW); // nessun dato
}
delay(10000);
// Spengo il sensore
digitalWrite(sensPower1, LOW);
digitalWrite(sensPower2, LOW);
delay(360000); // Attesa sensore OFF 60 minuti
// Lettura umidità e temperatura del sensore DHT11n
int h = dht.readHumidity();
int t = dht.readTemperature();
// Misura la temperatura e se maggiore di ... gradi attiva relè per accendere la ventola
if (t >= 25 )
digitalWrite (10, LOW); // Attiva Relè 2
else
digitalWrite (10, HIGH); // Spegni Relè 2
delay (2000);
Serial.print("Temp: ");
Serial.print(t);
Serial.print("C, Umid: ");
Serial.print(h);
Serial.println("%");
// impostare cursore sulla prima riga:
lcd.setCursor(0, 0);
lcd.print("Temperatura: ");
lcd.print(t);
lcd.print("C");
// imposta cursore sulla seconda riga:
lcd.setCursor(0,1);
lcd.print("Umidita' Aria: ");
lcd.print(h);
lcd.print("%");
// imposta il cursore sulla terza riga:
lcd.setCursor(0,2);
lcd.print("Umid..Terra 1: ");
lcd.print(sensorValue);
lcd.print("%");
lcd.setCursor(0,3);
lcd.print("Umid..Terra 2: ");
lcd.print(sensorValue1);
lcd.print("%");
}