Hur man ansluter OLED I2C-skärm till ARDUINO

Introduktion: Introduktion till OLED I2C-skärm 128*64 / 128*32.
Hur man ansluter OLED I2C-skärm till ARDUINO

Hallå! Eftersom jag är en amatörelektronikentusiast är jag säker på att allt vi gör - elektroniska leksaker - hemgjorda produkter eller stora projekt - är av nyfikenhet och lättja. Nyfikenhet strävar efter att förstå och förstå det stora, okända, för att ta reda på hur det fungerar där, vad det gör, hur det rör sig. Och latheten hittar på något att komma på, för att inte resa sig, inte närma sig, inte lyfta, inte bli smutsig eller något annat viktigt.

Eftersom det är bättre att se information än att ta reda på vad som är på väg att hända i vår enhet, eller redan har hänt eller händer, kommer vi definitivt att vilja ta emot denna mest användbara information från våra mikrokontroller, sensorer eller andra enheter. Och i alla fall vill jag få alla meddelanden, som frågor, varningar, påminnelser, uttryckssymboler, stjärnor, hjärtan och liknande.

För den som också har en liknande önskan kommer här en kort guide till att ansluta och testa små och billiga OLED-skärmar.
Därefter kommer vi att prata om en av OLED-skärmmodellerna som är allmänt tillgängliga för radioamatörer, styrd av SSD1306-chippet, med en skärmstorlek på 0,96 tum och en upplösning på 128 * 64 eller 128 * 32 pixlar. Dessa displayer är idealiska för små amatörradiodesigner och hemgjorda projekt.
Hur man ansluter OLED I2C-skärm till ARDUINO

Steg 1: Grundläggande koncept


Vi kommer att ansluta den till Arduino UNO / NANO, och vi kommer också att programmera den genom Arduino.
  • OLED är en organisk ljusemitterande diod, det vill säga en halvledarenhet gjord av organiska föreningar som börjar avge ljus när en elektrisk ström passerar genom den.
  • ARDUINO är en plattform för utbildning och byggande av automations- och robotsystem.
  • ArduinoIDE - utvecklingsmiljö. Detta är ett gratis Arduino-programmeringsprogram.
  • I2C – Inter-Integrated Circuits, inter-chip kommunikationslinje.
  • Sketch, aka code, aka program - Arduino terminologi.

Följ instruktionerna för att förstå hur du korrekt ansluter och konfigurerar OLED-skärmen till Arduino och hur du visar ett anpassat meddelande på dess skärm.
Vi gör allt steg för steg.

Steg 2: Tillbehör


Vi behöver bara fyra saker:
  • 1. Själva OLED-skärmen är 0,96” (du kan köpa den på Aliexpress eller Ebay, den är lång, men billig!).
  • 2. Arduino UNO / Nano (samma plats som displayen).
  • 3. Anslutningsledningar (ibid.).
  • 4. Dator eller bärbar dator med ArduinoIDE installerat.

Hur man ansluter OLED I2C-skärm till ARDUINO

Generellt sett är det en väldigt cool grej att köpa delar till olika projekt på Aliexpress och Ebay, medan du håller på med ett projekt är delar till ett annat redan på väg. Det viktigaste är att inte glömma att beställa.

Steg 3: Ansluta skärmen


Skärmen styrs av ett SSD1306-chip, som stöder fem kommunikationsprotokoll, varav ett är I2C. Data som använder det här protokollet överförs endast över två ledningar, och ju färre ledningar i höljet desto bättre, så det passar oss ganska bra.Men! Det finns moduler med SPI-protokollet och även med protokollbyte, så var försiktig när du köper den här modulen.
Hur man ansluter OLED I2C-skärm till ARDUINO

Använda stift:
OLED-display - SCL/SCK (klocka) och SDA (data), "Plus" effekt (VCC) och "Minus" effekt (GND).
Hur man ansluter OLED I2C-skärm till ARDUINO

Använda stift:
Arduino UNO - SCL/SCK på A5 och SSD på A4, "Plus"-ström (+5V) och "Minus"-ström (GND).
Ansluta skärmen till Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Hur man ansluter OLED I2C-skärm till ARDUINO

Steg 4: I2C-skanner


Varje enhet på I2C-bussen har en hexadecimal adress, den kan inte ändras, den är fastansluten, varje ansvarig tillverkare måste ange det någonstans på fodralet eller i instruktionerna. Det finns moduler med omkopplare och byglar som kan användas för att ändra adressen, men... om enheterna är löjligt billiga, så kanske tillverkaren inte bryr sig om att ta itu med en sådan detalj, så du får bestämma det själv.

