Com connectar la pantalla OLED I2C a ARDUINO

Introducció: Introducció a la pantalla OLED I2C 128 * 64 / 128 * 32.
Com connectar la pantalla OLED I2C a ARDUINO

Hola! En ser un aficionat a l'electrònica, estic segur que tot el que fem -joguines electròniques, productes casolans o grans projectes- és tot per curiositat i mandra. La curiositat s'esforça per entendre i comprendre allò vast, desconegut, per esbrinar com funciona allà, què fa, com es mou. I la mandra s'inventa alguna cosa per inventar-se, per no aixecar-se, no acostar-se, no aixecar, no embrutar-se o qualsevol altra cosa important.

Com que veure informació és millor que esbrinar què està a punt de passar al nostre dispositiu, o ja ha passat, o està passant, sens dubte volem rebre aquesta informació més útil dels nostres microcontroladors, sensors o altres dispositius. I en qualsevol cas, vull rebre qualsevol missatge, com ara preguntes, avisos, recordatoris, emoticones, estrelles, cors, etc.

Per a aquells que també tinguin un desig similar, aquí teniu una petita guia per connectar i provar pantalles OLED petites i econòmiques.
A continuació, parlarem d'un dels models de pantalla OLED àmpliament disponibles per als radioaficionats, controlat pel xip SSD1306, amb una mida de pantalla de 0,96 polzades i una resolució de 128 * 64 o 128 * 32 píxels. Aquestes pantalles són ideals per a petits dissenys de ràdio amateur i projectes casolans.
Com connectar la pantalla OLED I2C a ARDUINO

Pas 1: Conceptes bàsics


El connectarem a Arduino UNO / NANO, i també el programarem mitjançant Arduino.
  • L'OLED és un díode emissor de llum orgànic, és a dir, un dispositiu semiconductor fet de compostos orgànics que comença a emetre llum quan hi passa un corrent elèctric.
  • ARDUINO és una plataforma de formació i sistemes d'automatització i robòtica d'edificis.
  • ArduinoIDE - entorn de desenvolupament. Aquest és un programa de programació Arduino gratuït.
  • I2C – Circuits Inter-Integrats, línia de comunicació entre xips.
  • Sketch, també conegut com codi, també conegut com programa - Terminologia d'Arduino.

Seguiu les instruccions per entendre com connectar i configurar correctament la pantalla OLED a l'Arduino i com mostrar un missatge personalitzat a la seva pantalla.
Ho fem tot pas a pas.

Pas 2: accessoris


Només necessitem quatre coses:
  • 1. La pantalla OLED en si és de 0,96” (la pots comprar a Aliexpress o Ebay, és llarga, però barata!).
  • 2. Arduino UNO / Nano (mateix lloc que la pantalla).
  • 3. Cables de connexió (ibid.).
  • 4. Ordinador o portàtil amb ArduinoIDE instal·lat.

Com connectar la pantalla OLED I2C a ARDUINO

En general, comprar peces per a diversos projectes a Aliexpress i Ebay és una cosa molt interessant, mentre esteu treballant en un projecte, les peces per a un altre ja estan en camí. El més important és no oblidar fer una comanda.

Pas 3: connectar la pantalla


La pantalla està controlada per un xip SSD1306, que admet cinc protocols de comunicació, un dels quals és I2C. Les dades que utilitzen aquest protocol es transmeten només a través de dos cables, i com menys cables en el cas, millor, per la qual cosa ens convé força.Però! Hi ha mòduls amb el protocol SPI i fins i tot amb canvi de protocol, així que aneu amb compte a l'hora de comprar aquest mòdul.
Com connectar la pantalla OLED I2C a ARDUINO

Pins utilitzats:
Pantalla OLED: SCL/SCK (rellotge) i SDA (dades), potència "Plus" (VCC) i potència "Menys" (GND).
Com connectar la pantalla OLED I2C a ARDUINO

Pins utilitzats:
Arduino UNO - SCL/SCK a A5 i SSD a A4, potència "Plus" (+5V) i potència "Menys" (GND).
Connexió de la pantalla a Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Com connectar la pantalla OLED I2C a ARDUINO

Pas 4: escàner I2C


Cada dispositiu del bus I2C té una adreça hexadecimal, no es pot canviar, està cablejat, cada fabricant responsable ha d'indicar-ho en algun lloc de la caixa o de les instruccions. Hi ha mòduls amb interruptors i ponts que es poden utilitzar per canviar l'adreça, però... si els dispositius són barats fins al punt de la desgràcia, és possible que el fabricant no es molesti en tractar un detall tan petit, així que hauràs de determina-ho tu mateix.

En total, es poden utilitzar fins a 127 adreces al bus: 119 per a dispositius i 8 adreces de servei. La comunicació es realitza en aquestes adreces. N'hi ha un principal, també conegut com Mestre, i n'hi ha un esclau, també conegut com Esclau: els amos pregunten, els esclaus responen, tot és senzill.
Com que la nostra pantalla OLED utilitza el protocol de comunicació I2C i és possible que no s'especifiqui l'adreça, intentarem esbrinar aquesta adreça nosaltres mateixos.

