Il mio progetto x la costruzione di un Strumentazione supplementare scooter è ormai terminato. Manca il montaggio on board. Purtroppo però, il display LCD 0802 che ho scelto, è troppo grande, e a meno che non si lavori troppo sul cruscotto, distruggendolo, è quasi impossibile da implementare.
Parlando di questo con un mio amico, mi ha consigliato degli oled e mi ha prestato per delle prove, un oggetto del genere:
L'oled era li da tempo, per cui non ci sono specifiche o altro, so di per certo che è i2c e che è da 5V e so che dovrebbe avere il drive SSD1306 (di questo non ne sono certo al 100%).
Ho cominciato a fare delle ricerche, ma vedo che in rete di preferisce di più l'uso degli lcd. Dovendo restituire l'oled (integro) vorrei caricare la libreria più idonea e provarlo. Avete idee in merito? Adafruit o u8glib?
Inoltre ho anche dei dubbi sul cablaggio del suddetto oled sulla mia Uno R3:
Vdd: 5V
Gnd: gnd
Sda: A4
Scl:A5
In merito ai pin Sda o Scl dell'oled, posso cablarli pure sui rispettivi pin di arduino posti dopo aref?
E la resistenza di pull-up serve?
Su Arduino i pin SCL/A5 ed SDA/A4 del I2C sono FISSI e non puoi spostarli da nessun'altra parte. Quelli che sulla UNO si trovano dopo AREF sono fisicamente collegati ad A4 ed A5 e quindi sono la stessa cosa.
Il bus I2C richiede obbligatoriamente le resistenze di pull-up ... meglio che ti studi come funziona ... QUI.
Grazie Guglielmo, leggo al volo. Se posso, perchè quando ho cablato il modulo rtc non ho messo la R di pull-up, era già nel modulo? Avendo nel circuito anche l'RTC, posso omettere quindi tale R? Inoltre hai un'indicazione su qualche libreria?
Intanto assicurati che il display ha sopra un regolatore 3.3V perché quel controller ammette come massimo 3.3V, ti serve anche un level shifter per la I2C in quanto lavora a 3.3V mentre quella di Arduino lavora a 5V.
Al limite, per la I2C, puoi collegare le pullup al 3.3V di Arduino, al 99% funziona anche sei al limite delle specifiche per il bus I2C, danni ne fai, nella peggiore delle ipotesi non funziona.
Adafruit ha una libreria specifica per quel controller, serve anche la "Adafruit_GFX".
Negli oled non c'è nulla di misterioso, funzionano allo stesso modo di tutti gli altri display, cambia solo la tecnologia con cui è realizzato lo schermo vero e proprio.
lascierei perdere la libreria u8g, è potente perchè ha ottime soluzioni grafiche ma io sono passato da una Adafruit_liquidCrystal alla u8g e mi sono dovuto riscrivere tutto il codice. Ad oggi non ho ancora capito come si fa un lcd.clear :o
@gutty: Ti ho già spiegato che la clear non si fa perché non serve farla!
Per quella che è la mia esperienza la lib Adafruit usa più risorse, ma entrambe sono comode da usare e passare dall'una all'altra non è così traumatico.
Per di più credo che la u8g supporti anche un'emulazione SPI/i2c software, se proprio uno dovesse a tutti i costi usare altri pin. Ovviamente non lo consiglio.
Voi la fate facile, ma io ho il mal di testa. In primis sono confuso se bisogna usare o no le r di pull up. Tutte le immagini in rete non le riportano, poi non so se con l'rtc i2c c'è qualcosa da fare, sempre in.ottica cablaggi e r di pull up. Poi non sono sicuro sulla vcc di alimentazione. Il datasheet di sto oled cinese dice che è compatibile con i 5 v. Poi per ultimo, sono confuso con le librerie da usare.
Trovo più semplice usare gli lcd standard....ma è un mio limite.
Nessuno ha uno sketch base, dal quale capire che lib. Usare, come stampare un valore o testo e come posizionarlo sul display?
Le Resistenze di pull-up 90 su 100 sono già sull'RTC. Se ti funziona direi che è così. Comunque probabilmente ci sono anche sul display. In linea di massima puoi non pensarci, anche se sapere come Funziona il bus i2c sarebbe cosa buona e giusta.
Secondo me a 5V funziona, ma di quei display ce ne sono in giro mille tipi, bisognerebbe vedere come è fatto esattamente quello che hai. Hai un multimetro per fare una prova?
Per il resto scegli una libreria e guarda i suoi esempi, entrambe ne hanno e ti mostrano come fare molte cose.
Io personalmente consiglio u8glib per i motivi succitati.