Cara menyambung paparan OLED I2C ke ARDUINO

Pengenalan: Pengenalan kepada paparan OLED I2C 128*64 / 128*32.
Cara menyambung paparan OLED I2C ke ARDUINO

hello! Sebagai peminat elektronik amatur, saya pasti semua yang kami lakukan - mainan elektronik - produk buatan sendiri, atau projek besar - semuanya kerana rasa ingin tahu dan malas. Rasa ingin tahu berusaha untuk memahami dan memahami yang luas, tidak diketahui, untuk mengetahui cara ia berfungsi di sana, apa yang dilakukannya, bagaimana ia bergerak. Dan kemalasan mencipta sesuatu untuk dibuat, supaya tidak bangun, tidak mendekati, tidak mengangkat, tidak mengotorkan atau apa-apa lagi yang penting.

Memandangkan melihat maklumat adalah lebih baik daripada memikirkan perkara yang akan berlaku dalam peranti kami, atau telah berlaku, atau sedang berlaku, kami pasti ingin menerima maklumat yang paling berguna ini daripada mikropengawal, penderia atau peranti lain kami. Dan dalam apa jua keadaan, saya mahu menerima sebarang mesej, seperti soalan, amaran, peringatan, emotikon, bintang, hati dan seumpamanya.

Bagi mereka yang juga mempunyai keinginan yang sama, berikut ialah panduan ringkas untuk menyambung dan menguji paparan OLED yang kecil dan murah.
Seterusnya, kita akan bercakap tentang salah satu model paparan OLED yang tersedia secara meluas untuk radio amatur, dikawal oleh cip SSD1306, dengan saiz skrin 0.96 inci dan resolusi 128 * 64 atau 128 * 32 piksel. Paparan ini sesuai untuk reka bentuk radio amatur kecil dan projek buatan sendiri.
Cara menyambung paparan OLED I2C ke ARDUINO

Langkah 1: Konsep Asas


Kami akan menyambungkannya ke Arduino UNO / NANO, dan kami juga akan memprogramkannya melalui Arduino.
  • OLED ialah Diod Pemancar Cahaya Organik, iaitu peranti semikonduktor yang diperbuat daripada sebatian organik yang mula memancarkan cahaya apabila arus elektrik melaluinya.
  • ARDUINO ialah platform untuk melatih dan membina sistem automasi dan robotik.
  • ArduinoIDE - persekitaran pembangunan. Ini adalah program pengaturcaraan Arduino percuma.
  • I2C – Litar Bersepadu Antara, talian komunikasi antara cip.
  • Lakaran, kod aka, program aka - terminologi Arduino.

Ikut arahan untuk memahami cara menyambung dan mengkonfigurasi paparan OLED dengan betul ke Arduino dan cara memaparkan mesej tersuai pada paparannya.
Kami melakukan semua langkah demi langkah.

Langkah 2: Aksesori


Kami hanya memerlukan empat perkara:
  • 1. Paparan OLED itu sendiri ialah 0.96” (anda boleh membelinya di Aliexpress atau Ebay, ia panjang, tetapi murah!).
  • 2. Arduino UNO / Nano (tempat yang sama dengan paparan).
  • 3. Wayar penyambung (ibid.).
  • 4. Komputer atau komputer riba dengan ArduinoIDE dipasang.

Cara menyambung paparan OLED I2C ke ARDUINO

Secara umum, membeli alat ganti untuk pelbagai projek di Aliexpress dan Ebay adalah perkara yang sangat menarik, semasa anda sedang mengerjakan satu projek, alat ganti untuk yang lain sedang dalam perjalanan. Perkara utama adalah jangan lupa untuk membuat pesanan.

Langkah 3: Menyambung Paparan