Podeu fer-ho carregant un breu esbós a la vostra placa Arduino amb l'OLED connectat. PERÒ!
No us precipiteu a penjar l'esbós a Arduino de seguida! Primer descarreguem els "controladors", és a dir. connectem les biblioteques, i per fer-ho immediatament anirem al "Pas núm. 5", i després tornarem i continuarem.

Pas 4: Continuació:


Baixeu CODE Finder_I2C_Hex_Address.ino, pengeu-lo a Arduino.
Obriu "Port Monitor", configureu la velocitat a 9600 i si tot està connectat correctament, el programa mostrarà l'adreça del dispositiu, en el meu cas OLED amb l'adreça 0x3F.
Com connectar la pantalla OLED I2C a ARDUINO

Pas 5: Baixeu i connecteu biblioteques


Perquè tot funcioni correctament, i no cal reinventar la roda, cal connectar un parell de biblioteques a l'entorn ArduinoIDE, és a dir: ADAFRUIT GFX i ADAFRUIT SSD1306, són necessàries perquè Arduino es pugui comunicar de manera independent. amb la pantalla OLED.
Podeu incloure aquestes biblioteques seguint aquests passos.
  • 1. A ArduinoIDE, aneu al menú Sketch.
  • 2. Seleccioneu "Inclou biblioteques".
  • 3.Seleccioneu "Gestionar biblioteques".
  • 4. Cerqueu ADAFRUIT GFX i instal·leu-los.
  • 5. Cerqueu ADAFRUIT SSD1306 i instal·leu-los.

Amb les últimes versions de les biblioteques, la meva pantalla funcionava malament, per descomptat, això pot ser degut a la curvatura de les meves mans, però després d'instal·lar les primeres versions d'aquestes biblioteques, tot va començar a semblar suau i bonic. Per alguna raó, em vénen al cap les línies de Pushkin:
...i l'experiència, fill d'errors difícils,
i geni, amic de les paradoxes.

Una altra manera d'instal·lar biblioteques és trobar, descarregar i instal·lar aquestes biblioteques tu mateix.
Per exemple Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Aquestes són les mateixes biblioteques d'Adafruit, però les biblioteques similars es poden cercar fàcilment als motors de cerca, a petició d'OLED I2C. Molts entusiastes escriuen biblioteques "per ells mateixos" i després les publiquen al web. Depèn de quina biblioteca utilitzar.
Perquè la pantalla mostri lletres russes, també es necessiten biblioteques especials, però aquest és un tema separat per a un article separat.
Un cop instal·lades les biblioteques, podeu tornar al pas 4 i, finalment, esbrinar l'adreça hexadecimal de la vostra pantalla.

Pas 6: Mostra les proves


Per comprovar si tot funciona com s'esperava, executeu l'exemple de prova d'ArduinoIDE.
Per això:
Aneu a FITXER > EXEMPLES > SSD 1306 > Seleccioneu 128x64 i2c
Si obteniu "Error", proveu de seleccionar SSD 1306 > 128x32 i2c.
Si es torna a produir "Error", proveu de canviar l'adreça I2C a la línia 61 del codi de demostració i substituïu-la per l'adreça de la vostra pantalla que heu determinat al pas #4.
Si l'error es torna a produir, podeu provar d'editar el fitxer Adafruit_SSD1306.h, que es troba a la carpeta de biblioteques d'Arduino.
Com connectar la pantalla OLED I2C a ARDUINO

Obriu el fitxer Adafruit_SSD1306.h en un editor de text i cerqueu les línies:
//#definir SSD1306_128_64

#definir SSD1306_128_32

// #definir SSD1306_96_16 

Descomenteu la línia:
#definir SSD1306_128_64. 

Hauria de ser així:
#definir SSD1306_128_64

//#definir SSD1306_128_32

// #definir SSD1306_96_16

Si l'error es torna a produir, heu de comprovar les connexions correctes.
Un cop finalitzada la descàrrega, veureu una animació de prova a la pantalla, el que significa que heu configurat correctament la vostra pantalla OLED.

Quan hàgiu gaudit molt d'aquesta animació, podeu passar al pas següent.

Pas 7: Escriu el teu propi missatge


Per escriure el vostre propi missatge, primer creeu un nou esbós a l'entorn de programació ArduinoIDE.
A la capçalera incloem 4 biblioteques:
#inclou <SPI.h>

#inclou <Wire.h>

#include <Adafruit_GFX.h>

#inclou <Adafruit_SSD1306.h>

Després escrivim el protocol de reinici:
#definir OLED_RESET 4

Pantalla Adafruit_SSD1306 (OLED_RESET);

A VOID SETUP indiquem l'adreça hexadecimal de la nostra pantalla 0x3C, que hem après al "Pas núm. 4".
A continuació, inicialitzem la pantalla i l'esborrarem:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

