Sådan tilsluttes OLED I2C-skærm til ARDUINO

Introduktion: Introduktion til OLED I2C-skærm 128*64 / 128*32.
Sådan tilsluttes OLED I2C-skærm til ARDUINO

Hej! Som en amatørelektronikentusiast er jeg sikker på, at alt, hvad vi laver - elektronisk legetøj - hjemmelavede produkter eller store projekter - alt sammen er af nysgerrighed og dovenskab. Nysgerrighed stræber efter at forstå og forstå det store, ukendte, for at finde ud af, hvordan det fungerer der, hvad det gør, hvordan det bevæger sig. Og dovenskab finder på noget at finde på, for ikke at rejse sig, ikke nærme sig, ikke løfte, ikke blive snavset eller andet vigtigt.

Da det er bedre at se information end at finde ud af, hvad der er ved at ske i vores enhed, eller allerede er sket eller sker, vil vi helt sikkert gerne modtage denne mest nyttige information fra vores mikrocontrollere, sensorer eller andre enheder. Og under alle omstændigheder vil jeg gerne modtage alle beskeder, såsom spørgsmål, advarsler, påmindelser, humørikoner, stjerner, hjerter og lignende.

For dem, der også har et lignende ønske, er her en kort guide til tilslutning og test af små og billige OLED-skærme.
Dernæst vil vi tale om en af ​​de OLED-skærmmodeller, der er bredt tilgængelige for radioamatører, styret af SSD1306-chippen, med en skærmstørrelse på 0,96 tommer og en opløsning på 128 * 64 eller 128 * 32 pixels. Disse skærme er ideelle til små amatørradiodesigns og hjemmelavede projekter.
Sådan tilsluttes OLED I2C-skærm til ARDUINO

Trin 1: Grundlæggende koncepter


Vi vil forbinde det til Arduino UNO / NANO, og vi vil også programmere det gennem Arduino.
  • OLED er en organisk lysemitterende diode, dvs. en halvlederenhed lavet af organiske forbindelser, der begynder at udsende lys, når en elektrisk strøm passerer gennem den.
  • ARDUINO er ​​en platform til træning og opbygning af automations- og robotsystemer.
  • ArduinoIDE - udviklingsmiljø. Dette er et gratis Arduino programmeringsprogram.
  • I2C – Inter-Integrated Circuits, inter-chip kommunikationslinje.
  • Skitse, aka kode, aka program - Arduino terminologi.

Følg instruktionerne for at forstå, hvordan du korrekt tilslutter og konfigurerer OLED-skærmen til Arduino, og hvordan du viser en brugerdefineret meddelelse på skærmen.
Vi gør alt trin for trin.

Trin 2: Tilbehør


Vi mangler kun fire ting:
  • 1. Selve OLED-skærmen er 0,96” (du kan købe den på Aliexpress eller Ebay, den er lang, men billig!).
  • 2. Arduino UNO / Nano (samme sted som displayet).
  • 3. Forbindelsesledninger (ibid.).
  • 4. Computer eller bærbar med ArduinoIDE installeret.

Sådan tilsluttes OLED I2C-skærm til ARDUINO

Generelt er det en meget fed ting at købe dele til forskellige projekter på Aliexpress og Ebay, mens du arbejder på et projekt, er dele til et andet allerede på vej. Det vigtigste er ikke at glemme at afgive en ordre.

Trin 3: Tilslutning af skærmen


Skærmen styres af en SSD1306-chip, som understøtter fem kommunikationsprotokoller, hvoraf den ene er I2C. Data ved hjælp af denne protokol overføres kun over to ledninger, og jo færre ledninger i kabinettet, jo bedre, så det passer os ret godt.Men! Der er moduler med SPI-protokollen og endda med protokolskift, så vær forsigtig, når du køber dette modul.
Sådan tilsluttes OLED I2C-skærm til ARDUINO

Pins brugt:
OLED-skærm - SCL/SCK (ur) og SDA (data), "Plus" strøm (VCC) og "Minus" strøm (GND).
Sådan tilsluttes OLED I2C-skærm til ARDUINO

Pins brugt:
Arduino UNO - SCL/SCK på A5 og SSD på A4, "Plus" strøm (+5V) og "Minus" strøm (GND).
Tilslutning af skærmen til Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Sådan tilsluttes OLED I2C-skærm til ARDUINO

Trin 4: I2C Scanner


Hver enhed på I2C-bussen har en hexadecimal adresse, den kan ikke ændres, den er fast forbundet, enhver ansvarlig producent skal angive det et sted på kabinettet eller i instruktionerne. Der findes moduler med switche og jumpere, som kan bruges til at ændre adressen, men... hvis enhederne er latterligt billige, så gider producenten måske ikke forholde sig til sådan en detalje, så det må du selv bestemme.

