Ho a disposizione un display LCD 128x64 (questo) e un'interfaccia I2C con PCF8574T (questo).
Indagando un po' mi pare di aver capito che la cosa più "tranquilla" è quella di utilizzare la libreria u8g2 lasciando perdere la possibità di utilizzare la comunicazione I2C.
Volevo studiare se era quindi possibile utilizzare comunque la mia interfaccia I2C (ed usare i 2 pin SCL e SDA) invece che "saltarla" e andare ad utilizzare 3 pin.
Sto lavorando su un arduino UNO.
Il driver ST7920 si può usare senza problemi in SPI e quindi servono in totale 4 pin (anche se 3 sono condivisi nel caso in cui tu stessi già usando altre periferiche SPI)
La libreria u8g2 è senza dubbio una delle più complete, ma come puoi vedere a questo link, per il driver ST7920 è prevista solo la modalità parallelo 8/4 bit e SPI.
Per usarlo in I2C dovresti pilotare il display "emulando" la modalità parallelo 4/8 bit per mezzo dell'I2C expander , ma questo significa che devi scrivere o modificare una libreria per supportare questa eventualità ammesso che abbia senso fare tutto questo lavoro:
usare un display grafico con un Arduino Uno che ha appena 2Kb di SRAM disponibile, è infatti una pessima idea a prescindere dai pin disponibili.
A me pare di aver visto lib per usare i2c con quel display ma usando mcp23017
Grande, direi che è un'ottima notizia per @zappizappi!
Qualcuno ha già pensato ad implementare una cosa del genere anche se con un altro I2C expander.
Mi vien da dire che non c'è una soluzione semplice al mio dilemma, o perlomeno qualcosa di affrontabile in maniera semplice. grazie a tutti!
La soluzione semplice è quella di prendere un I2C expander basato su MCP23017 come ha suggerito @nid69ita oppure di usare SPI (secondo me opzione migliore).