A continuació, a VOID LOOP escrivim el codi principal, és a dir, el nostre missatge que volem mostrar a la pantalla.
Per fer-ho, descrivim la mida del text, el color del text, la posició del cursor i, finalment, mostrem el missatge mitjançant l'ordre println:
display.setTextSize(2);

display.setTextColor(BLANC);

display.setCursor(0,0);

display.println("Ben fet!");

display.display();

Al final no us oblideu d'escriure pantalla.visualitzacióperquè la imatge es mostri a la pantalla, en cas contrari obtindreu un buit.
Si ho heu fet tot correctament, apareixerà un missatge a les pantalles.
Com connectar la pantalla OLED I2C a ARDUINO

Aquí teniu el CODI Starting_with_Arduino_OLED.ino del nostre programa:
codi.zip [946 b] (descàrregues: 4908)
Torna
Comenta
  • corbatísomriurerientruborsomrientrelaxat relaxatsomriure
    cor_ullscor_petonantbesant_els_ulls_tancatsenrojecidaalleujatsatisfetsomriure
    fer l'ulletla llengua_tallada_fora_l'ullla llengua_tallada_els_ulls_tancatssomrientbesantllengua_talladadorment
    preocupatarrugant el frontangoixatboca_obertafent ganyotesconfóscallat
    inexpressiusense gràciasuor_somriuresuardecebut_alleujatcansatpassiu
    decebutconfóstemoróssuor fredaperseverarplorarplorar
    alegriasorprèscridarcara_cansadaenfadatràbiatriomf
    endormiscatñammàscaraulleres de solcara_vertidaimpsomrient_imp
    cara_neutrano_bocainnocent
4 menys un =
Comentaris (10)
  1. Tatoshka
    #1 Tatoshka Convidats 14 de novembre de 2018 21:18
    9
    Gràcies amic! Aquest és el meu primer esbós i introducció a Arduino que he penjat. A part de parpellejar Parpellejar))
  2. Alisher
    #2 Alisher Convidats 28 de juliol de 2019 19:35
    8
    On puc descarregar aquest codi Finder_I2C_Hex_Address.ino?
    1. Al
      #3 Al Convidats 14 d'agost de 2019 12:51
      11
      A sota de la imatge hi ha un enllaç "Aquí teniu el CODI Starting_with_Arduino_OLED.ino del nostre programa:"
  3. Àlex
    #4 Àlex Convidats 13 de novembre de 2019 20:01
    9
    No VOID SETUP ni VOID LOOP, sinó void setup(); i bucle buit(); El llenguatge C és un llenguatge sensible a majúscules i minúscules.
  4. Àlex convidat
    #5 Àlex convidat Convidats 14 de gener de 2020 03:00
    6
    >Pas 4: ... en el meu cas OLED amb adreça 0x3F.
    i llavors
    >A VOID SETUP... l'adreça de la nostra pantalla 0x3C, que vam aprendre al "Pas #4".
    Com és això?
  5. Àlex convidat
    #6 Àlex convidat Convidats 14 de gener de 2020 03:10
    9
    Gràcies! Ho vaig fer tot seguint les instruccions de l'Atmega328 Pro Mini i vaig comprovar el 0,96" comprat. Tots dos van funcionar. Arduino IDE 1.8.10
  6. Lector
    #7 Lector Convidats 3 de març de 2020 21:50
    4
    Gràcies, instructiu, tot funciona!
  7. Ildar Xafizov
    #8 Ildar Xafizov Convidats 19 d'abril de 2020 19:15
    5
    Tinc una pregunta. Hi ha 2 pantalles OLED idèntiques a la vostra a la foto (segona foto). No puc esbrinar quins ponts utilitzar per canviar l'adreça?
  8. Maxim convidat
    #9 Maxim convidat Convidats 31 d'octubre de 2020 18:53
    11
    Gràcies per l'article.Però tinc un problema: els píxels de les lletres brillen entre si i el tipus de lletra és més gran del que hauria de ser. Aparentment, l'Arduino no reconeix la resolució de la pantalla. Si algú té el mateix problema, aquí teniu com resoldre'l:
    #define SCREEN_WIDTH 128 // Amplada de la pantalla OLED, en píxels
    #define SCREEN_HEIGHT 64 // Alçada de la pantalla OLED, en píxels
    Pantalla Adafruit_SSD1306 (AMPLADA_PANTALLA, ALTURA_PANTALLA, &Wire, OLED_RESET);
  9. Dmitri
    #10 Dmitri Convidats 9 de maig de 2021 19:35
    7
    Gràcies! No tot va sortir de seguida. De fet, l'adreça de la pantalla era 128*64, no 0x3D, sinó 0x3C. I vaig reordenar les Biblioteques "des del mig" de les versions. No és l'últim, perquè... hi havia un missatge sobre el valor crític de la memòria (tinc un Arduino Uno).