利用Arduino IDE實現(xiàn)OLED顯示器與ESP32的接口
16x2液晶顯示模塊是目前最常用的顯示模塊,我們已經(jīng)與ESP32接口構(gòu)建了一個互聯(lián)網(wǎng)時鐘。但這些類型的顯示器是空間和功耗模塊,不能用于可穿戴產(chǎn)品。這是另一種流行的顯示模塊,稱為OLED,雖然它比16x2顯示器稍微貴一點,但它是一個小而不耗電的模塊。OLED是一種圖形顯示模塊,可用于顯示小圖像和圖形。
在這個項目中,我們將使用流行的帶有OLED的Wi-Fi模塊ESP32在其上顯示一些圖形圖像。通過構(gòu)建在ESP32上的各種應用程序來了解更多關于ESP32及其工作的信息。
OLED顯示器
OLED(有機發(fā)光二極管)是一種使用有機化合物制成的發(fā)光二極管,當電流允許流過時,有機化合物就會激發(fā)。這些有機化合物有自己的光,因此它們不像普通的lcd那樣需要任何背光電路。由于這個原因,OLED顯示技術是節(jié)能的,廣泛應用于電視和其他顯示產(chǎn)品。
根據(jù)顯示器的顏色、引腳數(shù)量、尺寸和控制器IC,市場上有各種類型的oled。
下圖顯示了小型OLED模塊的可用選項
在本教程中,我們將使用單色藍4針SSD1306 0.96英寸OLED模塊,該模塊寬128像素,長64像素。這款4針OLED僅支持I2C協(xié)議,控制器IC SSD1306有助于OLED顯示接收到的字符。
組件要求:
?ESP32模塊
?128*64 SSD1306 OLED模塊
?跳線
ESP32 OLED顯示電路圖
ESP32 OLED連接:
1. ESP32的SCL引腳(D22) - OLED的> SCL引腳
2. ESP32的SDA引腳(D21) - OLED的> SDA引腳
3. ESP32的3.3v引腳- OLED的> Vcc(支持3-5v)
4. ESP32的GND -> OLED的GND
在Arduino IDE中安裝OLED所需的庫
為了使用ESP32在OLED上顯示內(nèi)容,我們需要兩個庫Adafruit_SSD1306庫和Adafruit_GFX庫。
按照以下步驟安裝這些庫:
1. 打開Arduino IDE并轉(zhuǎn)到Sketch > Include Library > Manage Libraries。
2. 在庫管理器中,搜索上述庫并安裝它們。
安裝完庫后,重新啟動Arduino IDE。
面向OLED的ESP32編程
在為ESP32編寫代碼之前,請確保您已經(jīng)下載了它的板文件。如果沒有,打開Tools -> Board -> Board管理器,搜索ESP32并安裝。在這里了解更多關于用Arduino IDE編程ESP32的信息。
獲取OLED模塊的I2C地址:
這里OLED和ESP32之間使用I2C通信,所以我們需要顯示器的I2C地址。128*64 OLED的I2C地址一般為0x3C。要找到OLED模塊的I2C地址,將OLED模塊與ESP32連接,上傳以下代碼并打開串行監(jiān)視器。你會看到OLED的地址。此地址將在最終代碼中使用。
利用ESP32在OLED上顯示圖像
現(xiàn)在,編寫代碼來依次顯示滾動文本和位圖圖像。完整的代碼在本教程的末尾給出。您可以在文件->示例->AdafruitSSD1306中找到OLED的示例代碼。
1. 現(xiàn)在,通過導入必要的庫來啟動代碼。包括“adafruit_gx .h”,“Adafruit_SSD1306.h”用于OLED顯示器和用于I2C的wire.h。
2. 使用# Define宏定義屏幕寬度和高度。然后創(chuàng)建一個使用庫的實例。
3. 我們將創(chuàng)建一個函數(shù)來顯示滾動文本。首先使用display. cleardisplay()函數(shù)清除顯示。您可以使用display.setTextSize()函數(shù)并通過將大小作為參數(shù)來設置文本大小。要打印文本,可以使用display.println()或display.print()函數(shù),如下所示。
現(xiàn)在,在不同方向上滾動文本,有不同的功能。向右滾動使用display.startscrollright(),類似地向左滾動使用display.startscrollleft(),向右滾動使用display.startscrolldiagright(),如下所示。
4. 在setup函數(shù)中,使用SSD1306_SWITCHCAPVCC初始化OLED顯示屏,它會內(nèi)部產(chǎn)生3.3V來初始化顯示屏。然后調(diào)用display_scrolltext()和display. drawbitmap()函數(shù)來顯示文本和圖像。
這里display. drawbitmap()函數(shù)接受6個參數(shù)(x坐標,y坐標,位圖數(shù)組,寬度,高度和顏色)來顯示圖像。由于我們使用的是128x64 OLED,所以我們將寬度和高度分別設置為128和64。這里,位圖數(shù)組包含在屏幕上繪制像素以創(chuàng)建圖像的像素信息。這個位圖數(shù)組(十六進制值)可以在線或使用位圖軟件生成,如下所述。
將圖像轉(zhuǎn)換為位圖數(shù)組
要將圖像轉(zhuǎn)換為十六進制值,您可以使用此在線工具。
1. 轉(zhuǎn)到這個在線工具并上傳你想要轉(zhuǎn)換的圖像。輸入OLED的尺寸,即128*64,并根據(jù)需要更改背景顏色。它還將顯示圖像的預覽,如下所示。
2. 然后單擊Generate code。
3. 這里我們正在轉(zhuǎn)換一幅《鋼鐵俠》的圖像。因此,在轉(zhuǎn)換圖像之后,復制所有生成的十六進制值并將其粘貼到Arduino代碼中,如下所示。完整的Arduino代碼與完整的十六進制值在本教程結(jié)束時給出。
要查看OLED顯示器的可用功能,請參閱Arduino目錄下的Adafruit ssd1306庫的頭文件。
ESP32 OLED圖形顯示
最后,使用Arduino IDE將完整的代碼上傳到ESP32,您將首先看到滾動文本說“即將到來的鋼鐵俠”,然后它將顯示鋼鐵俠圖形圖像,我們使用在線工具將其轉(zhuǎn)換為十六進制值。
本文編譯自iotdesignpro