Kaip prijungti OLED I2C ekraną prie ARDUINO
Įvadas: OLED I2C ekrano 128*64 / 128*32 įvadas.
Sveiki! Būdamas mėgėjiškas elektronikos entuziastas, esu tikras, kad viskas, ką darome – elektroniniai žaislai – naminiai gaminiai ar dideli projektai – viskas iš smalsumo ir tinginystės. Smalsumas stengiasi suprasti ir suvokti didžiulį, nežinomą, išsiaiškinti, kaip jis ten veikia, ką veikia, kaip juda. O tinginystė sugalvoja ką nors sugalvoti, kad nesikeltų, nepriartėtų, nepakeltų, nesusiteptų ar dar ką nors svarbaus.
Kadangi informaciją matyti geriau nei suprasti, kas mūsų įrenginyje įvyks, jau įvyko, ar vyksta, mes tikrai norėsime gauti šią naudingiausią informaciją iš savo mikrovaldiklių, jutiklių ar kitų įrenginių. Ir bet kuriuo atveju noriu gauti bet kokius pranešimus, tokius kaip klausimai, įspėjimai, priminimai, jaustukai, žvaigždutės, širdelės ir panašiai.
Tiems, kurie taip pat nori panašaus, pateikiame trumpą mažų ir nebrangių OLED ekranų prijungimo ir išbandymo vadovą.
Toliau kalbėsime apie vieną iš radijo mėgėjams plačiai prieinamų OLED ekranų modelių, valdomų SSD1306 lustu, kurio ekrano dydis yra 0,96 colio ir 128 * 64 arba 128 * 32 pikselių skiriamoji geba. Šie ekranai idealiai tinka mažiems mėgėjų radijo projektams ir namų projektams.
Sujungsime jį su Arduino UNO / NANO, taip pat programuosime per Arduino.
Vykdykite instrukcijas, kad suprastumėte, kaip tinkamai prijungti ir sukonfigūruoti OLED ekraną prie „Arduino“ ir kaip ekrane parodyti pasirinktinį pranešimą.
Viską darome žingsnis po žingsnio.
Mums reikia tik keturių dalykų:
Apskritai pirkti detales įvairiems projektams Aliexpress ir Ebay yra labai šaunus dalykas, kol dirbi su vienu projektu, kitos dalys jau yra pakeliui. Svarbiausia nepamiršti pateikti užsakymą.
Ekranas valdomas SSD1306 lustu, kuris palaiko penkis ryšio protokolus, iš kurių vienas yra I2C. Duomenys, naudojant šį protokolą, perduodami tik dviem laidais, o kuo mažiau laidų korpuse, tuo geriau, todėl mums tinka visai neblogai.Bet! Yra modulių su SPI protokolu ir netgi su protokolo perjungimu, todėl būkite atsargūs pirkdami šį modulį.
Naudoti kaiščiai:
OLED ekranas - SCL/SCK (laikrodis) ir SDA (duomenys), "Plus" galia (VCC) ir "Minus" galia (GND).
Naudoti kaiščiai:
Arduino UNO - SCL/SCK ant A5 ir SSD ant A4, „plius“ galia (+5 V) ir „Minus“ galia (GND).
Ekrano prijungimas prie Arduino:
Kiekvienas įrenginys I2C magistrale turi šešioliktainį adresą, jo keisti negalima, yra laidinis, kiekvienas atsakingas gamintojas turi jį nurodyti kur nors ant korpuso ar instrukcijose. Yra modulių su jungikliais ir trumpikliais, kuriais galima keisti adresą, bet... jei įrenginiai pigūs iki gėdos, tai gamintojas gali nepasivargti su tokia smulkmena, tad teks nustatykite patys.
Iš viso autobuse galima naudoti iki 127 adresų – 119 įrenginių ir 8 aptarnavimo adresus. Bendravimas vyksta šiais adresais. Yra pagrindinis, dar žinomas kaip Šeimininkas, ir yra vergas, dar žinomas kaip Vergas – klausia šeimininkai, atsako vergai, viskas paprasta.
Kadangi mūsų OLED ekrane naudojamas I2C ryšio protokolas, o adresas gali būti nenurodytas, pabandysime patys išsiaiškinti būtent šį adresą.
Tai galite padaryti įkeldami trumpą eskizą į savo Arduino plokštę su prijungtu OLED. BET!
Neskubėkite iš karto įkelti eskizo į Arduino! Pirmiausia parsisiunčiame „tvarkykles“, t.y. sujungkime bibliotekas ir, kad tai padarytume, iškart pereisime prie „žingsnio Nr. 5“, o tada grįšime ir tęsime.
Atsisiųskite CODE Finder_I2C_Hex_Address.ino, įkelkite į Arduino.
Atidarykite "Port Monitor", nustatykite greitį iki 9600 ir jei viskas prijungta teisingai, programa parodys įrenginio adresą, mano atveju OLED su adresu 0x3F.
Kad viskas veiktų tinkamai ir nereikėtų išradinėti dviračio iš naujo, prie ArduinoIDE aplinkos reikia prijungti porą bibliotekų, būtent: ADAFRUIT GFX ir ADAFRUIT SSD1306, jos būtinos, kad Arduino galėtų savarankiškai bendrauti su OLED ekranu.
Šias bibliotekas galite įtraukti atlikdami šiuos veiksmus.
Naudojant naujausias bibliotekų versijas, mano ekranas veikė kreivai, žinoma, tai gali būti dėl mano rankų kreivumo, tačiau įdiegus pačias pirmąsias šių bibliotekų versijas, viskas pradėjo atrodyti sklandžiai ir gražiai. Kažkodėl į galvą ateina Puškino eilutės:
...ir patirtis, sunkių klaidų sūnus,
ir genijus, paradoksų draugas.
Kitas būdas įdiegti bibliotekas – pačiam susirasti, atsisiųsti ir įdiegti šias bibliotekas.
Github pavyzdys:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
Tai yra tos pačios „Adafruit“ bibliotekos, tačiau OLED I2C prašymu panašių bibliotekų galima lengvai ieškoti paieškos sistemose. Daugelis entuziastų rašo bibliotekas „sau“ ir skelbia jas internete. Kurią biblioteką naudoti, priklauso nuo jūsų.
Kad ekrane būtų rodomos rusiškos raidės, reikalingos ir specialios bibliotekos, tačiau tai atskira tema atskiram straipsniui.
Įdiegę bibliotekas galite grįžti į 4 veiksmą ir galiausiai sužinoti šešioliktainį ekrano adresą.
Norėdami patikrinti, ar viskas veikia taip, kaip tikėtasi, paleiskite bandomąjį pavyzdį iš ArduinoIDE.
Už tai:
Eikite į FILE > EXAMPLES > SSD 1306 > Pasirinkite 128x64 i2c
Jei gaunate pranešimą „Klaida“, pabandykite pasirinkti SSD 1306 > 128x32 i2c.
Jei „Klaida“ pasikartos, pabandykite pakeisti I2C adresą demonstracinio kodo 61 eilutėje ir pakeiskite jį ekrano adresu, kurį nustatėte atlikdami 4 veiksmą.
Jei klaida pasikartos, galite pabandyti redaguoti failą Adafruit_SSD1306.h, jis yra Arduino bibliotekų aplanke.
Atidarykite failą Adafruit_SSD1306.h teksto rengyklėje ir raskite eilutes:
Atšaukti eilutės komentarą:
Tai turėtų atrodyti taip:
Jei klaida kartojasi, turite patikrinti teisingas jungtis.
Kai atsisiuntimas bus baigtas, ekrane pamatysite bandomąją animaciją, o tai reiškia, kad sėkmingai nustatėte OLED ekraną.
Kai jums visiškai patiko ši animacija, galite pereiti prie kito žingsnio.
Norėdami parašyti savo pranešimą, pirmiausia sukurkite naują eskizą ArduinoIDE programavimo aplinkoje.
Antraštėje įtraukiame 4 bibliotekas:
Tada parašome atstatymo protokolą:
VOID SETUP rodome šešioliktainį savo ekrano adresą 0x3C, kurį sužinojome atlikdami 4 veiksmą.
Tada inicijuojame ekraną ir jį išvalome:
Tada VOID LOOP įrašome pagrindinį kodą, tai yra mūsų pranešimą, kurį norime parodyti ekrane.
Norėdami tai padaryti, aprašome teksto dydį, teksto spalvą, žymeklio padėtį ir galiausiai parodome pranešimą naudodami komandą println:
Pabaigoje nepamirškite parašyti ekranas.parodymaskad vaizdas būtų rodomas ekrane, kitaip gausite tuštumą.
Jei viską padarėte teisingai, ekranuose pasirodys pranešimas.
Štai mūsų programos Starting_with_Arduino_OLED.ino KODAS:
Sveiki! Būdamas mėgėjiškas elektronikos entuziastas, esu tikras, kad viskas, ką darome – elektroniniai žaislai – naminiai gaminiai ar dideli projektai – viskas iš smalsumo ir tinginystės. Smalsumas stengiasi suprasti ir suvokti didžiulį, nežinomą, išsiaiškinti, kaip jis ten veikia, ką veikia, kaip juda. O tinginystė sugalvoja ką nors sugalvoti, kad nesikeltų, nepriartėtų, nepakeltų, nesusiteptų ar dar ką nors svarbaus.
Kadangi informaciją matyti geriau nei suprasti, kas mūsų įrenginyje įvyks, jau įvyko, ar vyksta, mes tikrai norėsime gauti šią naudingiausią informaciją iš savo mikrovaldiklių, jutiklių ar kitų įrenginių. Ir bet kuriuo atveju noriu gauti bet kokius pranešimus, tokius kaip klausimai, įspėjimai, priminimai, jaustukai, žvaigždutės, širdelės ir panašiai.
Tiems, kurie taip pat nori panašaus, pateikiame trumpą mažų ir nebrangių OLED ekranų prijungimo ir išbandymo vadovą.
Toliau kalbėsime apie vieną iš radijo mėgėjams plačiai prieinamų OLED ekranų modelių, valdomų SSD1306 lustu, kurio ekrano dydis yra 0,96 colio ir 128 * 64 arba 128 * 32 pikselių skiriamoji geba. Šie ekranai idealiai tinka mažiems mėgėjų radijo projektams ir namų projektams.
1 veiksmas: pagrindinės sąvokos
Sujungsime jį su Arduino UNO / NANO, taip pat programuosime per Arduino.
- OLED yra organinis šviesos diodas, t.y. iš organinių junginių pagamintas puslaidininkinis įtaisas, kuris pradeda skleisti šviesą, kai per jį praeina elektros srovė.
- ARDUINO yra platforma, skirta mokymams ir pastatų automatikos bei robotikos sistemoms.
- ArduinoIDE – kūrimo aplinka. Tai nemokama Arduino programavimo programa.
- I2C – Inter-Integrated Circuits, lustų ryšio linija.
- Eskizas, dar žinomas kaip kodas, dar žinomas kaip programa - Arduino terminija.
Vykdykite instrukcijas, kad suprastumėte, kaip tinkamai prijungti ir sukonfigūruoti OLED ekraną prie „Arduino“ ir kaip ekrane parodyti pasirinktinį pranešimą.
Viską darome žingsnis po žingsnio.
2 veiksmas: priedai
Mums reikia tik keturių dalykų:
- 1. Pats OLED ekranas yra 0,96 colio (galite nusipirkti Aliexpress arba Ebay, jis ilgas, bet pigus!).
- 2. Arduino UNO / Nano (toje pačioje vietoje kaip ekranas).
- 3. Jungiamieji laidai (ten pat).
- 4. Kompiuteris arba nešiojamas kompiuteris su įdiegtu ArduinoIDE.
Apskritai pirkti detales įvairiems projektams Aliexpress ir Ebay yra labai šaunus dalykas, kol dirbi su vienu projektu, kitos dalys jau yra pakeliui. Svarbiausia nepamiršti pateikti užsakymą.
3 veiksmas: ekrano prijungimas
Ekranas valdomas SSD1306 lustu, kuris palaiko penkis ryšio protokolus, iš kurių vienas yra I2C. Duomenys, naudojant šį protokolą, perduodami tik dviem laidais, o kuo mažiau laidų korpuse, tuo geriau, todėl mums tinka visai neblogai.Bet! Yra modulių su SPI protokolu ir netgi su protokolo perjungimu, todėl būkite atsargūs pirkdami šį modulį.
Naudoti kaiščiai:
OLED ekranas - SCL/SCK (laikrodis) ir SDA (duomenys), "Plus" galia (VCC) ir "Minus" galia (GND).
Naudoti kaiščiai:
Arduino UNO - SCL/SCK ant A5 ir SSD ant A4, „plius“ galia (+5 V) ir „Minus“ galia (GND).
Ekrano prijungimas prie Arduino:
- Vcc - 5V
- GND - GND
- SDA-A4
- SCL-A5
4 veiksmas: I2C skaitytuvas
Kiekvienas įrenginys I2C magistrale turi šešioliktainį adresą, jo keisti negalima, yra laidinis, kiekvienas atsakingas gamintojas turi jį nurodyti kur nors ant korpuso ar instrukcijose. Yra modulių su jungikliais ir trumpikliais, kuriais galima keisti adresą, bet... jei įrenginiai pigūs iki gėdos, tai gamintojas gali nepasivargti su tokia smulkmena, tad teks nustatykite patys.
Iš viso autobuse galima naudoti iki 127 adresų – 119 įrenginių ir 8 aptarnavimo adresus. Bendravimas vyksta šiais adresais. Yra pagrindinis, dar žinomas kaip Šeimininkas, ir yra vergas, dar žinomas kaip Vergas – klausia šeimininkai, atsako vergai, viskas paprasta.
Kadangi mūsų OLED ekrane naudojamas I2C ryšio protokolas, o adresas gali būti nenurodytas, pabandysime patys išsiaiškinti būtent šį adresą.
Tai galite padaryti įkeldami trumpą eskizą į savo Arduino plokštę su prijungtu OLED. BET!
Neskubėkite iš karto įkelti eskizo į Arduino! Pirmiausia parsisiunčiame „tvarkykles“, t.y. sujungkime bibliotekas ir, kad tai padarytume, iškart pereisime prie „žingsnio Nr. 5“, o tada grįšime ir tęsime.
4 veiksmas: tęsinys:
Atsisiųskite CODE Finder_I2C_Hex_Address.ino, įkelkite į Arduino.
Atidarykite "Port Monitor", nustatykite greitį iki 9600 ir jei viskas prijungta teisingai, programa parodys įrenginio adresą, mano atveju OLED su adresu 0x3F.
5 veiksmas: atsisiųskite ir prijunkite bibliotekas
Kad viskas veiktų tinkamai ir nereikėtų išradinėti dviračio iš naujo, prie ArduinoIDE aplinkos reikia prijungti porą bibliotekų, būtent: ADAFRUIT GFX ir ADAFRUIT SSD1306, jos būtinos, kad Arduino galėtų savarankiškai bendrauti su OLED ekranu.
Šias bibliotekas galite įtraukti atlikdami šiuos veiksmus.
- 1. ArduinoIDE eikite į meniu Sketch.
- 2. Pasirinkite „Įtraukti bibliotekas“.
- 3. Pasirinkite „Tvarkyti bibliotekas“.
- 4. Suraskite ADAFRUIT GFX ir įdiekite juos.
- 5. Suraskite ADAFRUIT SSD1306 ir įdiekite juos.
Naudojant naujausias bibliotekų versijas, mano ekranas veikė kreivai, žinoma, tai gali būti dėl mano rankų kreivumo, tačiau įdiegus pačias pirmąsias šių bibliotekų versijas, viskas pradėjo atrodyti sklandžiai ir gražiai. Kažkodėl į galvą ateina Puškino eilutės:
...ir patirtis, sunkių klaidų sūnus,
ir genijus, paradoksų draugas.
Kitas būdas įdiegti bibliotekas – pačiam susirasti, atsisiųsti ir įdiegti šias bibliotekas.
Github pavyzdys:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
Tai yra tos pačios „Adafruit“ bibliotekos, tačiau OLED I2C prašymu panašių bibliotekų galima lengvai ieškoti paieškos sistemose. Daugelis entuziastų rašo bibliotekas „sau“ ir skelbia jas internete. Kurią biblioteką naudoti, priklauso nuo jūsų.
Kad ekrane būtų rodomos rusiškos raidės, reikalingos ir specialios bibliotekos, tačiau tai atskira tema atskiram straipsniui.
Įdiegę bibliotekas galite grįžti į 4 veiksmą ir galiausiai sužinoti šešioliktainį ekrano adresą.
6 veiksmas: ekrano tikrinimas
Norėdami patikrinti, ar viskas veikia taip, kaip tikėtasi, paleiskite bandomąjį pavyzdį iš ArduinoIDE.
Už tai:
Eikite į FILE > EXAMPLES > SSD 1306 > Pasirinkite 128x64 i2c
Jei gaunate pranešimą „Klaida“, pabandykite pasirinkti SSD 1306 > 128x32 i2c.
Jei „Klaida“ pasikartos, pabandykite pakeisti I2C adresą demonstracinio kodo 61 eilutėje ir pakeiskite jį ekrano adresu, kurį nustatėte atlikdami 4 veiksmą.
Jei klaida pasikartos, galite pabandyti redaguoti failą Adafruit_SSD1306.h, jis yra Arduino bibliotekų aplanke.
Atidarykite failą Adafruit_SSD1306.h teksto rengyklėje ir raskite eilutes:
//#define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16
Atšaukti eilutės komentarą:
#define SSD1306_128_64.
Tai turėtų atrodyti taip:
#define SSD1306_128_64
//#define SSD1306_128_32
// #define SSD1306_96_16
Jei klaida kartojasi, turite patikrinti teisingas jungtis.
Kai atsisiuntimas bus baigtas, ekrane pamatysite bandomąją animaciją, o tai reiškia, kad sėkmingai nustatėte OLED ekraną.
Kai jums visiškai patiko ši animacija, galite pereiti prie kito žingsnio.
7 veiksmas: parašykite savo pranešimą
Norėdami parašyti savo pranešimą, pirmiausia sukurkite naują eskizą ArduinoIDE programavimo aplinkoje.
Antraštėje įtraukiame 4 bibliotekas:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Tada parašome atstatymo protokolą:
#define OLED_RESET 4
Adafruit_SSD1306 ekranas (OLED_RESET);
VOID SETUP rodome šešioliktainį savo ekrano adresą 0x3C, kurį sužinojome atlikdami 4 veiksmą.
Tada inicijuojame ekraną ir jį išvalome:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
Tada VOID LOOP įrašome pagrindinį kodą, tai yra mūsų pranešimą, kurį norime parodyti ekrane.
Norėdami tai padaryti, aprašome teksto dydį, teksto spalvą, žymeklio padėtį ir galiausiai parodome pranešimą naudodami komandą println:
display.setTextSize(2);
display.setTextColor(BALTAS);
display.setCursor(0,0);
display.println("Gerai padaryta!");
display.display();
Pabaigoje nepamirškite parašyti ekranas.parodymaskad vaizdas būtų rodomas ekrane, kitaip gausite tuštumą.
Jei viską padarėte teisingai, ekranuose pasirodys pranešimas.
Štai mūsų programos Starting_with_Arduino_OLED.ino KODAS:
kodas.zip
[946 b] (atsisiuntimai: 4908)
Panašios meistriškumo klasės
Ypatingai įdomu
Komentarai (10)