Hvordan koble OLED I2C-skjerm til ARDUINO
Introduksjon: Introduksjon til OLED I2C-skjerm 128*64 / 128*32.
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.
Vi vil koble den til Arduino UNO / NANO, og vi vil også programmere den gjennom Arduino.
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.
Vi trenger bare fire ting:
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.
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.
Pinner brukt:
OLED-skjerm - SCL/SCK (klokke) og SDA (data), "Pluss" strøm (VCC) og "Minus" strøm (GND).
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:
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.
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.
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.
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.
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.
Åpne Adafruit_SSD1306.h-filen i et tekstredigeringsprogram og finn linjene:
Fjern kommentarene til linjen:
Det skal se slik ut:
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.
For å skrive din egen melding, lag først en ny skisse i ArduinoIDE-programmeringsmiljøet.
I overskriften inkluderer vi 4 biblioteker:
Så skriver vi tilbakestillingsprotokollen:
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:
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:
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.
Her er Starting_with_Arduino_OLED.ino-KODEN for programmet vårt:
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.
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.
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.
Pinner brukt:
OLED-skjerm - SCL/SCK (klokke) og SDA (data), "Pluss" strøm (VCC) og "Minus" strøm (GND).
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
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.
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.
Å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.
Her er Starting_with_Arduino_OLED.ino-KODEN for programmet vårt:
kode.zip
[946 b] (nedlastinger: 4908)
Lignende mesterklasser
Spesielt interessant
Kommentarer (10)