Paparan dikawal oleh cip SSD1306, yang menyokong lima protokol komunikasi, salah satunya ialah I2C. Data yang menggunakan protokol ini dihantar melalui hanya dua wayar, dan lebih sedikit wayar dalam kes itu, lebih baik, jadi ia sesuai dengan kita.Tetapi! Terdapat modul dengan protokol SPI dan juga dengan pensuisan protokol, jadi berhati-hati semasa membeli modul ini.
Cara menyambung paparan OLED I2C ke ARDUINO

Pin yang digunakan:
Paparan OLED - SCL/SCK (jam) dan SDA (data), kuasa “Plus” (VCC) dan kuasa “Minus” (GND).
Cara menyambung paparan OLED I2C ke ARDUINO

Pin yang digunakan:
Arduino UNO - SCL/SCK pada A5 dan SSD pada A4, kuasa “Plus” (+5V) dan kuasa “Minus” (GND).
Menyambungkan paparan ke Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Cara menyambung paparan OLED I2C ke ARDUINO

Langkah 4: Pengimbas I2C


Setiap peranti pada bas I2C mempunyai alamat perenambelasan, ia tidak boleh ditukar, ia berwayar keras, setiap pengeluar yang bertanggungjawab mesti menunjukkannya di suatu tempat pada kes atau dalam arahan. Terdapat modul dengan suis dan pelompat yang boleh digunakan untuk menukar alamat, tetapi... jika peranti itu murah sehingga memalukan, maka pengilang mungkin tidak peduli untuk menangani butiran kecil itu, jadi anda perlu tentukan sendiri.

Secara keseluruhan, sehingga 127 alamat boleh digunakan dalam bas - 119 untuk peranti dan 8 alamat perkhidmatan. Komunikasi dijalankan di alamat ini. Ada yang utama aka Tuan, dan ada hamba aka Hamba - Tuan bertanya, hamba menjawab, semuanya mudah.
Memandangkan paparan OLED kami menggunakan protokol komunikasi I2C, dan alamatnya mungkin tidak dinyatakan, kami akan cuba mengetahui alamat ini sendiri.

Anda boleh melakukan ini dengan memuat naik lakaran pendek ke papan Arduino anda dengan OLED disambungkan. TAPI!
Jangan tergesa-gesa untuk memuat naik lakaran ke Arduino dengan segera! Mari kita muat turun "pemandu" dahulu, i.e. mari kita sambungkan perpustakaan, dan untuk melakukan ini kita akan segera pergi ke "Langkah No. 5", dan kemudian kembali dan teruskan.

Langkah 4: Bersambung:


Muat turun CODE Finder_I2C_Hex_Address.ino, muat naik ke Arduino.
Buka "Port Monitor", tetapkan kelajuan kepada 9600 dan jika semuanya disambungkan dengan betul, program akan menunjukkan alamat peranti, dalam kes saya OLED dengan alamat 0x3F.
Cara menyambung paparan OLED I2C ke ARDUINO

Langkah 5: Muat turun dan sambungkan perpustakaan


Agar segala-galanya berfungsi dengan betul, dan anda tidak perlu mencipta semula roda, anda perlu menyambungkan beberapa perpustakaan ke persekitaran ArduinoIDE, iaitu: ADAFRUIT GFX dan ADAFRUIT SSD1306, ia diperlukan untuk Arduino dapat berkomunikasi secara bebas dengan paparan OLED.
Anda boleh memasukkan perpustakaan ini dengan mengikuti langkah ini.
  • 1. Dalam ArduinoIDE, pergi ke menu Sketch.
  • 2. Pilih "Sertakan Perpustakaan".
  • 3.Pilih "Urus Perpustakaan".
  • 4. Cari ADAFRUIT GFX dan pasangkannya.
  • 5. Cari ADAFRUIT SSD1306 dan pasangkannya.

Dengan versi terkini perpustakaan, paparan saya berfungsi dengan bengkok, ini mungkin disebabkan oleh kelengkungan tangan saya, tetapi selepas saya memasang versi pertama perpustakaan ini, semuanya mula kelihatan lancar dan cantik. Atas sebab tertentu, garis Pushkin terlintas di fikiran:
... dan pengalaman, anak kepada kesilapan yang sukar,
dan genius, kawan paradoks.

