Gjør det selv
Life hacks, mesterklasser, nyttige tips, oppskrifter.
hjem » Elektronikk » DIY elektronikk » Hvordan koble en OLED I2C-skjerm til ARDUINO
Introduksjon: Introduksjon til OLED I2C-skjerm 128*64 / 128*32.
Hvordan koble OLED I2C-skjerm til ARDUINO

Hallo! Som en amatørelektronikk-entusiast er jeg sikker på at alt vi gjør - elektroniske leker - hjemmelagde produkter eller store prosjekter - er av nysgjerrighet og latskap. Nysgjerrighet streber etter å forstå og forstå det store, ukjente, for å finne ut hvordan det fungerer der, hva det gjør, hvordan det beveger seg. Og latskap finner på noe å finne på, for ikke å reise seg, ikke nærme seg, ikke løfte, ikke bli skitten eller noe annet viktig.

Siden det er bedre å se informasjon enn å finne ut hva som er i ferd med å skje i enheten vår, eller allerede har skjedd, eller skjer, vil vi definitivt ønske å motta denne mest nyttige informasjonen fra våre mikrokontrollere, sensorer eller andre enheter. Og i alle fall vil jeg motta meldinger, for eksempel spørsmål, advarsler, påminnelser, uttrykksikoner, stjerner, hjerter og lignende.

For de som også har et lignende ønske, er her en kort guide til tilkobling og testing av små og rimelige OLED-skjermer.
Deretter vil vi snakke om en av OLED-skjermmodellene som er allment tilgjengelige for radioamatører, kontrollert av SSD1306-brikken, med en skjermstørrelse på 0,96 tommer og en oppløsning på 128 * 64 eller 128 * 32 piksler. Disse skjermene er ideelle for små amatørradiodesigner og hjemmelagde prosjekter.
Hvordan koble OLED I2C-skjerm til ARDUINO

Trinn 1: Grunnleggende konsepter


Vi vil koble den til Arduino UNO / NANO, og vi vil også programmere den gjennom Arduino.
  • OLED er en organisk lysemitterende diode, det vil si en halvlederenhet laget av organiske forbindelser som begynner å avgi lys når en elektrisk strøm passerer gjennom den.
  • ARDUINO er ​​en plattform for opplæring og bygging av automasjons- og robotsystemer.
  • ArduinoIDE - utviklingsmiljø. Dette er et gratis Arduino-programmeringsprogram.
  • I2C – Inter-Integrated Circuits, inter-chip kommunikasjonslinje.
  • Sketch, aka kode, aka program - Arduino terminologi.

Følg instruksjonene for å forstå hvordan du kobler og konfigurerer OLED-skjermen riktig til Arduino og hvordan du viser en tilpasset melding på skjermen.
Vi gjør alt steg for steg.

Trinn 2: Tilbehør


Vi trenger bare fire ting:
  • 1. Selve OLED-skjermen er 0,96” (du kan kjøpe den på Aliexpress eller Ebay, den er lang, men billig!).
  • 2. Arduino UNO / Nano (samme sted som skjermen).
  • 3. Koblingsledninger (ibid.).
  • 4. Datamaskin eller bærbar PC med ArduinoIDE installert.

Hvordan koble OLED I2C-skjerm til ARDUINO

Generelt er det en veldig kul ting å kjøpe deler til ulike prosjekter på Aliexpress og Ebay, mens du jobber med ett prosjekt, er deler til et annet allerede på vei. Det viktigste er ikke å glemme å bestille.

Trinn 3: Koble til skjermen


Skjermen styres av en SSD1306-brikke, som støtter fem kommunikasjonsprotokoller, hvorav en er I2C. Data som bruker denne protokollen overføres kun over to ledninger, og jo færre ledninger i etuiet, jo bedre, så det passer oss ganske bra.Men! Det finnes moduler med SPI-protokollen og til og med med protokollbytte, så vær forsiktig når du kjøper denne modulen.
Hvordan koble OLED I2C-skjerm til ARDUINO

Pinner brukt:
OLED-skjerm - SCL/SCK (klokke) og SDA (data), "Pluss" strøm (VCC) og "Minus" strøm (GND).
Hvordan koble OLED I2C-skjerm til ARDUINO

Pinner brukt:
Arduino UNO - SCL/SCK på A5 og SSD på A4, "Pluss" strøm (+5V) og "Minus" strøm (GND).
Koble skjermen til Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Hvordan koble OLED I2C-skjerm til ARDUINO

Trinn 4: I2C-skanner


Hver enhet på I2C-bussen har en heksadesimal adresse, den kan ikke endres, den er kablet, hver ansvarlig produsent må angi det et sted på dekselet eller i instruksjonene. Det finnes moduler med brytere og jumpere som kan brukes til å endre adressen, men... hvis enhetene er billige til det skammelig, kan det hende at produsenten ikke bryr seg om å forholde seg til en så liten detalj, så du må bestemme det selv.

