buongiorno a tutti,
non apro un altro thread dato che ce ne sono diversi.
in allegato trovate il mio display, nelle versioni di lunedi ieri e oggi(nel modulo non era collegato un cavo, non fateci caso, lo stavo sostituendo).
Ha iniziato a dare valori strani da ieri. Ho provato con 2 moduli diversi i2c; ho sostituito tutti i fili con fili nuovi. vi riporto il codice, uso IDE 1.8.8 per mac.
#include <DS3231.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Time.h>
#include <TimeLib.h>
#include <DHT.h>
#include "DHT.h"
#define DHTPIN 6 // 6 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT22 // dht22 è il tipo di sensore che uso
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
DS3231 rtc(A4, A5);
// Init a Time-data structure
Time ti;
int relay_luci = 3; // PIN DEL RELè LUCE
int relayVentolaEntrata = 9;
int relayVentolaUscita= 10;
int relay_calore = 8; //calore
//Setup light cycle for both bars
const int OraAccensione = 8; //all lights on
const int OraSpegnimento = 20 ; //all ights off
void setup() {
//assign
Serial.begin(9600);
rtc.begin();
//The following lines can be uncommented to set the date and time
//rtc.setDOW(TUESDAY);
//rtc.getTime();
//rtc.setDate(1, 15, 2019);
ti = rtc.getTime();
Serial.print("Time ");
Serial.print(ti.hour);
Serial.print(":");
Serial.print(ti.min);
Serial.print(" and ");
Serial.println(ti.sec);
lcd.begin(16,2);
lcd.backlight();
pinMode(relay_luci, OUTPUT);
digitalWrite(relay_luci,LOW);
pinMode(relayVentolaEntrata, OUTPUT);
digitalWrite(relayVentolaEntrata, LOW);
pinMode(relayVentolaUscita, OUTPUT);
digitalWrite(relayVentolaUscita, LOW);
pinMode(relay_calore, OUTPUT);
digitalWrite(relay_calore, LOW);
}
void loop()
{{
float h = dht.readHumidity();
float t = dht.readTemperature();
// posiziono il cursore alla colonna 5 e riga 0
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.setCursor(5, 0);
lcd.print(t);
lcd.setCursor(10, 0);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hu:");
lcd.setCursor(3, 1);
lcd.print(h);
lcd.setCursor(8, 1);
lcd.print("%");
if (t < 20,1)
{
digitalWrite(relay_calore, HIGH);
delay(10);
}
else if
(t > 26){
digitalWrite(relayVentolaEntrata, HIGH);
digitalWrite(relayVentolaUscita, HIGH);
digitalWrite(relay_calore, LOW);
}
else {
digitalWrite(relayVentolaEntrata, LOW);
digitalWrite(relayVentolaUscita, LOW);
digitalWrite(relay_calore, LOW);}
}
//Get time data from RTC and store in ti
//Luce
if (ti.hour >= OraAccensione && ti.hour < OraSpegnimento){
digitalWrite(relay_luci, HIGH);
}
else if (ti.hour >= OraSpegnimento || ti.hour < OraAccensione){
digitalWrite(relay_luci, LOW);
}
}