Cara lain untuk memasang perpustakaan ialah mencari, memuat turun dan memasang sendiri perpustakaan ini.
Untuk contoh Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Ini adalah perpustakaan Adafruit yang sama, tetapi perpustakaan serupa boleh dicari dengan mudah dalam enjin carian, atas permintaan OLED I2C. Ramai peminat menulis perpustakaan "untuk diri mereka sendiri" dan kemudian menyiarkannya di web. Perpustakaan mana yang hendak digunakan terpulang kepada anda.
Agar paparan memaparkan huruf Rusia, perpustakaan khas juga diperlukan, tetapi ini adalah topik yang berasingan untuk artikel yang berasingan.
Selepas perpustakaan dipasang, anda boleh kembali ke langkah 4 dan akhirnya mengetahui alamat perenambelasan paparan anda.

Langkah 6: Ujian Paparan


Untuk menyemak sama ada semuanya berfungsi seperti yang diharapkan, jalankan contoh ujian daripada ArduinoIDE.
Untuk ini:
Pergi ke FAIL > CONTOH > SSD 1306 > Pilih 128x64 i2c
Jika anda mendapat "Ralat", cuba pilih SSD 1306 > 128x32 i2c.
Jika "Ralat" berlaku sekali lagi, cuba tukar alamat I2C pada baris 61 kod demo dan gantikannya dengan alamat paparan anda yang anda tentukan dalam langkah #4.
Jika ralat berlaku lagi, anda boleh cuba mengedit fail Adafruit_SSD1306.h, ia terletak dalam folder perpustakaan Arduino.
Cara menyambung paparan OLED I2C ke ARDUINO

Buka fail Adafruit_SSD1306.h dalam editor teks dan cari baris:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Nyahkomen baris:
#define SSD1306_128_64. 

Ia sepatutnya kelihatan seperti ini:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Jika ralat berlaku lagi, anda perlu menyemak sambungan yang betul.
Setelah muat turun selesai, anda akan melihat animasi ujian pada skrin, yang bermaksud anda telah berjaya menyediakan paparan OLED anda.

Apabila anda benar-benar menikmati animasi ini, anda boleh meneruskan ke langkah seterusnya.

Langkah 7: Tulis mesej anda sendiri


Untuk menulis mesej anda sendiri, mula-mula buat lakaran baharu dalam persekitaran pengaturcaraan ArduinoIDE.
Dalam pengepala kami menyertakan 4 perpustakaan:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Kemudian kami menulis protokol tetapan semula:
#define OLED_RESET 4

Paparan Adafruit_SSD1306(OLED_RESET);

Dalam VOID SETUP kami menunjukkan alamat perenambelasan paparan kami 0x3C, yang kami pelajari dalam "Langkah No. 4".
Kemudian, kami memulakan paparan dan mengosongkannya:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

Seterusnya, dalam VOID LOOP kita menulis kod utama, iaitu, mesej kita yang ingin kita paparkan pada paparan.
Untuk melakukan ini, kami menerangkan saiz teks, warna teks, kedudukan kursor, dan akhirnya, paparkan mesej menggunakan perintah println:
display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(0,0);

display.println("Syabas!");

display.display();

Akhir kata jangan lupa menulis paparan.paparansupaya imej dipaparkan pada skrin, jika tidak, anda akan mendapat kekosongan.
Jika anda melakukan semuanya dengan betul, mesej akan muncul pada paparan.
Cara menyambung paparan OLED I2C ke ARDUINO