Totalt kan det brukes opptil 127 adresser på bussen - 119 for enheter og 8 tjenesteadresser. Kommunikasjon foregår på disse adressene. Det er en hoved, aka Master, og det er en slave, aka Slave - Mesterne spør, slavene svarer, alt er enkelt.
Siden vår OLED-skjerm bruker I2C-kommunikasjonsprotokollen, og adressen kanskje ikke er spesifisert, vil vi prøve å finne ut akkurat denne adressen selv.

Du kan gjøre dette ved å laste opp en kort skisse til Arduino-kortet ditt med OLED-en tilkoblet. MEN!
Ikke skynd deg å laste opp skissen til Arduino med en gang! La oss først laste ned "driverne", dvs. la oss koble til bibliotekene, og for å gjøre dette går vi umiddelbart til "Trinn nr. 5", og kommer deretter tilbake og fortsetter.

Trinn 4: Fortsettelse:


Last ned CODE Finder_I2C_Hex_Address.ino, last opp til Arduino.
Åpne "Port Monitor", sett hastigheten til 9600 og hvis alt er riktig tilkoblet, vil programmet vise enhetsadressen, i mitt tilfelle OLED med adresse 0x3F.
Hvordan koble OLED I2C-skjerm til ARDUINO

Trinn 5: Last ned og koble til biblioteker


For at alt skal fungere riktig, og du ikke trenger å finne opp hjulet på nytt, må du koble et par biblioteker til ArduinoIDE-miljøet, nemlig: ADAFRUIT GFX og ADAFRUIT SSD1306, de er nødvendige for at Arduino skal kunne kommunisere uavhengig med OLED-skjermen.
Du kan inkludere disse bibliotekene ved å følge disse trinnene.
  • 1. I ArduinoIDE, gå til Sketch-menyen.
  • 2. Velg "Inkluder biblioteker".
  • 3. Velg "Administrer biblioteker".
  • 4. Finn ADAFRUIT GFX og installer dem.
  • 5. Finn ADAFRUIT SSD1306 og installer dem.

Med de nyeste versjonene av bibliotekene fungerte skjermen min skjevt, dette kan selvfølgelig skyldes krumningen av hendene mine, men etter at jeg installerte de aller første versjonene av disse bibliotekene begynte alt å fremstå jevnt og vakkert. Av en eller annen grunn kommer Pushkins linjer til tankene:
...og erfaring, sønn av vanskelige feil,
og geni, venn av paradokser.

En annen måte å installere biblioteker på er å finne, laste ned og installere disse bibliotekene selv.
For Github eksempel:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Dette er de samme Adafruit-bibliotekene, men lignende biblioteker kan enkelt søkes i søkemotorer, på forespørsel fra OLED I2C. Mange entusiaster skriver bibliotek "for seg selv" og legger dem deretter ut på nettet. Hvilket bibliotek du skal bruke er opp til deg.
For at displayet skal vise russiske bokstaver, trengs det også spesielle biblioteker, men dette er et eget emne for en egen artikkel.
Etter at bibliotekene er installert, kan du gå tilbake til trinn 4 og til slutt finne ut den heksadesimale adressen til skjermen.

Trinn 6: Skjermtesting


For å sjekke om alt fungerer som forventet, kjør testeksemplet fra ArduinoIDE.
For dette:
Gå til FIL > EKSEMPLER > SSD 1306 > Velg 128x64 i2c
Hvis du får "Feil", prøv å velge SSD 1306 > 128x32 i2c.
Hvis "Feil" oppstår igjen, prøv å endre I2C-adressen på linje 61 i demokoden og erstatt den med adressen til skjermen som du bestemte i trinn #4.
Hvis feilen oppstår igjen, kan du prøve å redigere Adafruit_SSD1306.h-filen, den ligger i Arduino-biblioteksmappen.
Hvordan koble OLED I2C-skjerm til ARDUINO

Åpne Adafruit_SSD1306.h-filen i et tekstredigeringsprogram og finn linjene:
//#define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16 

Fjern kommentarene til linjen:
#define SSD1306_128_64. 

Det skal se slik ut:
#define SSD1306_128_64
//#define SSD1306_128_32
// #define SSD1306_96_16

Hvis feilen oppstår igjen, må du kontrollere de riktige tilkoblingene.
Når nedlastingen er fullført, vil du se en testanimasjon på skjermen, som betyr at du har konfigurert OLED-skjermen.

Når du har likt denne animasjonen, kan du gå videre til neste trinn.

Trinn 7: Skriv din egen melding


For å skrive din egen melding, lag først en ny skisse i ArduinoIDE-programmeringsmiljøet.
I overskriften inkluderer vi 4 biblioteker:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Så skriver vi tilbakestillingsprotokollen:
#define OLED_RESET 4
Adafruit_SSD1306-skjerm(OLED_RESET);

I VOID SETUP indikerer vi den heksadesimale adressen til skjermen vår 0x3C, som vi lærte i "Trinn nr. 4".
Deretter initialiserer vi skjermen og sletter den:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();

Deretter skriver vi i VOID LOOP hovedkoden, det vil si meldingen vår som vi ønsker å vise på skjermen.
For å gjøre dette beskriver vi tekststørrelsen, tekstfargen, markørposisjonen, og viser til slutt meldingen ved å bruke println-kommandoen:
display.setTextSize(2);
display.setTextColor(HVIT);
display.setCursor(0,0);
display.println("Godt gjort!");
display.display();

