Lcd 1c2 multipli

Abuongiorno, mi sono appena presentato e come ho scritto sono nuovo nel mindo arduino.
Il mio problema che non sto riuscendo a far visualizzare due lcd 16,2 con scededa i2c tramite lo schedino TCA9548A.
Ho cercato nei vari tuttorial ma non riesco, ho provato ad usale la libreira liquidcristal_i2c la libreia
newliquidcristal_i2c ma niente.
entrambi lcd hanno indirizzo 0x27C e la scheda tca9548A ha indirizzo 0x70.
di seguito il mio schizzo:
grazie per l'aiuto

type or paste code here
```#include <LiquidCrystal_PCF8574.h>
#include <Wire.h>
LiquidCrystal_PCF8574 lcd0(0x27);
LiquidCrystal_PCF8574 lcd1(0x27);

void TCA9548A(uint8_t bus) {
  Wire.beginTransmission(0x70);  // TCA9548A address is 0x70
  Wire.write(1 << bus);          // send byte to select bus
  Wire.endTransmission();
}



void setup() {

  TCA9548A(1);
  lcd0.begin(0, 0);
  TCA9548A(7);
  lcd1.begin(0, 0);
}

void loop() {
  TCA9548A(1);
  lcd0.clear();
  lcd0.setCursor(0, 0);
  lcd0.print("World!");

  TCA9548A(7);
  lcd1.clear();
  lcd1.setCursor(0, 0);
  lcd1.print("ciao!");




}

@F1pier : In conformità al REGOLAMENTO, fosse anche per una sola riga, il codice va racchiuso negli appositi tag ... :roll_eyes:

... cortesemente, quindi, edita il tuo post più sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice.

Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac all'intero del IDE). Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà sistemato il codice, nel rispetto del suddetto regolamento nessuno ti risponderà, quindi ti consiglio di fare il tutto al più presto. :wink:

Ma hai letto con attenzione quello che ti ho scritto? C'è chiaremente indicato: "... quindi NON scrivendo un nuovo post ..." ...

Cortesemente fai quanto ho chiesto sopra, grazie.

Guglielmo

scusami ho correttp

Dato che non metti alcun link, immagino tu stia parlando di QUESTA scheda di Adafruit ...
... hai seguito, alla lettera, il loro TUTORIAL?

Metti anche uno schema dei collegamenti che hai fatto ... anche disegnato a mano. :wink:

Guglielmo

Si Guglielmo, ho seguito alla lettera il loro tutorial così anche i collegamenti. Usando tre oled funziona regolarmente, sempre con TCA9548A, ma appena collego i lcd 16,2 non funziona. Ho provato a cambiare librerie liquicristsl_i2c newcristal_i2c e anche liquidcrystal 8574 ma niente. Ho provato con gli esempi Tca9548a e li vede collegati mi da su quale porta sono collegati e il loro indirizzo. So che posso cambiare il loro indirizzo ma vorrei usare il Tca9548a, grazie per l'aiuto sempre gentilissimo

Scusa ma hai provato DA SOLO, senza null'altro (né mux né oled) il solo modulo LCD I2C?

Perché magari è un problema del modulo o della libreria che usi e quindi ... devi prima verificare questo.

Guglielmo

Comunque, la seguente libreria PCF8574_HD44780_I2C.zip (522.4 KB) ... è supercollaudata (e manutenuta da un utente del forum) per i moduli LCD I2C ... usa questa.

Guglielmo

ok grazie risolto con la libreria da te segnalata,

type or paste code here
`#include <Wire.h>
#include <PCF8574_HD44780_I2C.h>

// First LCD - Address 0x27, 16 chars, 2 line display
PCF8574_HD44780_I2C lcd1(0x27, 16, 2);
// Second LCD - Address 0x20, 16 chars, 2 line display
PCF8574_HD44780_I2C lcd2(0x27, 16, 2);

void TCA9548A(uint8_t bus) {
  Wire.beginTransmission(0x70);  // TCA9548A address is 0x70
  Wire.write(1 << bus);          // send byte to select bus
  Wire.endTransmission();
}
void setup()
{
  TCA9548A(3);
  lcd1.init();    // initialize the first lcd
  TCA9548A(7);
  lcd2.init();    // initialize the second lcd

}

void loop()
{
  TCA9548A(3);
  // Print a message on the first LCD.

  lcd1.backlight();
  lcd1.setCursor(0, 0);
  lcd1.print("Hello, #1 world!");
  TCA9548A(7);
  // Print a message on the second LCD.
  lcd2.backlight();
  lcd2.setCursor(0, 0);
  lcd2.print("Hello, #2 world!");
}``

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.