Collegamento Display

Un saluti a tutti ragazzi, qualcuno mi può aiutare a collegare questo display (LCD03-16x2-B Display seriale/I2C 16x2 sfondo bluad) ad arduino uno.
Grazie

Se ne sta discutendo in un altro topic.
Comunque... essendo I2C lo devi collegare all'Arduino ai corrispondenti pin SDA e SCL ovvero i pin A4 e A5 oppure nella UNO R3 nei pin aggiuntivi presenti dopo il pin 13.
Poi naturalmente devi collegare GND e 5V.

Sicuramente il collegamento e pin SDA e SCL del (diplay) Ovvero i pin A4 e A5 e questo. ma la libreria ?
Grazie

--> Arduino Forum

scusa paolop quando scrivi dalla UNO R3 (e quella che e in mio possesso) i pin aggiuntivi sono dopo il pin 13 sono il gnd e il pin aref
giuso?

trovati i pin , sono dopo il pin aref quindi sono il pin 16 SDA e 17 SCL , facci delle prove
Grazie

anch'io ho la uno rev3, significa quindi che quei pin possono essere utilizziati ogni volta che si necessita di una connessione i2c anche per progetti differenti da questo?

Aledexter:
anch'io ho la uno rev3, significa quindi che quei pin possono essere utilizziati ogni volta che si necessita di una connessione i2c anche per progetti differenti da questo?

I pin dell'I2C puoi usarli per tutte le comunicazioni con periferiche I2C, non solo dispay.
PS: i pin SDA e SCL sono un rimando dei pin A4 e A5, su cui l'Atmega328 ha mappato il bus I2C.

ciarly64:
trovati i pin , sono dopo il pin aref quindi sono il pin 16 SDA e 17 SCL , facci delle prove
Grazie

Per essere esatti sono i pin 18 e 19.
Sono mappati nel file pins_arduino.h, nella variante standard del core di Arduino:

static const uint8_t SDA = 18;
static const uint8_t SCL = 19;

ok il collegamento lo fatto mettendo resistenze di pull-up da 1KOhm sui collegamenti I2C.
il display quando lo collego al computer via usb si illumina un secondo si spegne e rimane una scritta SERIALMODE
quale libreria devo scaricare per farlo funzionare.
Grazie per la pazienza.

ma non c'e' un jumper, sulla schedina.
per scegliere serial mode / i2c mode

ciarly64:
quale libreria devo scaricare per farlo funzionare.

PaoloP:
--> Arduino Forum

2 cose.
1 metti il link del tuo display, cosi' controlliamo meglio
2 in firma ho una libreria che potrebbe interessarti

Fai una foto del retro del display e postala.

Link - http://www.robot-italy.com/it/display-led/serial-lcd-glcd.html . Codice 785003
Ok ragazzi il collegamento hardware va bene il display con questo file ( CustomChars) si accende la retro illuminazione il problema e che scrive tutte cose strane. invece di scrivere sul display Hello world.
o provato con altri file ma nulla .

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
uint8_t duck[8] = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4};

LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();

lcd.createChar(0, bell);
lcd.createChar(1, note);
lcd.createChar(2, clock);
lcd.createChar(3, heart);
lcd.createChar(4, duck);
lcd.createChar(5, check);
lcd.createChar(6, cross);
lcd.createChar(7, retarrow);
lcd.home();

lcd.print(“Hello world…”);
lcd.setCursor(0, 1);
lcd.print(" i “);
lcd.write(3);
lcd.print(” arduinos!");
delay(5000);
displayKeyCodes();

}

// display all keycodes
void displayKeyCodes(void) {
uint8_t i = 0;
while (1) {
lcd.clear();
lcd.print(“Codes 0x”); lcd.print(i, HEX);
lcd.print("-0x"); lcd.print(i+16, HEX);
lcd.setCursor(0, 1);
for (int j=0; j<16; j++) {
lcd.write(i+j);
}
i+=16;

delay(4000);
}
}

void loop()
{

}

Saluti e auguri di Buon Natale .

ma e' un display sia seriale che i2c.
se lo usi in seriale devi usare semplicemente i comandi seriali per scriverci, cosi' come scrivi sukl serial monitor.
a quello serve un lcd seriale, per semplificarti le cose. se non vuoi suarlo in seriale allora devi: "La modalità di pilotaggio viene selezionata tramite un jumper posto nella parte posteriore"

Ciao, intanto racchiudi il codice tra i tag code così diventa più leggibile; la cosa che devi controllare bene sono i collegamenti, se li hai fatti volanti, senza incastri sulla bread o saldature, stai certo che hai dei falsi contatti; altra possibilità è che siano invertiti i pin di controllo; nel dubbio che possa essere l'interfaccia I2C disabilitala mediante il jumper previsto e usa il normale collegamento a 4 pin più controlli, previsto sul connettore posto sul bordo superiore del display, con l'apposita lib LiquidCrystal

Per i collegamenti sulla bread credo che siano corretti

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

uint8_t bell[8]  = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
uint8_t note[8]  = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
uint8_t duck[8]  = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
uint8_t retarrow[8] = {	0x1,0x1,0x5,0x9,0x1f,0x8,0x4};
  
LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
  
  lcd.createChar(0, bell);
  lcd.createChar(1, note);
  lcd.createChar(2, clock);
  lcd.createChar(3, heart);
  lcd.createChar(4, duck);
  lcd.createChar(5, check);
  lcd.createChar(6, cross);
  lcd.createChar(7, retarrow);
  lcd.home();
  
  lcd.print("Hello world...");
  lcd.setCursor(0, 1);
  lcd.print(" i ");
  lcd.write(3);
  lcd.print(" arduinos!");
  delay(5000);
  displayKeyCodes();
  
}

// display all keycodes
void displayKeyCodes(void) {
  uint8_t i = 0;
  while (1) {
    lcd.clear();
    lcd.print("Codes 0x"); lcd.print(i, HEX);
    lcd.print("-0x"); lcd.print(i+16, HEX);
    lcd.setCursor(0, 1);
    for (int j=0; j<16; j++) {
      lcd.write(i+j);
    }
    i+=16;
    
    delay(4000);
  }
}

void loop()
{

}