Go Down

Topic: RISOLTOVerifica e Compilazione OK ...ma... (Read 303 times) previous topic - next topic

karafasta

Mar 25, 2019, 03:18 pm Last Edit: Mar 26, 2019, 05:41 pm by karafasta
Buongiorno


volevo chiedere  consiglio a proposito di un problema che non riesco a capire.

Spulciando  dei tutorial per  scrivere su lcd 20x4 ho trovato uno che faceva uso di un lcd senza I2C.

Ho cercato di modificarlo per il mio lcd I2C e ho ricompilato lo sketch .

Il problema che incontro è che la verifica dello sketch è OK e anche il caricamento  risulta OK:Caricamento completato  ma nulla appare sul display.

Questo problema mi succede anche per altri progetti e non so come risolvere visto che non risultano errori nella "parte rossa" dello sketch.

Immagino,conoscendomi, che le istruzioni del mio sketch saranno completamente sbagliate,ma comunque gradirei sapere perché :verifica ok,caricamento ok e poi nulla per poter riparare agli errori.

Code: [Select]
 #include <LiquidCrystal_I2C.h>

#include <Wire.h>

LiquidCrystal_I2C lcd(0x27,20,4);
void setup()
{
  lcd.begin(20,4);
  lcd.clear();
  lcd.cursor() ;
 delay (2000);
  lcd.noCursor();
}
void loop()
{
  lcd. home();
  lcd.print("xxxxx");
  delay(500);
  lcd.setCursor(0,0);
  lcd.print("xxxxxxx");
  lcd.setCursor(0,1);
  lcd.print("xxxxxxx");
  lcd.setCursor(0,2);
  lcd.print("xxxxxxxx");
  lcd.setCursor(0,3);
  lcd.print("xxxxxxx");
  lcd.setCursor(0,4);
  lcd.print("xxxxxx");
  delay(500);
}


Grazie
«A parità di fattori la spiegazione più semplice è da preferire»

nid69ita

#1
Mar 25, 2019, 03:26 pm Last Edit: Mar 25, 2019, 03:31 pm by nid69ita
Direi di si, qualche comando è errato.
Non ricordo ora a memoria la libreria ma di sicuro non ci sono due istruzioni a cui dai le stesse informazioni  20x4:
Code: [Select]
LiquidCrystal_I2C lcd(0x27,20,4);
...
lcd.begin(20,4);

Esistono almeno 2 versioni della Liquid_I2C,  una che vuole la dichiarazione e poi la lcd.begin() e un'altra che vuole la dichiarazione e poi la lcd.init().   Normalmente nei tuoi programmi funzionanti cosa dai come istruzioni lcd ?
my name is IGOR, not AIGOR

karafasta

Grazie per avermi risposto così presto.


Per quanto riguarda la librerie uso quella che ho trovato su Gestione librerie:LiquidCrystalI2C by Frank de Brabanden.

Le istruzioni di solito lcd.begin(16,2);e lcd.print.("XXXXX");

«A parità di fattori la spiegazione più semplice è da preferire»

nid69ita

#3
Mar 25, 2019, 08:44 pm Last Edit: Mar 25, 2019, 08:47 pm by nid69ita
Quindi di solito metti
   LiquidCrystal_I2C lcd(0x27);
e poi nella setup()
   lcd.begin(20,4);

E' corretto ? Se si, allora prova a togliere semplicemente 20,4 dalla LiquidCrystal_I2C lcd(0x27,20,4);
Quei parametri successivi sono opzionali ma se li metti dicono quali pin e come sono collegati tra il chip che pilota il modulino I2C e i pin del lcd

my name is IGOR, not AIGOR

karafasta

Ho provato a togliere il 20,4 ma alla verifica mi dà questo messaggio:

no matching function for call to  LiquidCrysta_I2C...LiquidCrystalI2C(int)
«A parità di fattori la spiegazione più semplice è da preferire»

nid69ita

Prova allora
LiquidCrystal_I2C lcd(0x27,20,4);
...
lcd.init() ;  //nel setup questa
my name is IGOR, not AIGOR

karafasta