Ikke glem å skrive på slutten display.displayslik at bildet vises på skjermen, ellers får du et tomrom.
Hvis du gjorde alt riktig, vil en melding vises på skjermene.
Hvordan koble OLED I2C-skjerm til ARDUINO

Her er Starting_with_Arduino_OLED.ino-KODEN for programmet vårt:
kode.zip [946 b] (nedlastinger: 4908)
Kommentar
  • sløyfesmillerrødmesmileyavslappet avslappettåpelig flir
    hjerteøynekyssende hjertekysser_lukkede_øynespyltlettetfornøydglise
    blunkestakk_ut_tunge_blinkende_øyestakk_ut_tunge_lukkede_øynegliserkyssingstakk_ut_tungesover
    bekymretrynker pannenfortviletåpne munnengrimasererforvirretstille
    uttrykksløstuforskammetsvette_smilsvetteskuffet_lettslitenpassiv
    skuffetforvirretengsteligkaldsvetteholde utgråtehulke
    gledeoverraskethylesliten_ansiktsintraseritriumf
    søvnignammaskesolbrillersvimmel_ansiktimpsmiling_imp
    nøytralt_ansiktno_mouthuskyldig
4 minus en =
Kommentarer (10)
  1. Tatoshka
    #1 Tatoshka Gjester 14. november 2018 21:18
    9
    Takk venn! Dette er min første opplastede skisse og introduksjon til Arduino. Bortsett fra blinkende Blink))
  2. Alisher
    #2 Alisher Gjester 28. juli 2019 19:35
    8
    Hvor kan jeg laste ned denne Finder_I2C_Hex_Address.ino-koden?
    1. Al
      #3 Al Gjester 14. august 2019 12:51
      11
      under bildet er det en lenke "Her er Starting_with_Arduino_OLED.ino-KODEN for programmet vårt:"
  3. Alex
    #4 Alex Gjester 13. november 2019 20:01
    9
    Ikke VOID SETUP eller VOID LOOP, men void setup(); og void loop(); C-språket er et språk som skiller mellom store og små bokstaver.
  4. Gjest Alex
    #5 Gjest Alex Gjester 14. januar 2020 03:00
    6
    >Trinn 4: ... i mitt tilfelle OLED med adresse 0x3F.
    og så
    >I VOID SETUP... adressen til skjermen vår 0x3C, som vi lærte i "Trinn #4".
    Hvordan er det?
  5. Gjest Alex
    #6 Gjest Alex Gjester 14. januar 2020 03:10
    9
    Takk skal du ha! Jeg gjorde alt i henhold til instruksjonene på Atmega328 Pro Mini og sjekket den kjøpte 0.96". Begge viste seg å fungere. Arduino IDE 1.8.10
  6. Leser
    #7 Leser Gjester 3. mars 2020 21:50
    4
    Takk, lærerikt, alt fungerer!
  7. Ildar Xafizov
    #8 Ildar Xafizov Gjester 19. april 2020 19:15
    5
    Jeg har et spørsmål. Det er 2 OLED-skjermer som er identiske med din på bildet (andre bilde). Jeg kan ikke finne ut hvilke jumpere jeg skal bruke for å endre adressen?
  8. Gjesten Maxim
    #9 Gjesten Maxim Gjester 31. oktober 2020 18:53
    11
    Takk for artikkelen.Men jeg har et problem: pikslene i bokstavene lyser hver andre og skriften er større enn den burde være. Tilsynelatende gjenkjenner ikke Arduino skjermoppløsningen. Hvis noen har det samme problemet, kan du løse det slik:
    #define SCREEN_WIDTH 128 // OLED-skjermbredde, i piksler
    #define SCREEN_HEIGHT 64 // OLED-skjermhøyde, i piksler
    Adafruit_SSD1306-skjerm(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitriy
    #10 Dmitriy Gjester 9. mai 2021 19:35
    7
    Takk skal du ha! Ikke alt ordnet seg med en gang. Faktisk var adressen på skjermen 128*64, ikke 0x3D, men 0x3C. Og jeg omorganiserte bibliotekene "fra midten" av versjonene. Ikke den siste, fordi... det var en melding om den kritiske verdien av minne (jeg har en Arduino Uno).

Syltet rødløk (til kanapeer, salater, burgere og pilaf)

Tegne en havsolnedgang og dekorere en gammel dør | Gjør det selv

DIY bok med ønsker for en gutt | Gjør det selv

Hvordan demontere og smøre en borchuck

«Gjør det selv - med egne hender» - et nettsted med interessante hjemmelagde produkter laget av skrapmaterialer og gjenstander hjemme. Trinn-for-trinn mesterklasser med bilder og beskrivelser, teknologier, life hacks - alt en ekte mester eller bare en håndverker trenger for håndarbeid. Håndverk av enhver kompleksitet, et stort utvalg av retninger og ideer for kreativitet.

Vi anbefaler å lese

Vaskemaskin feilkoder