I alt kan der bruges op til 127 adresser på bussen - 119 til enheder og 8 serviceadresser. Kommunikation foregår på disse adresser. Der er en hoved, aka Master, og der er en slave, aka Slave - Mestrene spørger, slaverne svarer, alt er enkelt.
Da vores OLED-skærm bruger I2C kommunikationsprotokollen, og adressen muligvis ikke er angivet, vil vi selv forsøge at finde ud af netop denne adresse.

Du kan gøre dette ved at uploade en kort skitse til dit Arduino board med OLED tilsluttet. MEN!
Skynd dig ikke at uploade skitsen til Arduino med det samme! Lad os først downloade “driverne”, dvs. lad os forbinde bibliotekerne, og for at gøre dette går vi straks til "Trin nr. 5", og kommer derefter tilbage og fortsætter.

Trin 4: Fortsat:


Download CODE Finder_I2C_Hex_Address.ino, upload til Arduino.
Åbn “Port Monitor”, indstil hastigheden til 9600 og hvis alt er tilsluttet korrekt, vil programmet vise enhedsadressen, i mit tilfælde OLED med adresse 0x3F.
Sådan tilsluttes OLED I2C-skærm til ARDUINO

Trin 5: Download og tilslut biblioteker


For at alt skal fungere korrekt, og du ikke skal genopfinde hjulet, skal du tilslutte et par biblioteker til ArduinoIDE-miljøet, nemlig: ADAFRUIT GFX og ADAFRUIT SSD1306, de er nødvendige for, at Arduino kan kommunikere selvstændigt med OLED-skærmen.
Du kan inkludere disse biblioteker ved at følge disse trin.
  • 1. Gå til Sketch-menuen i ArduinoIDE.
  • 2. Vælg "Inkluder biblioteker".
  • 3. Vælg "Administrer biblioteker".
  • 4. Find ADAFRUIT GFX og installer dem.
  • 5. Find ADAFRUIT SSD1306 og installer dem.

Med de nyeste versioner af bibliotekerne fungerede mit display skævt, det kan selvfølgelig skyldes krumningen af ​​mine hænder, men efter jeg havde installeret de allerførste versioner af disse biblioteker, begyndte alt at fremstå glat og smukt. Af en eller anden grund kommer Pushkins linjer til at tænke på:
...og erfaring, søn af svære fejltagelser,
og geni, ven af ​​paradokser.

En anden måde at installere biblioteker på er at finde, downloade og installere disse biblioteker selv.
For Github eksempel:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Det er de samme Adafruit-biblioteker, men lignende biblioteker kan nemt søges i søgemaskiner efter anmodning fra OLED I2C. Mange entusiaster skriver biblioteker "til sig selv" og lægger dem derefter på nettet. Hvilket bibliotek du skal bruge er op til dig.
For at displayet skal vise russiske bogstaver, er der også brug for specielle biblioteker, men dette er et separat emne for en separat artikel.
Efter at bibliotekerne er installeret, kan du vende tilbage til trin 4 og endelig finde ud af den hexadecimale adresse på din skærm.

Trin 6: Displaytest


For at kontrollere om alt fungerer som forventet, kør testeksemplet fra ArduinoIDE.
For det:
Gå til FIL > EKSEMPLER > SSD 1306 > Vælg 128x64 i2c
Hvis du får "Fejl", prøv at vælge SSD 1306 > 128x32 i2c.
Hvis "Fejl" opstår igen, skal du prøve at ændre I2C-adressen på linje 61 i demokoden og erstatte den med adressen på dit display, som du bestemte i trin #4.
Hvis fejlen opstår igen, kan du prøve at redigere filen Adafruit_SSD1306.h, den er placeret i mappen Arduino biblioteker.
Sådan tilsluttes OLED I2C-skærm til ARDUINO

Åbn filen Adafruit_SSD1306.h i en teksteditor og find linjerne:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Fjern kommentarer til linjen:
#define SSD1306_128_64. 

Det skal se sådan ud:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Hvis fejlen opstår igen, skal du kontrollere de korrekte forbindelser.
Når overførslen er fuldført, vil du se en testanimation på skærmen, hvilket betyder, at du har opsat din OLED-skærm.

Når du har nydt godt af denne animation, kan du gå videre til næste trin.

Trin 7: Skriv din egen besked


For at skrive din egen besked skal du først oprette en ny skitse 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 nulstillingsprotokollen:
#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