#6
Mar 26, 2019, 09:34 am Last Edit: Mar 26, 2019, 09:38 am by karafasta
l'avevo già provata ma non va  mi dà ugualmente lo stesso avviso.
DEve  esserci qualche altro errore nella scrittura dello sketch che non riesco a capire!
«A parità di fattori la spiegazione più semplice è da preferire»

nid69ita

Ma un altro sketch che usi e ti funziona per il tuo lcd lo hai ?  
my name is IGOR, not AIGOR

karafasta

#8
Mar 26, 2019, 02:51 pm Last Edit: Mar 26, 2019, 02:52 pm by karafasta
purtroppo ho sketch solo per un16x2  _ma con una struttura completamente diversa,con array 1 e 2,

con lo scroll _che funziona anche sul 20x4(naturalmente su due righe) e anzi quando lo accendo si

illuminano tutti i "quadratini" mentre con lo sketch di cui sopra si illuminano solo due file.

Comunque proverò con questo che avevo scaricato e lo cambierò per un 20x4.
Capire perchè il " mio" non funziona non ci riuscirò mai!

Grazie
Code: [Select]
// include the library code
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
/**********************************************************/
char array1[]="  xxxxxxxxxx           "; //the string to print on the LCD
char array2[]="    xxxxxxxxx          "; //the string to print on the LCD
int tim = 500; //the value of delay time
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
/*********************************************************/
void setup()
{
  lcd.init(); //initialize the lcd
  lcd.backlight(); //open the backlight
}
/*********************************************************/
void loop()
{
  lcd.setCursor(15,0); // set the cursor to column 15, line 0
  for (int positionCounter1 = 0; positionCounter1 < 26; positionCounter1++)
  {
    lcd.scrollDisplayLeft(); //Scrolls the contents of the display one space to the left.
    lcd.print(array1[positionCounter1]); // Print a message to the LCD.
    delay(tim); //wait for 250 microseconds
  }
  lcd.clear(); //Clears the LCD screen and positions the cursor in the upper-left  corner.
  lcd.setCursor(15,1); // set the cursor to column 15, line 1
  for (int positionCounter = 0; positionCounter < 26; positionCounter++)
  {
    lcd.scrollDisplayLeft(); //Scrolls the contents of the display one space to the left.
    lcd.print(array2[positionCounter]); // Print a message to the LCD.
    delay(tim); //wait for 250 microseconds
  }
  lcd.clear(); //Clears the LCD screen and positions the cursor in the upper-left corner.
}


Questo è lo sketch che funziona anche sul 20x4
«A parità di fattori la spiegazione più semplice è da preferire»

Stilita

#9
Mar 26, 2019, 03:03 pm Last Edit: Mar 26, 2019, 03:04 pm by Stilita
La butto li...
hai trovato l'indirizzo del display?
Io mettevo 0x27 e non funzionava, poi ho usato I2C scanner e ho trovato
che il mio lcd ha come indirizzo 0x3F

lo trovi quì

http://www.mauroalfieri.it/elettronica/i2c-scanner.html
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

maubarzi

Su quest'ultima fai
Code: [Select]
void setup()
{
  lcd.init(); //initialize the lcd
  lcd.backlight(); //open the backlight
}

quindi la init senza parametri e la backlight che nell'altro non mi pare ci sia, per cui forse ti resta spenta la retroilluminazione.

La libreria mi pare la stessa.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

nid69ita

l'avevo già provata ma non va  mi dà ugualmente lo stesso avviso.
DEve  esserci qualche altro errore nella scrittura dello sketch che non riesco a capire!
Nello sketch che ti funziona usi init e non begin. Poi come dice maubarzi usi anche backlight. Fai lo stesso nel nuovo programma
my name is IGOR, not AIGOR

karafasta

#12
Mar 26, 2019, 05:28 pm Last Edit: Mar 26, 2019, 05:32 pm by karafasta
Salve.
Ho testato con I2C scanner e l'indirizzo è proprio 0X27.
Ho provato anche con init e baklight ma senza risultati.
Naturalmente ci riferiamo al primo  sketch che ho postato no?

Vi ringrazio per l'interessamento.


Ho ricontrollato e messo init e backlight FUNZIONA

Grazie tante!
Metto risolto   :)
«A parità di fattori la spiegazione più semplice è da preferire»

maubarzi

Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

Go Up