Go Down

Topic: PROBLEMA I2C LCD 20x4 (Read 20249 times) previous topic - next topic

leo72

Normalmente la fila di rettangolini scuri sulla 1a e 3a fila indicano chiaramente un problema di comunicazione, quei rettangoli sono il segnale che il chip è alimentato ma non riceve dati. Quindi qualcosa non funziona, o lo shield o i collegamenti fatti da te.

Rebel_88

Sinceramente spero che siano i collegamenti fatti da me...cmq devo connettere solo 4 fili non penso di crare problemi.
Ho collegato GND -5V(dall' arduino) SDA al pin Analog4 e SCL all'analog5 tramite dei fili per breadboard...in più il test fatto per vedere l'indirizzo della periferica I2C da esito positivo a 0x27 quindi credo che il collegamento sia fatto bene.
Il fatto che ottengo un indirizzo dal test puo significare che anche la periferica funziona correttamente?

leo72

Se la periferica ha risposto su 0x27 il collegamento I2C dovrebbe funzionare.

Rebel_88

E tutti gli altri sintomi cosa indicano allora?
Perchè lo schermetto comincia a lampeggiare se inserisco l'indirizzo 0x27 come indirizzo di collegamento per l'I2C?
Nonostante le numerose prove che ho fatto le righe alternate sull' LCD persistono.
Spero di venirne a capo con il vostro aiuto

Vespucci

#19
Nov 23, 2013, 01:38 am Last Edit: Nov 23, 2013, 01:42 am by Vespucci Reason: 1
Non so se può esserti utile, ma io ho dovuto dichiarare i vari pin usati dall' IC2 per la connessione all'LCD, prova con questa :

//    settaggio           indiriz, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

ciao Dimi

p.s: Hai provato a regolare la luminosità dello schermo dal trimmer ?  ]:D

Rebel_88

Hehe la regolazione della luminosità l'ho fatta  :D
Cmq seguirò il tuo consiglio, ma come faccio a sapere che valori devo inserire?

Rebel_88

Ho trovato un codice che mi permette di inserire i valori dei pin del controllo I2C , ed ho scritto questo bassandomi sulla foto in allegato:

Code: [Select]
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 9, 10, 11, 4, 5, 6, 7, 12, POSITIVE);  // Set the LCD I2C address


Sono indeciso solo sul 12, POSITIVE per il resto credo che sia tutto corretto.
Ma se lo carico su Arduino e collego lo schermetto viene spenta la retroilluminazione e le due righe colorate in modo alternato rimangono

Rebel_88

Buongiorno e scusate le mille risposte.
Oramai avevo perso le speranze e cosi ho provato a scrivere le stesse cose riportate dall'utente Vespucci e nonostante quei pin non fossero dichiarati da nessuna parte l'LCD ha cominciato a funzionare.
Per chi fosse interessato ho utilizzato questo sketch :
Code: [Select]
/* YourDuino.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC  A0 A1 A2"
terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address


/*-----( Declare Variables )-----*/
//none

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);  // Used to type in characters

  lcd.begin(20,4);         // initialize the lcd for 20 chars 4 lines and turn on backlight

// ------- Quick 3 blinks of backlight  -------------
  for(int i = 0; i< 3; i++)
  {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }

  lcd.backlight(); // finish with backlight on 
 
//-------- Write characters on the display ----------------
// NOTE: Cursor Position: CHAR, LINE) start at 0 
  lcd.setCursor(3,0); //Start at character 4 on line 0
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(2,1);
  lcd.print("From YourDuino");
  delay(1000); 
  lcd.setCursor(0,2);
  lcd.print("20 by 4 Line Display");
  lcd.setCursor(0,3);
  delay(2000);   
  lcd.print("http://YourDuino.com");
  delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Start Serial Monitor");
  lcd.setCursor(0,1);
  lcd.print("Type chars 2 display");   


}/*--(end setup )---*/


void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
      // read all the available characters
      while (Serial.available() > 0) {
        // display each character to the LCD
        lcd.write(Serial.read());
       
      }
    }
  }

}/* --(end main loop )-- */


/* ( THE END ) */


Per il quale ho inserito questa libreria :  LiquidCrystal_V1.2.1.zip
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

ed ho seguito anche questo post per iniziare :
http://forum.arduino.cc/index.php?topic=158312.0

Per chi fosse interessato questo è l'LCD che ho comprato ad un prezzo bassissimo e il venditore è molto serio:
http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=161095107719&ssPageName=ADME:X:RTQ:US:1123

Non voglio fare pubblicità a lui ma consigliare un prodotto che dato il prezzo puo essere acquistato da chiunque per studiare il funzionamento di un LCD o di un supporto per I2C.
Quindi ringrazio tutti voi per il tempo che mi avete concesso nel risolvere questo problema che per me era nuovo e sconosciuto.  XD
Grazie ancora e buona giornata

knocer

Salve  a tutti,

qualcuno sa spiegarmi perché se carico uno sketch su Arduino uno con la versione 1.0.4 il display i2 con interfaccia seriale funziona, mentre se lo carico con la versione 1.6.1 no ?

grazie in anticipo .

IvanKira01

Ho acquistato una settimana fa da Amazon questo Display LCD 20x4 della SainSmart.
link diplay Amazon: SainSmart IIC/I2C/TWI - Display LCD seriale 2004 20x4 per Arduino UNO MEGA R3

Ho seguito vari tutorial su You Tube e ho provato a scaricare diverse librerie per provarlo e fare qualche programma ma non sono ancora riuscito a farlo funzionare in alcun modo.

Sono andato anche sul sito della SainSmart: SainSmart e ho provato a scaricare le loro librerie, ma nulla da fare non funziona nulla.

Come si vede dalle foto, sembra che funzionino solo due righe ma su di esse non compare nessuna scritta.
Ho provato anche a cambiare l'indirizzo I2C e sempra che se lo imposto su: 0x27, quando scarico il programma nell'arduino il diplay inizia a lampeggiare ma poi si spegne non facendo comaprire nulla.

Chiedo se c'è qualcuno in grado di risolvermi questo problema e far si che il diplay funzioni correttamente.



GRAZIE!!!

SukkoPera

#25
Dec 24, 2015, 03:58 pm Last Edit: Dec 24, 2015, 03:58 pm by SukkoPera
Prova TUTTI gli esempi che trovi qua:

https://arduino-info.wikispaces.com/LCD-Blue-I2C
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

Go Up