Totalt kan upp till 127 adresser användas på bussen - 119 för enheter och 8 serviceadresser. Kommunikation sker på dessa adresser. Det finns en huvud, aka Master, och det finns en slav, aka Slave - Mästarna frågar, slavarna svarar, allt är enkelt.
Eftersom vår OLED-skärm använder I2C-kommunikationsprotokollet, och adressen kanske inte anges, kommer vi att försöka ta reda på just denna adress själva.

Du kan göra detta genom att ladda upp en kort skiss till ditt Arduino-kort med OLED ansluten. MEN!
Skynda dig inte att ladda upp skissen till Arduino direkt! Låt oss först ladda ner "drivrutinerna", dvs. låt oss ansluta biblioteken, och för att göra detta går vi omedelbart till "Steg nr 5", och kommer sedan tillbaka och fortsätter.

Steg 4: Fortsättning:


Ladda ner CODE Finder_I2C_Hex_Address.ino, ladda upp till Arduino.
Öppna “Port Monitor”, ställ in hastigheten till 9600 och om allt är korrekt anslutet kommer programmet att visa enhetens adress, i mitt fall OLED med adress 0x3F.
Hur man ansluter OLED I2C-skärm till ARDUINO

Steg 5: Ladda ner och anslut bibliotek


För att allt ska fungera korrekt, och du inte behöver uppfinna hjulet på nytt, behöver du koppla ett par bibliotek till ArduinoIDE-miljön, nämligen: ADAFRUIT GFX och ADAFRUIT SSD1306, de är nödvändiga för att Arduino ska kunna kommunicera självständigt med OLED-skärmen.
Du kan inkludera dessa bibliotek genom att följa dessa steg.
  • 1. I ArduinoIDE, gå till Sketch-menyn.
  • 2. Välj "Inkludera bibliotek".
  • 3. Välj "Hantera bibliotek".
  • 4. Hitta ADAFRUIT GFX och installera dem.
  • 5. Hitta ADAFRUIT SSD1306 och installera dem.

Med de senaste versionerna av biblioteken fungerade min skärm snett, detta kan förstås bero på mina händers krökning, men efter att jag installerat de allra första versionerna av dessa bibliotek började allt se jämnt och vackert ut. Av någon anledning kommer Pushkins rader att tänka på:
...och erfarenhet, son till svåra misstag,
och geni, vän av paradoxer.

Ett annat sätt att installera bibliotek är att hitta, ladda ner och installera dessa bibliotek själv.
För Github exempel:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Det är samma Adafruit-bibliotek, men liknande bibliotek kan enkelt sökas i sökmotorer, på begäran av OLED I2C. Många entusiaster skriver bibliotek "för sig själva" och lägger sedan upp dem på webben. Vilket bibliotek du ska använda är upp till dig.
För att displayen ska visa ryska bokstäver behövs även speciella bibliotek, men detta är ett separat ämne för en separat artikel.
Efter att biblioteken har installerats kan du gå tillbaka till steg 4 och slutligen ta reda på den hexadecimala adressen till din bildskärm.

Steg 6: Displaytestning


För att kontrollera om allt fungerar som förväntat, kör testexemplet från ArduinoIDE.
För detta:
Gå till FIL > EXEMPEL > SSD 1306 > Välj 128x64 i2c
Om du får "Error", försök att välja SSD 1306 > 128x32 i2c.
Om "Fel" inträffar igen, försök att ändra I2C-adressen på rad 61 i demokoden och ersätt den med adressen till din skärm som du bestämde i steg #4.
Om felet uppstår igen kan du försöka redigera filen Adafruit_SSD1306.h, den finns i mappen Arduino bibliotek.
Hur man ansluter OLED I2C-skärm till ARDUINO

Öppna filen Adafruit_SSD1306.h i en textredigerare och hitta raderna:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Avkommentera raden:
#define SSD1306_128_64. 

Det ska se ut så här:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Om felet uppstår igen måste du kontrollera de korrekta anslutningarna.
När nedladdningen är klar kommer du att se en testanimation på skärmen, vilket betyder att du har lyckats konfigurera din OLED-skärm.

När du har njutit ordentligt av den här animationen kan du gå vidare till nästa steg.

Steg 7: Skriv ditt eget meddelande


För att skriva ditt eget meddelande, skapa först en ny skiss i ArduinoIDEs programmeringsmiljö.
I rubriken inkluderar vi 4 bibliotek:
#inkludera <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Sedan skriver vi återställningsprotokollet:
#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

