DS3231 RTC e display 12864 con ST7920

Salve, volevo chiedere ai più esperti del settore se è possibile cablare un RTC in I2C con un display 12864 che viene pilotato in seriale (3 cavi più 5v e gnd).
Quindi la domanda di fondo è se si può avere comunicazione seriale e I2C contemporaneamente. Se si come bisogna cablarla? Grazie anticipatamente.

Non vedo quali problemi ci sono ad usare la seriale (pin 0 ed 1 oppure altri due pin con la SoftwareSerial) assieme al bus I2C (pin A4 ed A5) ... pin diversi, cavi diversi ... distanze massime ben diverse (con il bus I2C puoi fare poco più di una decina di cm).

Guglielmo

gpb01:
(pin 0 ed 1 oppure altri due pin con la SoftwareSerial)

Grazie per la risposta Guglielmo, ma qualcosa non mi torna perché io ho cablato così il mio 12864 e ho occupato i pin a4 a3 a2 di arduino… Sbaglio in qualcosa? Si può cablare lo stesso display con soli 2 pin? se si potresti darmi qualche dritta? Grazie anticipatamente.

Premesso che non conosco il display in questione, da quel che leggo in giro non mi pare ci siano motivi per cui vada pilotato specificatamente con quei pin, per cui dovresti poterlo spostare dove ti pare.

Che libreria stai usando?

Forse segue questo schema/libreria.

Beh ok, ma non vedo nessun motivo per cui usare specificatamente quei pin, nel link dice che li ha scelti perché già usati (?) dalla libreria, ma in realtà glieli passa lui in fase di inizializzazione:

U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: en=18,rw=16,di=17

Tra l'altro, guardando la pagina dei device supportati dalla libreria in questione, si deduce che il display si potrebbe pilotare tramite l'interfaccia SPI hardware, il che renderebbe sicuramente il tutto più veloce, oltre a liberare i pin in questione!

Dovrebbe quindi essere possibile spostare A2 al pin 11, A4 al pin 13 e A3 su un pin qualunque, tipo il 10, e cambiare il costruttore così:

U8GLIB_ST7920_128X64_1X u8g(10);

Infatti con i 3 parametri è un SPI software, meglio se possibile in HW.
Non capisco poi la differenza tra U8GLIB_ST7920_128X64_4X e U8GLIB_ST7920_128X64_1X
1X o 4X di che ? Velocità dello SPI ?

4X vuol dire "Quad RAM", dovrebbe implicare che la libreria usa più memoria ma pilota il display più velocemente, permettendo animazioni più fluide, ad esempio.

SukkoPera:
4X vuol dire "Quad RAM", dovrebbe implicare che la libreria usa più memoria ma pilota il display più velocemente, permettendo animazioni più fluide, ad esempio.

interessante, ma arduino uno ce la fa a gestire il display? Se aggiungo un sensore all'rtc mi da "codice troppo lungo"

Non lo so, ma se ha fatto due versioni, un motivo ci sarà… La 4X sarà per i microcontrollori con più RAM, tipo la Mega. Usa la 1X, almeno in prima approssimazione.

Confermo quanto dici, la versione x1 impegna meno ram ed il codice gira anche sul mio uno, in quanto ai rallentamenti direi che sono tollerabili.. a dire il vero a occhio non sembra ci siano differenze però parlo di un semplice orologio digitale ed un termometro, magari proverò a fare test con qualcosa di grafico... bitmap o altro

Ho usato una parola non a caso: animazioni. Se non ne fai non dovrebbero esserci grosse differenze ;).

Si però un display grafico offre possibilità e soluzioni piu accattivanti e ampie... come scritto in altro post sono tentato di passare ad arduino mega anche perchè scrivere un codice che funzioni per me è gia un'impresa, se devo centellinare e ottimizzare mi vedo veramente in difficoltà.