Hola gente, estoy comenzando en arduino , tengo un inconveniente cuando quiero conectar el display y el modulo rtc con i2c , el rtc funciona correctamente, el display no me muestra nada o me muestra solo el primer caracter de lo que me tendria que aparecer, las direcciones de cada modulo estan bien y no se repiten, les dejo el codigo que estoy utilizando y una foto para que me puedan ayudar.
#include <Time.h>
#include <RTClib.h>
#include <Wire.h>
#include "DHT.h"
#define DHTPIN 12
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,20,4);
RTC_DS1307 rtc;
int humedad=0;
int temperatura=0;
int ledrojo = 6;
int ledazul = 7;
int ledblanco = 9;
int brillo;
int pot = A0;
int pulsador = 13;
int estado = 0;
int estadoanterior = 0;
int salida = 0;
int entradatierra = 0;
int sensortierra = 1;
int humedadtierra = 0;
int luminocidad = 0;
void setup() {
Wire.begin();
rtc.begin();
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.init();
lcd.backlight();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
pinMode (pulsador, INPUT);
pinMode (ledrojo , OUTPUT);
pinMode (ledazul, OUTPUT);
pinMode (sensortierra, INPUT);
lcd.setCursor(6,0);
lcd.print("RIEGO");
delay (1000);
lcd.setCursor(3, 1);
lcd.print("AUTOMATICO");
delay (6000);
lcd.clear();
}
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
DateTime now = rtc.now();
Serial.println("-------------------------------------------------------------------------------------------------------------------------------");
Serial.println(" RIEGO AUTOMATICO ");
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println("-------------------------------------------------------------------------------------------------------------------------------");
Serial.print ("TEMPERATURA: ");
Serial.print(t);
Serial.println("C ");
Serial.print ("HUMEDAD: ");
Serial.print(h);
Serial.println("%");
Serial.print("HUMEDAD TIERRA: ");
if(humedadtierra <=20){
Serial.println("BAJO");
}
if(humedadtierra > 50){
Serial.println("ALTO");
}
if((humedadtierra > 21)&&(humedadtierra < 49)){
Serial.println("MEDIO");
}
Serial.print("SALIDA: ");
Serial.println(salida);
lcd.setCursor(0,0);
lcd.print(now.day(), DEC);
lcd.setCursor(2,0);
lcd.print("/");
lcd.setCursor(3,0);
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.setCursor(5,0);
lcd.print(now.year(), DEC);
lcd.setCursor(11,0);
lcd.print(now.hour(), DEC);
lcd.setCursor(13,0);
lcd.print(":");
lcd.setCursor(14,0);
lcd.print(now.minute(), DEC);
lcd.setCursor(0, 1);
lcd.print("TEMP:");
lcd.setCursor(5,1);
lcd.print(t);
lcd.setCursor(7, 1);
lcd.print("c");
lcd.setCursor(10, 1);
lcd.print("HM:");
lcd.setCursor(13, 1);
lcd.print(h);
lcd.setCursor(15, 1);
lcd.print("%");
delay(1000);
}
en la siguiente imagen me tendria que mostrar, dia, hora , temperatura y humedad