Sådan tilsluttes OLED I2C-skærm til ARDUINO
Introduktion: Introduktion til OLED I2C-skærm 128*64 / 128*32.
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.
Vi vil forbinde det til Arduino UNO / NANO, og vi vil også programmere det gennem Arduino.
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.
Vi mangler kun fire ting:
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.
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.
Pins brugt:
OLED-skærm - SCL/SCK (ur) og SDA (data), "Plus" strøm (VCC) og "Minus" strøm (GND).
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:
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.
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.
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.
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.
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.
Åbn filen Adafruit_SSD1306.h i en teksteditor og find linjerne:
Fjern kommentarer til linjen:
Det skal se sådan ud:
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.
For at skrive din egen besked skal du først oprette en ny skitse i ArduinoIDE-programmeringsmiljøet.
I overskriften inkluderer vi 4 biblioteker:
Så skriver vi nulstillingsprotokollen:
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:
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:
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.
Her er Starting_with_Arduino_OLED.ino KODE for vores program:
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.
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.
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.
Pins brugt:
OLED-skærm - SCL/SCK (ur) og SDA (data), "Plus" strøm (VCC) og "Minus" strøm (GND).
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
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.
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.
Å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.
Her er Starting_with_Arduino_OLED.ino KODE for vores program:
kode.zip
[946 b] (downloads: 4908)
Lignende mesterklasser
Særlig interessant
Kommentarer (10)