I VOID SETUP anger vi den hexadecimala adressen för vår display 0x3C, vilket vi lärde oss i "Steg nr 4".
Sedan initierar vi skärmen och rensar den:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

Därefter skriver vi i VOID LOOP huvudkoden, det vill säga vårt meddelande som vi vill visa på displayen.
För att göra detta beskriver vi textstorlek, textfärg, markörposition och slutligen visar vi meddelandet med kommandot println:
display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(0,0);

display.println("Bra jobbat!");

display.display();

I slutet glöm inte att skriva display.displayså att bilden visas på skärmen, annars får du ett tomrum.
Om du gjorde allt korrekt kommer ett meddelande att visas på displayerna.
Hur man ansluter OLED I2C-skärm till ARDUINO

Här är Starting_with_Arduino_OLED.ino-KODEN för vårt program:
code.zip [946 b] (nedladdningar: 4908)
Kommentar
  • flugaleendeskrattanderodnasmileyavslappnad avslappnadflin
    hjärtögonkyssande hjärtakyssa stängda ögonspoladelättadnöjdflin
    blinkningstuck_out_tungue_winking_eyestuck_out_tongue_closed_eyesflinandekyssarstuck_out_tonguesovande
    oroligrynkar pannanplågadöppen mungrimaserandeförvirradtystnad
    uttryckslösinte roadsvett_lesvettasbesviken_lättadtröttapassiv
    besvikenförvirradräddkallsvetthålla utgråtasnyfta
    glädjeförvånadskrikatrött_ansikteargrasatriumf
    sömnigmumsmasksolglasögonyr i ansiktetimpleende_imp
    neutralt_ansikteno_mouthoskyldig
4 minus ett =
Kommentarer (10)
  1. Tatoshka
    #1 Tatoshka Gäster 14 november 2018 21:18
    9
    Tack min vän! Detta är min första uppladdade skiss och introduktion till Arduino. Förutom att blinka Blink))
  2. Alisher
    #2 Alisher Gäster 28 juli 2019 19:35
    8
    Var kan jag ladda ner denna Finder_I2C_Hex_Address.ino-kod?
    1. Al
      #3 Al Gäster 14 augusti 2019 12:51
      11
      under bilden finns en länk "Här är Starting_with_Arduino_OLED.ino-KODEN för vårt program:"
  3. Alex
    #4 Alex Gäster 13 november 2019 20:01
    9
    Inte VOID SETUP eller VOID LOOP, men void setup(); och void loop(); C-språket är ett skiftlägeskänsligt språk.
  4. Gäst Alex
    #5 Gäst Alex Gäster 14 januari 2020 kl. 03.00
    6
    >Steg 4: ... i mitt fall OLED med adress 0x3F.
    och då
    >I VOID SETUP... adressen till vår display 0x3C, som vi lärde oss i "Steg #4".
    Hur kommer det sig?
  5. Gäst Alex
    #6 Gäst Alex Gäster 14 januari 2020 03:10
    9
    Tack! Jag gjorde allt enligt instruktionerna på Atmega328 Pro Mini och kollade den köpta 0.96". Båda visade sig fungera. Arduino IDE 1.8.10
  6. Läsare
    #7 Läsare Gäster 3 mars 2020 21:50
    4
    Tack, lärorikt, allt fungerar!
  7. Ildar Xafizov
    #8 Ildar Xafizov Gäster 19 april 2020 19:15
    5
    Jag har en fråga. Det finns 2 OLED-skärmar som är identiska med din på bilden (andra bilden). Jag kan inte ta reda på vilka byglar jag ska använda för att ändra adressen?
  8. Gäst Maxim
    #9 Gäst Maxim Gäster 31 oktober 2020 18:53
    11
    Tack för artikeln.Men jag har ett problem: pixlarna i bokstäverna lyser varannan och teckensnittet är större än det borde vara. Arduino känner tydligen inte igen skärmupplösningen. Om någon har samma problem, så här löser du det:
    #define SCREEN_WIDTH 128 // OLED-skärmbredd, i pixlar
    #define SCREEN_HEIGHT 64 // OLED-skärmhöjd, i pixlar
    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitriy
    #10 Dmitriy Gäster 9 maj 2021 19:35
    7
    Tack! Allt löste sig inte direkt. Faktum är att adressen på skärmen var 128*64, inte 0x3D, utan 0x3C. Och jag ordnade om biblioteken "från mitten" av versionerna. Inte den senaste, för... det fanns ett meddelande om det kritiska värdet av minne (jag har en Arduino Uno).