1. 程式人生 > >樹莓派使用 OLED 屏顯示圖片及文字

樹莓派使用 OLED 屏顯示圖片及文字

樹莓派預設是不帶顯示屏的,如果想要檢視系統的一些資訊,需要使用電腦登入到樹莓派,或者通過 HDMI 連線外接顯示器檢視。這樣做總是有點麻煩,我們可以通過外接一個 OLED 屏來顯示一些關鍵引數或者圖片。本文將詳細介紹操作方法。 #### OLED 模組介紹 OLED 屏主要有兩種:128×32 和 128×64 ,主要顏色是白、黃、藍。OLED 屏的特點是功耗低,價格便宜,使用 I2C 介面與主機連線。本文所使用的是 128×64 尺寸的螢幕,外形如下: ![](https://img2020.cnblogs.com/other/1218435/202006/1218435-20200605190537557-1203613423.jpg) 它的介面很簡單,只有 4 個 Pin 腳:VCC,GND,SDA,SCL,所以它與樹莓派的連線也很簡單,如下圖所示(本文使用樹莓派 3B): ![](https://img2020.cnblogs.com/other/1218435/202006/1218435-20200605190537867-1976413757.png) #### 開啟 I2C 介面 樹莓派預設是不開啟 I2C 介面的,所以我們需要手動開啟它。執行以下命令: ``` $ sudo apt-get install -y python-smbus $ sudo apt-get install -y i2c-tools $ sudo raspi-config ``` 然後按以下動圖方式開啟 I2C 功能。 ![](https://img2020.cnblogs.com/other/1218435/202006/1218435-20200605190538146-664718117.gif) #### 安裝 OLED 屏的 Python 庫 為了在 OLED 屏上顯示文字或影象,我們需要使用到 Adafruit 的 Python 庫,這個庫支援所有的 SSD1306 相關的顯示屏,包括 128×32 和 128×64 螢幕。 首先我們需要下載這個庫: ``` $ git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git ``` 然後進入到目錄,再進行安裝: ``` $ cd Adafruit_Python_SSD1306 $ sudo python3 setup.py install # 如果使用 Python2 ,則使用對應命令 ``` #### 找到 OLED 模組地址 安裝好 Python 庫之後,我們可以使用 `i2cdetect` 命令來找到 OLED 屏的實體地址: ``` $ i2cdetect -y 1 ``` 我們會得到類似這樣的輸出: ![](https://img2020.cnblogs.com/other/1218435/202006/1218435-20200605190538371-2139304888.png) 不同的模組可能得到不同的輸出。這裡我們的 I2C 地址就是 0x3C。如果你使用的是初代樹莓派(256MB的樹莓派1代B),那麼需要使用下面的命令: ``` $ i2cdetect -y 0 ``` #### 使用 OLED 屏顯示影象及文字 在剛剛下載的那個庫檔案裡,有一個 **examples** 目錄,在那個目錄裡,我們可以看到以下內容: - animate.py - buttons.py - image.py - shapes.py - stats.py 這幾個檔案我們可以直接執行,比如: ``` $ python3 shapes.py ``` 這幾個檔案執行的結果如下圖示: ![](https://img2020.cnblogs.com/other/1218435/202006/1218435-20200605190538619-1327352254.jpg) #### 螢幕尺寸適配 以上的幾個示例檔案裡,它們都預設你的螢幕尺寸是 128×32 ,但它們依然可以跑在 128×64 的螢幕上。如果我們想要看得更舒服一點,我們可以將尺寸進行適配。 在每個 Python 檔案裡,都有下面這麼一段程式碼: ![](https://img2020.cnblogs.com/other/1218435/202006/1218435-20200605190538861-1348381854.png) 這裡也寫得很清楚了,上下兩行程式碼分別代表 128×32 和 128×64 的螢幕,使用何種尺寸的螢幕,只需將對應的程式碼前面的 `#` 去掉即可。 --- 公眾號:良許Linux ### 有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章