- Gerekli Donanım:
- OLED Ekranları tanımak:
- Donanım ve bağlantılar:
- Arduino için SSD1306 OLED ekranını programlama:
Çoğumuz, projelerin çoğunda kullanıcıya bazı bilgileri göstermek için kullanılan 16 × 2 Nokta vuruşlu LCD ekrana aşina oluruz. Ancak bu LCD ekranların yapabilecekleri konusunda birçok sınırlaması vardır. Bu eğitimde OLED ekranları ve Arduino'nun nasıl kullanılacağını öğreneceğiz. Piyasada çok sayıda OLED ekran vardır ve bunları çalıştırmanın birçok yolu vardır. Bu eğitimde, sınıflandırmaları ve ayrıca projeniz için en uygun olanı tartışacağız.
Gerekli Donanım:
- 7pin 128 × 64 OLED ekran Modülü (SSD1306)
- Arduino UNO / Nano
- Breadboard
- Kabloların Bağlanması
- Dizüstü bilgisayar
OLED Ekranları tanımak:
OLED terimi " Organik Işık yayan diyot" anlamına gelir ve televizyonlarımızın çoğunda kullanılanla aynı teknolojiyi kullanır, ancak bunlara kıyasla daha az piksel içerir. Projelerimizi havalı göstereceğinden, bu harika görünümlü ekran modüllerinin Arduino ile arayüzlenmesi gerçekten eğlenceli. Burada OLED ekranlar ve türleri hakkında tam bir Makaleyi ele aldık.
Biz kullanan tek renkli 7-pin SSD1306 0.96” OLED ekran. Bu ekranı seçmenin nedeni, SPI 3 Tel modu, SPI dört tel modu ve IIC modu gibi üç farklı iletişim Protokolü üzerinde çalışabilmesidir. Bu eğitim, en hızlı iletişim modu ve varsayılan mod olduğu için SPI 4 telli modda modülün nasıl kullanılacağını kapsayacaktır.
Pimler ve işlevleri aşağıdaki tabloda açıklanmıştır.
PIN numarası |
Pin Adı |
Diğer isimler |
Kullanım |
1 |
Gnd |
Zemin |
Modülün topraklama pimi |
2 |
Vdd |
Vcc, 5V |
Güç pimi (3-5V tolere edilebilir) |
3 |
SCK |
D0, SCL, CLK |
Saat pimi görevi görür. Hem I2C hem de SPI için kullanılır |
4 |
SDA |
D1, MOSI |
Modülün veri pini. Hem IIC hem de SPI için kullanılır |
5 |
RES |
RST, RESET |
Modülü sıfırlar (SPI sırasında kullanışlıdır) |
6 |
DC |
A0 |
Veri Komutu pimi. SPI protokolü için kullanılır |
7 |
CS |
Çip Seçimi |
SPI protokolü altında birden fazla modül kullanıldığında kullanışlıdır |
Bu eğitimde, modülü 4-Wire SPI modunda çalıştıracağız, gerisini başka bir eğitim için bırakacağız.
Arduino topluluğu bize zaten bunu çok daha basit hale getirmek için doğrudan kullanılabilecek birçok Kitaplık verdi. Birkaç kitaplık denedim ve Adafruit_SSD1306 Kitaplığının kullanımının çok kolay olduğunu ve bir avuç grafik seçeneğe sahip olduğunu buldum, bu nedenle bu eğitimde de aynısını kullanacağız. Ancak, projenizde bellek / hız kısıtlaması varsa, daha hızlı çalıştığı ve daha az program belleği kapladığı için U8g Kitaplığını kullanmayı deneyin.
Donanım ve bağlantılar:
SSD1306 için Devre Şeması Arduino ile arabirim OLED gerçekten basit ve aşağıda gösterilmiştir
OLED modülü ile Arduino arasında basitçe bir SPI iletişimi kurduk. OLED, 3V-5V ile çalıştığından ve çok az güç tükettiğinden, harici bir güç kaynağına ihtiyaç duymaz. Bağlantıyı yapmak için telleri kullanabilirsiniz veya benim kullandığım gibi bir devre tahtası kullanabilirsiniz, böylece denemesi kolaydır. Bağlantı ayrıca aşağıdaki masalda listelenmiştir
S.No |
OLED modülündeki Pin Adı |
Arduino Pin Adı |
1 |
Gnd, Zemin |
Zemin |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, Çip Seçimi |
12 |
Not: OLED modülünde herhangi bir arka ışığı / parıltıyı sadece onu açarak görselleştiremezsiniz. OLED ekranındaki herhangi bir değişikliği fark etmek için doğru şekilde programlamanız gerekir.
Arduino için SSD1306 OLED ekranını programlama:
Bağlantılar hazır olduğunda Arduino'yu programlamaya başlayabilirsiniz. Daha önce de belirtildiği gibi, bu OLED modülüyle çalışmak için Adafruit kütüphanesini ve GFX kütüphanesini kullanacağız. OLED ekranınızı test etmek için aşağıdaki adımları izleyin.
Adım 1: Aşağıdaki bağlantıyı kullanarak Adafruit Kitaplığını ve GFX kitaplığını Github'dan indirin
- Adafruit Kütüphanesi
- GFX Grafik Kitaplığı
Adım 2: İki Zip dosyası indirmiş olmalısınız. Şimdi bunları takip ederek Arduino'nuza ekleyin
Eskiz-> Kitaplığı Dahil Et -> Aşağıda gösterildiği gibi Zip kitaplığı ekleyin . Ardından yeni indirdiğimiz kitaplığı seçin. Aynı anda yalnızca bir kitaplık seçebilirsiniz, bu nedenle bu adımı tekrarlamanız gerekir.
Adım 3: Aşağıdaki resimde gösterildiği gibi Dosya-> Örnekler-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino'yu seçerek örnek Programı başlatın.
Adım 4: 64. satırın üstündeki örnek programın içine aşağıdaki resimde gösterildiği gibi "#define SSD1306_LCDHEIGHT 64" satırını ekleyin.
Adım 5: Şimdi programı yükleyin ve OLED ekranının aşağıdaki resimde gösterildiği gibi varsayılan Adafruit örnek koduyla ateşlendiğini görmelisiniz. Tam çalışma Video sonunda verilir.
Bu örnek program size OLED ekranında görüntülenebilecek tüm olası grafikleri gösterir. Bu kod, bitmapler oluşturmanız, çizgiler / daireler / dikdörtgenler çizmeniz, piksellerle oynamanız, farklı yazı tipi ve boyutta karakter ve dizgeyi görüntülemeniz için yeterli olmalıdır.
Kitaplığı ve işlevlerini daha iyi anlamak istiyorsanız daha fazla okuyabilirsiniz. Kodun her çöpü, yorum satırlarının yardımıyla bölünür ve açıklanır. Tam kod bu makalenin sonunda verilmiştir.
Ekranı görüntüleme ve temizleme:
OLED ekranına yazmak, kara tahtaya yazmak gibidir, değerleri yazmalı ve üzerine yazılmadan önce temizlemeliyiz. Ekranı yazmak ve temizlemek için aşağıdaki komutlar kullanılır
display.display (); // display.clearDisplay (); // ekranı temizle
Bir Karakter Değişkeninin Görüntülenmesi:
Bir değişkenin içindeki içeriği görüntülemek için aşağıdaki kod kullanılabilir.
char i = 5; // gösterilecek değişken display.setTextSize (1); // text display.setTextColor (WHITE) boyutunu seçin; // monokrom görüntüleme için sadece beyaz mümkündür display.setCursor (0,0); // 0,0 OLED ekran display.write (i) 'nin sol üst köşesidir; // Görüntülenecek değişkeni yazın
Çizgi, Daire, Dikdörtgen, Üçgen Çizme:
Ekranınıza bazı semboller eklemek istiyorsanız, aşağıdakilerden herhangi birini çizmek için aşağıdaki kodu kullanabilirsiniz.
display.drawLine (display.width () - 1, 0, i, display.height () - 1, BEYAZ); // void drawLine (x0, y0, x1, y1, renk); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, BEYAZ); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, BEYAZ); // void drawTriangle (x0, y0, x1, y1, x2, y2, renk); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Ekrana Bir Dize Çizmek:
Aşağıdaki kod parçası, ekrandaki herhangi bir mesajı belirli bir yerde ve boyutta görüntülemek için kullanılabilir.
display.setTextSize (2); // metnin boyutunu ayarlayın display.setTextColor (WHITE); // renk ayarı display.setCursor (10,0); // Dize 10,0 (x, y) display.clearDisplay (); // Ekrandaki herhangi bir önceki ekranı sil. Display.println ("Devre Özeti"); // Dizeyi buraya yazdırın "Devre Özeti" display.display (); // metni ekrana gönder
Bir bit eşlem görüntüsünü görüntüleme:
OLED modülüyle yapılabilecek güvenilmez bir şey, bitmap'leri görüntülemek için kullanılabilmesidir. Aşağıdaki kod, bir bit eşlem görüntüsünü görüntülemek için kullanılır
statik const işaretsiz karakter PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11001110, B11111000, B11100000, B111100100, B11111000, B01111110001, B111100100, B11111000, B01111110001, B111100100 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, BEYAZ); // void drawBitmap (x, y, * bitmap, w, h, color);
Gördüğünüz gibi, bir görüntüyü görüntülemek için bitmap verilerinin PROMGMEM yönergesi şeklinde program belleğinde saklanması gerekir. Basitçe söylemek gerekirse, OLED ekranına, yukarıda gösterildiği gibi bir diziden bir dizi veya değerler ileterek her pikselle ne yapacağını söylemeliyiz. Bu dizi, görüntünün bit eşlem verilerini içerecektir.
Kulağa karmaşık gelebilir, ancak bir web aracının yardımıyla bir görüntüyü bit harita değerlerine dönüştürmek ve bunları yukarıdaki diziye yüklemek çok kolaydır.
Görüntünün tercih ettiğiniz önizlemesini elde etmek için görüntüyü yükleyin ve ayarları yapın. Ardından "Kod Oluştur" u tıklayın kodu kopyalayın ve Dizinize yapıştırın. Programı yükleyin ve işiniz bitti. Bir batman logosu göstermeyi denedim ve bu şekilde ortaya çıktı.
Bu kütüphanelerle hala yapabileceğiniz çok şey var. Tüm olasılıkları öğrenmek için Adafruit GFX Graphics Primitives sayfasını ziyaret edin.
Umarım bunu çalıştırmışsınızdır ve bazı projelerinizde bir OLED ekranı uygulamaya hazırsınızdır. Herhangi bir sorun yaşarsanız yorum bölümünde paylaşın, düzeltmek için elimden geleni yapacağım.