I VOID SETUP angiver vi den hexadecimale adresse på vores skærm 0x3C, som vi lærte i "Trin nr. 4".
Derefter initialiserer vi displayet og rydder det:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

Dernæst skriver vi i VOID LOOP hovedkoden, det vil sige vores besked, som vi ønsker at vise på displayet.
For at gøre dette beskriver vi tekststørrelsen, tekstfarven, markørens position, og til sidst viser vi meddelelsen ved hjælp af println-kommandoen:
display.setTextSize(2);

display.setTextColor(HVID);

display.setCursor(0,0);

display.println("Godt klaret!");

display.display();

Glem ikke at skrive til sidst display.displayså billedet vises på skærmen, ellers får du et tomrum.
Hvis du har gjort alt korrekt, vises en meddelelse på displayet.
Sådan tilsluttes OLED I2C-skærm til ARDUINO

Her er Starting_with_Arduino_OLED.ino KODE for vores program:
kode.zip [946 b] (downloads: 4908)
Kommentar
  • butterflysmilgrinerrødmesmileyafslappet afslappetsmile
    hjerteøjneKyssende hjertekysse_lukkede_øjneskylletlettettilfredsgrin
    blinkestak_ud_tunge_blinkende_øjestak_ud_tunge_lukkede_øjnegrinendekyssestak_ud_tungesover
    bekymretrynker pandenfortvivletåben mundgrimasserforvirrettysset
    udtryksløsuforskammetsved_smilsvedskuffet_lettelsetrættepassiv
    skuffetforvirretbangekoldsvedholde udskrighulke
    glædeforbløffetskrigetræt_ansigtvredraseritriumf
    søvnignammaskesolbrillersvimmel_ansigtimpsmilende_imp
    neutralt_ansigtingen_munduskyldig
4 minus en =
Kommentarer (10)
  1. Tatoshka
    #1 Tatoshka Gæster 14. november 2018 21:18
    9
    Tak ven! Dette er min første uploadede skitse og introduktion til Arduino. Udover at blinke Blink))
  2. Alisher
    #2 Alisher Gæster 28. juli 2019 19:35
    8
    Hvor kan jeg downloade denne Finder_I2C_Hex_Address.ino-kode?
    1. Al
      #3 Al Gæster 14. august 2019 12:51
      11
      under billedet er der et link "Her er Starting_with_Arduino_OLED.ino KODE for vores program:"
  3. Alex
    #4 Alex Gæster 13. november 2019 20:01
    9
    Ikke VOID SETUP eller VOID LOOP, men void setup(); og void loop(); C-sproget er et sprog, der skelner mellem store og små bogstaver.
  4. Gæst Alex
    #5 Gæst Alex Gæster 14. januar 2020 03:00
    6
    >Trin 4: ... i mit tilfælde OLED med adresse 0x3F.
    og så
    >I VOID SETUP... adressen på vores display 0x3C, som vi lærte i "Trin #4".
    Hvordan er det?
  5. Gæst Alex
    #6 Gæst Alex Gæster 14. januar 2020 03:10
    9
    Tak skal du have! Jeg gjorde alt i henhold til instruktionerne på Atmega328 Pro Mini og tjekkede den købte 0.96". Begge viste sig at virke. Arduino IDE 1.8.10
  6. Læser
    #7 Læser Gæster 3. marts 2020 21:50
    4
    Tak, lærerigt, alt virker!
  7. Ildar Xafizov
    #8 Ildar Xafizov Gæster 19. april 2020 19:15
    5
    Jeg har et spørgsmål. Der er 2 OLED-skærme, der er identiske med dine på billedet (andet billede). Jeg kan ikke finde ud af, hvilke jumpere jeg skal bruge til at ændre adressen?
  8. Gæst Maxim
    #9 Gæst Maxim Gæster 31. oktober 2020 18:53
    11
    Tak for artiklen.Men jeg har et problem: Pixels i bogstaverne lyser efter hinanden, og skrifttypen er større, end den burde være. Tilsyneladende genkender Arduino ikke skærmopløsningen. Hvis nogen har det samme problem, så kan du løse det her:
    #define SCREEN_WIDTH 128 // OLED-skærmbredde, i pixels
    #define SCREEN_HEIGHT 64 // OLED-skærmhøjde, i pixels
    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitriy
    #10 Dmitriy Gæster 9. maj 2021 19:35
    7
    Tak skal du have! Ikke alt lykkedes med det samme. Faktisk var adressen på skærmen 128*64, ikke 0x3D, men 0x3C. Og jeg omarrangerede bibliotekerne "fra midten" af versionerne. Ikke den seneste, fordi... der var en besked om den kritiske værdi af hukommelse (jeg har en Arduino Uno).