Miei cari compagni d'Arduino in questa difficile serata chiedo umilmente il vostro aiuto!
Sto provando e riprovando ad interfacciare uno schermo lcd 16x02 ad Arduino via i2c con una apposita board, (china style)
Premetto che ho testato lo schermo lcd con i collegamenti qua proposti http://arduino.cc/en/Tutorial/LiquidCrystal
e funziona perfettamente ma quando provo a collegarlo tramite i2c le cose collassano:
utilizzando la libreria LiquidCrystal_i2c e il seguente codice
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN 13
LiquidCrystal_I2C lcd(0x20); // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE); // Set the LCD I2C address
// Creat a set of new characters
const uint8_t charBitmap[][8] = {
{ 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
{ 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
{ 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
{ 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
{ 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
{ 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
{ 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
{ 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
};
void setup()
{
int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));
// Switch on the backlight
pinMode ( BACKLIGHT_PIN, OUTPUT );
digitalWrite ( BACKLIGHT_PIN, HIGH );
lcd.begin(16,2); // initialize the lcd
for ( int i = 0; i < charBitmapSize; i++ )
{
lcd.createChar ( i, (uint8_t *)charBitmap[i] );
}
lcd.home (); // go home
lcd.print("Hello, ARDUINO ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print (" FORUM - fm ");
delay ( 1000 );
}
void loop()
{
lcd.home ();
// Do a little animation by writing to the same location
for ( int i = 0; i < 2; i++ )
{
for ( int j = 0; j < 16; j++ )
{
lcd.print (char(random(7)));
}
lcd.setCursor ( 0, 1 );
}
delay (200);
}
Non sccede altro che lo schemrino si illumina a gonfie vele e poi nisba.. nessun carattere, pure ruotando il potenzometro del controller i2c non succede assolutamente nulla.
In cosa posso sbagliare??
l'lcd è questo, comandato da un HD44780:
http://www.ebay.it/itm/1pcs-1602-LCD-Verdant-Characters-Yellow-Backlight-HD44780-New-/281051859848?pt=LH_DefaultDomain_0&hash=item416fff0b88#ht_3686wt_1508
mentre l'interfaccia i2c è questa:
http://www.ebay.it/itm/170926744803?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_4108wt_1344
ovviamente collego ai 5v e gnd di arduino con null'altro collegato, e ovviamente l'SDA e SCL!
Unica modifica che ho fatto è che quando ho controllato l'interfaccia seriale aveva a mio avviso due pin male saldati che facevano contatto tra loro: quelli che corrispondono al D6 e D7 dell'lcd (ho proceduto subito a togliere il contatto).
-Curiosità: sul sito dicono che l'addres è 0x27 ma quando uso l'i2c scanner mi dice che è collegato un dispositivo all'indirizzo 0x20 (che è poi quello che utilizzo io)
Vi chiedo gentilmente di aiutarmi! non so più dove sbattere la testa!
Sarà il codice sbagliato o è l'interfaccia i2c che può essere difettata?
Grazie!