Berikut ialah KOD Starting_with_Arduino_OLED.ino program kami:
kod.zip [946 b] (muat turun: 4908)
kembalilah
Komen
  • tali lehersenyumketawamerah mukasenyumansantai santaitersengih
    mata_hatimencium_haticium_mata_tutupmemerahlegaberpuas hatitersengih
    kejapterkeluar_lidah_kenyit_mataterkeluar_lidah_mata_tertutuptersengihberciumterkeluar_lidahsedang tidur
    risauberkerut dahikesianbuka mulutmeringiskeliruterdiam
    tanpa ekspresitidak terhiburpeluh_senyumpeluhkecewa_legapenatpasif
    kecewakelirutakutpeluh sejuktabahmenangismenangis teresak-esak
    kegembiraanterperanjatmenjeritmuka_penatmarahkemarahankemenangan
    mengantuksedaptopengcermin mata hitammuka_peningimptersenyum_imp
    neutral_facetiada_muluttidak bersalah
4 tolak satu =
Komen (10)
  1. Tatoshka
    #1 Tatoshka tetamu 14 November 2018 21:18
    9
    Terima kasih rakan! Ini adalah lakaran pertama saya yang dimuat naik dan pengenalan kepada Arduino. Selain daripada berkelip Blink))
  2. Alisher
    #2 Alisher tetamu 28 Julai 2019 19:35
    8
    Di manakah saya boleh memuat turun kod Finder_I2C_Hex_Address.ino ini?
    1. Al
      #3 Al tetamu 14 Ogos 2019 12:51
      11
      di bawah gambar terdapat pautan "Ini adalah KOD Starting_with_Arduino_OLED.ino program kami:"
  3. Alex
    #4 Alex tetamu 13 November 2019 20:01
    9
    Bukan VOID SETUP atau VOID LOOP, tetapi void setup(); dan void loop(); Bahasa C ialah bahasa sensitif huruf besar-besaran.
  4. Tetamu Alex
    #5 Tetamu Alex tetamu 14 Januari 2020 03:00
    6
    >Langkah 4: ... dalam kes saya OLED dengan alamat 0x3F.
    dan kemudian
    >Dalam VOID SETUP... alamat paparan kami 0x3C, yang kami pelajari dalam "Langkah #4".
    Bagaimana itu?
  5. Tetamu Alex
    #6 Tetamu Alex tetamu 14 Januari 2020 03:10
    9
    Terima kasih! Saya melakukan segala-galanya mengikut arahan pada Atmega328 Pro Mini dan menyemak 0.96". Kedua-duanya ternyata berfungsi. Arduino IDE 1.8.10
  6. Pembaca
    #7 Pembaca tetamu 3 Mac 2020 21:50
    4
    Terima kasih, instruktif, semuanya berfungsi!
  7. Ildar Xafizov
    #8 Ildar Xafizov tetamu 19 April 2020 19:15
    5
    Saya ada satu soalan. Terdapat 2 paparan OLED yang sama dengan anda dalam foto (foto kedua). Saya tidak dapat mengetahui pelompat mana yang hendak digunakan untuk menukar alamat?
  8. Maxim tetamu
    #9 Maxim tetamu tetamu 31 Oktober 2020 18:53
    11
    Terima kasih atas artikel itu.Tetapi saya mempunyai masalah: piksel dalam huruf bersinar setiap satu dan fonnya lebih besar daripada yang sepatutnya. Nampaknya Arduino tidak mengenali resolusi skrin. Jika sesiapa mempunyai masalah yang sama, inilah cara untuk menyelesaikannya:
    #define SCREEN_WIDTH 128 // lebar paparan OLED, dalam piksel
    #define SCREEN_HEIGHT 64 // ketinggian paparan OLED, dalam piksel
    Paparan Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitriy
    #10 Dmitriy tetamu 9 Mei 2021 19:35
    7
    Terima kasih! Tidak semuanya berjaya dengan segera. Sesungguhnya, alamat pada paparan ialah 128*64, bukan 0x3D, tetapi 0x3C. Dan saya menyusun semula Perpustakaan "dari tengah" versi. Bukan yang terbaru, kerana... terdapat mesej tentang nilai kritikal memori (saya mempunyai Arduino Uno).