[RISOLTO]Problema con LCD I2C 20*4 e caratteri personalizzati


ciao ragazzi, sto costruendo una stazione mete bluetooth e ho un problema nella visualizzazione di un carattere personalizzato. il carattere in questione è "°" da mettere prima di c nella visualizzazione della temperatura.

quello che visualizza è questo : https://ibb.co/ckmck6

perché? potete aiutarmi?


code: [select]
#include <adafruit_sensor.h>
#include <dht.h>
#include <dht_u.h>
#include <wire.h>
#include <liquidcrystal_i2c.h>


#define dhtpin            8

#define dhttype           dht11     // dht 11
//#define dhttype           dht22     // dht 22 (am2302)
//#define dhttype           dht21     // dht 21 (am2301)

dht_unified dht(dhtpin, dhttype);

uint32_t delayms;    //delay del sensore

liquidcrystal_i2c lcd(0x3f,20,4);    //definizione del lcd e dell'indirizzo

byte dot[8] = { b00111, b00101, b00111, b00000, b00000, b00000, b00000, b00000};

void setup() {
  dht.begin();  //inizializzazione del sensore
  
  lcd.createchar(0, dot);  //creazione del carattere
  
  lcd.init();  //inizializzazione dello schermo
  lcd.backlight();  //attivazione retroilluminazione
  
  sensors_event_t event;
  
  dht.temperature().getevent(&event);
  if (isnan(event.temperature)) {
    lcd.setcursor(0,0);
    lcd.print("errore temperatura!");
  }
  else {
    lcd.setcursor(0,0);
    lcd.print("temperatura: ");
    lcd.setcursor(18,0);
    lcd.write(byte(0));   //scrittura del carattere personalizzato
    lcd.print("c");
  }
  
  dht.humidity().getevent(&event);
  if (isnan(event.relative_humidity)) {
    lcd.setcursor(0,1);
    lcd.print("errore umidita'!");
  }
  else {
    lcd.setcursor(0,1);
    lcd.print("umidita': ");
    lcd.setcursor(15,1);
    lcd.print("%");
  }
}

void loop() {
  
  delay(delayms);
  
  sensors_event_t event;
  
  dht.temperature().getevent(&event);
  if (isnan(event.temperature)) {
    lcd.setcursor(13,0);
    lcd.print("err");
  }
  else {
    lcd.setcursor(13,0);
    lcd.print(event.temperature);
  }
  
  dht.humidity().getevent(&event);
  if (isnan(event.relative_humidity)) {
    lcd.setcursor(10,1);
    lcd.print("err");
  }
  else {
    lcd.setcursor(10,1);
    lcd.print(event.relative_humidity);
  }
}

ciao, io in passato anziché sprecare un carattere personalizzato per visualizzare un carattere ascii standard ho preferito la seguente soluzione:
code: [select]
lcd.write(223); //223 = °
lcd.print("c");

prova vedere se può andare bene anche al tuo lcd e se il carattere visualizzato è di tuo gradimento


Arduino Forum > International > Italiano > Software (Moderator: leo72) > [RISOLTO]Problema con LCD I2C 20*4 e caratteri personalizzati


arduino

Comments

Popular posts from this blog

Error compiling for board Arduino/Genuino Uno.

Installation database is corrupt

esp8266 (nodemcu 0.9) client.write très lent ???