1. A breve aggiorneremo la piattaforma di Reboot per risolvere alcuni problemi con i plug-in, quindi chiediamo ancora un po' di pazienza, Lo staff di Reboot

Guida Arduino UNO + Display SSD1306 OLED 128x64 I2C [HELLO WORLD]

Discussione in 'Arduino tutorial' iniziata da StandardBus, 9 Nov 2016.

  1. StandardBus

    StandardBus Staff Alan Staff

    Iscritto:
    15 Dic 2014
    Messaggi:
    4.092
    Like ricevuti:
    5.298
    [​IMG]
    I display tornano utili durante i nostri esperimenti di tinkering per avere sott'occhio le informazioni che vogliamo siano sempre accessibili.
    Grazie all'interfaccia I2C di cui è dotato il display OLED SSD1306 il collegamento richiede solo 4 fili: GND e VCC (+5V) per l'alimentazione, ed SDA + SCL per il passaggio dati.

    In meno di 10 minuti vedrete comparire a schermo qualsiasi testo vogliate.


    Cosa ci serve

    Preparazione dell'IDE

    1. Scarica ed installa l'ultima versione dell'Arduino IDE ufficiale per il tuo sistema operativo dal sito Arduino.cc, a questo link. Sconsiglio di utilizzare l'IDE che viene distribuito tramite il sito Arduino.org, in quanto non ufficiale. Diversi utenti hanno riscontrato anche problemi nell'utilizzo dell'IDE di Arduino.org.

    2. Collega Arduino al tuo PC via USB

    3. Apri il programma Arduino dall'icona che si sarà creata sul desktop

    4. Seleziona "Strumenti":arrowright:"Scheda:":arrowright: e seleziona il tuo modello di Arduino. Se usi Arduino UNO, seleziona la seconda voce tra le schede Arduino AVR, ovvero "Arduino/Genuino UNO"

      [​IMG]
    5. Seleziona la porta COM su cui è presente l'Arduino da "Strumenti" :arrowright: "Porta:" in genere l'IDE è in grado di dirti su quale porta è collegata una scheda basata su Arduino.

    6. Per utilizzare il display OLED dovrai aggiungere all'IDE Arduino la giusta libreria, che in questo caso si chiama U8gLib.
      Apri il menu "Sketch" :arrowright: "#include libreria" :arrowright: "Gestione librerie..."

      [​IMG]

    7. Digita U8gLib nel campo di ricerca ed installa la libreria "U8gLib by Oliver", che supporta sia il display che useremo in questa guida che altri modelli.

      [​IMG]

    8. Ora sei pronto per iniziare a programmare sull'Arduino.
    Programmazione di Arduino

    1. Collega Arduino al PC tramite USB

    2. Apri l'Arduino IDE, cancella il codice di esempio che è già presente nella finestra e copia al suo interno questo codice:
      Codice:
      #include "U8glib.h"
      
      U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);    // I2C / TWI 
      // questa linea indica alla libreria U8glib che utilizzeremo un display SSD1306, in questo modo saprà automaticamente come comportarsi
      
      void draw(void) { 
        u8g.setFont(u8g_font_unifont);
        u8g.drawStr( 0, 22, "www.reboot.ms");
      // le ultime due linee indicano al programma che intendiamo usare il set di caratteri unifont e che vogliamo scrivere "www.reboot.ms" alle coordinate asse X=0 pixel, asse Y=22 pixel
      }
      
      void setup(void) {
        // impostiamo il colore da utilizzare di default
        if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
          u8g.setColorIndex(255);     // bianco, anche se il display SSD1306 non supporta altri colori
        }
        else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
          u8g.setColorIndex(3);         // massima intensita
        }
        else if ( u8g.getMode() == U8G_MODE_BW ) {
          u8g.setColorIndex(1);         // pixel on
        }
        else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
          u8g.setHiColorByRGB(255,255,255);
        }
        pinMode(8, OUTPUT);
      }
      
      void loop(void) {
        u8g.firstPage();  
        do {
          draw();
        } while( u8g.nextPage() );
        // ricostruisce l'immagine dopo il tempo specificato dal delay (se non commentato)
        //delay(50);
      }
    3. Invia il programma su Arduino premendo sul tasto "Carica" [​IMG]

    4. Ora si passa al montaggio dei componenti.
    Assemblaggio

    Il display OLED SSD1306 si può trovare in diverse forme, l'importante è che siano disponibili i PIN I2C per il collegamento, ovvero GND, VCC, SCL ed SDA.

    [​IMG]

    Schema di collegamento:

    [​IMG]
    Dove il filo termina in un pallino verde, significa che è collegato al terminale in quell'area.
    Alimentando Arduino tramite porta USB o batteria, il risultato sarà quello di veder comparire la scritta www.reboot.ms a schermo.
    Con lo stesso codice è possibile anche visualizzare qualsiasi altra informazione, riadattando il programma in base a quello che ti serve.

    Ora pasticcia pure cambiando il testo da mostrare a schermo e gli altri parametri spiegati nel codice.
    Altri tutorial in arrivo.
     
    #1
    Ultima modifica: 9 Nov 2016
    A zoomx piace questo elemento.
  2. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    892
    Like ricevuti:
    339
    Questi piccoli schermi da 0.96" sono dei degni eredi dei Nokia 5110
     
    #2
  3. StandardBus

    StandardBus Staff Alan Staff

    Iscritto:
    15 Dic 2014
    Messaggi:
    4.092
    Like ricevuti:
    5.298
    Visivamente sono bellissimi, e hanno anche una risoluzione abbastanza alta da visualizzare parecchie info a schermo.
     
    #3
  4. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    892
    Like ricevuti:
    339
    Qui
    https://github.com/zoomx/OLED-Pong-Clock
    c'è un mio porting di un Pong Clock di Rob Parrett, originariamente pensato per un LCD TFT e adattato a questo schermino OLED grazie al fatto che Rob ha usato le librerie Adafruit GFX. Mi è bastato cambiare poco.
    Necessita di un RTC, nel mio caso un DS1307 (non è il massimo ma avevo quello) e di due bottoni che però ancora non ho mai montato.
    Utilizza l'RTC per leggere il tempo iniziale ma poi questo viene incrementato dall'uscita digitale del DS1307 che fornisce un impulso al secondo.
    I due pulsanti servono per settare l'ora ma ancora non li ho mai provati.

    Il Pong Clock è un orologio dove il punteggio indica l'ora. Per fare questo si simula una partita e quando bisogna cambiare i minuti il giocatore a sinistra manca la palla mentre se è l'ora a cambiare.… in effetti dovrebbero perdere entrambi, devo dire di non essere rimasto a guardare.

    Il gioco è un po' lento e ci sarebbe da migliorare.
    [​IMG]
     
    #4
    A StandardBus piace questo elemento.
  5. nikox

    nikox Livello 3

    Iscritto:
    17 Ago 2017
    Messaggi:
    58
    Like ricevuti:
    2
    Come posso fare la stessa cosa, ma con un lcd da 20 pin sempre da 128x64?
     
    #5
  6. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    892
    Like ricevuti:
    339
    Un LCD da 20 pin? Si tratta di un LCD smontato da qualche apparato oppure hai preso un OLED con il cavo piatto, cioè senza circuito adattatore su SPI e I2C?

    Riguardo al progettino sopra, poiché son pigro, l'ho adattato ad un ESP8266 così l'ora esatta la prende da solo.
     
    #6
    A StandardBus piace questo elemento.
Sto caricando...

Condividi questa Pagina