Arduino – LCD I2C Serial Controller (Funduino)


.

Semplicemente una nota tecnica per chi – come me – ha acquistato un serial controller chiamato “1602LCD Display IIC/I2C/TWI/SP I Serial Interface Board Module (Funduino)” su ebay, e non è riuscito a farlo funzionare “al volo”.


Ebbene dopo diversi tentativi e (troppo) tempo perso finalmente ho trovato la soluzione per farlo funzionare. Il basso costo del componente (il più economico su ebay) si riflette su tutto il tempo speso a causa dell’assenza di documentazione di qualsiasi tipo (nessun manuale, nessun datasheet, nessuno sketch di esempio sulla pagina ebay..)

Istruzioni:

  1. Saldate tutti i connettori e controllatene la resistività per essere sicuri che la saldatura sia efficacie. Sembra banale ma un pessimo saldatore come me ce ne ha messo un po’ prima di ottenere un risultato decente (anche se esteticamente terribile..)
  2. Scaricate la libreria “Liquid Cristal” da qui
  3. Scaricate un “I2C Address finder” (da qualche sito, purtroppo non ho più il link) e cercate l’indirizzo del display.. il mio è 0x27
  4. Infine, ecco lo sketch... la parte più importante è la definizione delle costanti (pin), che più essere diversa a seconda del serial controller.. (questa funziona con il mio Funduino)

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>  // F Malpartida's NewLiquidCrystal library

#define I2C_ADDR    0x27  // Define I2C Address 
#define BACKLIGHT_PIN  7
#define En_pin  4
#define Rw_pin  5
#define Rs_pin  6
#define D4_pin  0
#define D5_pin  1
#define D6_pin  2
#define D7_pin  3
#define  LED_OFF  0
#define  LED_ON  1

LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()  
{
lcd.begin (16,2);
lcd.setBacklightPin(BACKLIGHT_PIN, NEGATIVE);
lcd.setBacklight(LED_ON);
}

void loop()
{
lcd.clear();
delay(1000);
lcd.home();
lcd.backlight(); 
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,1); //Start at character 0 on line 1
lcd.print("16 by 2 Display");
delay(8000);
}

Source: http://forum.arduino.cc/index.php?topic=158312.0

Your Reply