我們大多數人都熟悉16×2點陣LCD顯示器,在大多數項目中用于向用戶顯示一些信息。但是這些LCD顯示器有很多局限性。在本教程中,我們將了解OLED顯示器以及如何將它們與Raspberry Pi一起使用。市場上有很多類型的OLED顯示器,有很多方法可以讓它們工作。我們已經將 7 針 OLED 與 Arduino 一起使用。
所需硬件:
128×64 OLED 顯示模組 (SSD1306)
面包板
連接線
了解OLED顯示器:
術語OLED代表“有機發光二極管”,它使用與我們大多數電視中使用的相同技術,但與它們相比像素更少。將這些看起來很酷的顯示模塊與Raspberry Pi連接真的很有趣,因為它會讓我們的項目看起來很酷。我們在這里介紹了有關OLED顯示器及其類型的完整文章。在這里,我們使用單色 4 針 SSD1306 0.96 英寸 OLED 顯示屏。此液晶屏只能與 I2C 模式配合使用。
以下是OLED與樹莓派的連接:
有機硅引腳 | RPI 引腳 |
可變資本公司 | 3.3V |
接地 | 接地 |
自主權評估 | SDA(物理引腳 3) |
標準及校正實驗所 | SCL(物理引腳 5) |
電路圖:
將OLED與樹莓派連接:
RPI社區已經為我們提供了很多庫,可以直接用于使這變得更加簡單。我嘗試了一些庫,發現Adafruit_SSD1306 OLED庫非常易于使用,并且有一些圖形選項,因此我們將在本教程中使用相同的選項。
步驟 1:啟用 I2C 通信
在安裝 Adafruit SSD1306 庫之前,我們需要在樹莓派中啟用 I2C 通信。
要在樹莓派控制臺中執行此操作:
sudo raspi-config
然后會出現藍屏。現在選擇接口選項
在此之后,我們需要選擇I2C
在此之后,我們需要選擇是并按回車鍵,然后確定
在此之后,我們需要通過發出以下命令重新啟動樹莓派:
sodo reboot
第 2 步:查找 OLED I2C 地址并更新它
然后我們需要使用給定的命令找到OLED I2C地址,您將看到一個十六進制地址。
sudo i2cdetect –y 1
然后使用給定的命令更新樹莓派:
sudo apt-get update
第 3 步:安裝 python-pip 和 GPIO 庫
在此之后,我們需要使用給定的命令安裝pip:
sudo apt-get install build-essential python-dev python-pip
并安裝樹莓派 GPIO 庫
sudo pip installs RPi.GPIO
步驟 4:安裝Python 映像庫和smbus庫
最后,我們需要使用給定的命令在 Raspberry Pi 中安裝 Python 映像庫和 smbus 庫:
sudo apt-get install python-imaging python-smbus
第 5 步:安裝 Adafruit SSD1306 python 庫
現在是時候使用給定的命令安裝 Adafruit SSD1306 python 庫代碼和示例了:
sudo apt-get install git
git clone
https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306 sudo python setup.py install
現在用戶可以在樹莓派中找到OLED接口的代碼,您可以直接播放或自己自定義。在這里,我們自定義了一個示例代碼進行演示。您可以在文章末尾找到完整的 Python 代碼。
編程說明:
用于將OLED與RPi項目接口的編程部分很容易。首先,我們需要導入一些必要的庫。
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import subprocess
在此初始化后初始化顯示
RST = 0
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
disp.begin()
disp.clear()
disp.display()
width = disp.width
height = disp.height
image1 = Image.new('1', (width, height))
draw = ImageDraw.Draw(image1)
draw.rectangle((0,0,width,height), outline=0, fill=0)
padding = -2
top = padding
bottom = height-padding
x = 0
font = ImageFont.load_default()
在此之后,我們可以使用給定的代碼將數據或圖像發送到OLED
# Write two lines of text.
disp.clear()
disp.display()
draw.text((x, top), "OLED Interfacing " , font=font, fill=255)
draw.text((x, top+8), "Circuit Digest", font=font, fill=255)
draw.text((x, top+16), "For more Videos", font=font, fill=255)
draw.text((x, top+25), "Visit at", font=font, fill=255)
draw.text((x, top+34), "www.circuitdigest.com", font=font, fill=255)
# Display image.
disp.image(image1)
disp.display()
time.sleep(2)
if disp.height == 64:
image = Image.open('img1.png').convert('1')
else:
image = Image.open('img1.png').convert('1')
disp.image(image)
disp.display()
time.sleep(2)
if disp.height == 64:
image = Image.open('img3.jpg').convert('1')
else:
image = Image.open('img3.jpg').convert('1')
這款OLED有兩種變體,一種是128 * 32,另一種是128 * 64,因此用戶可以在初始化OLED時相應地選擇任何人。在這里,我們為兩者編寫了此代碼。用戶只需要初始化128 * 64像素的OLED,例如:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
所有代碼和函數都易于理解,無需進一步解釋。只需開始并嘗試使用高度,寬度和圖像,并嘗試其他一些功能來創建一些更酷的幾何圖形。
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import subprocess
RST = 0
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
disp.begin()
disp.clear()
disp.display()
width = disp.width
height = disp.height
image1 = Image.new('1', (width, height))
draw = ImageDraw.Draw(image1)
draw.rectangle((0,0,width,height), outline=0, fill=0)
padding = -2
top = padding
bottom = height-padding
x = 0
font = ImageFont.load_default()
while True:
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Write two lines of text.
disp.clear()
disp.display()
draw.text((x, top), "OLED Interfacing " , font=font, fill=255)
draw.text((x, top+8), "Circuit Digest", font=font, fill=255)
draw.text((x, top+16), "For more Videos", font=font, fill=255)
draw.text((x, top+25), "Visit at", font=font, fill=255)
draw.text((x, top+34), font=font, fill=255)
# Display image.
disp.image(image1)
disp.display()
time.sleep(2)
if disp.height == 64:
image = Image.open('img1.png').convert('1')
else:
image = Image.open('img1.png').convert('1')
disp.image(image)
disp.display()
time.sleep(2)
if disp.height == 64:
image = Image.open('img3.jpg').convert('1')
else:
image = Image.open('img3.jpg').convert('1')
disp.image(image)
disp.display()
time.sleep(2)
if disp.height == 64:
image = Image.open('img4.jpg').convert('1')
else:
image = Image.open('img4.jpg').convert('1')
disp.image(image)
disp.display()
time.sleep(2)
-
OLED顯示器
+關注
關注
0文章
66瀏覽量
13330
發布評論請先 登錄
相關推薦
如何在Raspbian上設置沒有顯示器和鍵盤的Raspberry Pi
![如何在Raspbian上設置沒有<b class='flag-5'>顯示器</b>和鍵盤的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>](https://file.elecfans.com/web2/M00/6B/89/poYBAGMsHPqATersAALUER_osEs595.png)
通過以太網線與VEE一起使用Raspberry Pi不起作用
Raspberry Pi 4機械開關和OLED屏幕護罩的資料分享
Raspberry Pi 2機械開關和OLED屏幕護罩的資料分享
TFT LCD與Raspberry Pi連接的方式
![TFT LCD與<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>連接的方式](https://file.elecfans.com/web2/M00/5E/DD/pYYBAGL2BASAWy-DAAWjdm45AcE073.png)
三星顯示器計劃將透明PI基板應用于柔性OLED
如何在Raspberry Pi Pico中使用OLED顯示器
![如何在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico中使用<b class='flag-5'>OLED</b><b class='flag-5'>顯示器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Raspberry Pi 3B+機械開關和OLED屏幕護罩
![<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 3B+機械開關和<b class='flag-5'>OLED</b>屏幕護罩](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
將Arduino庫與Raspberry Pi Pico C/C++ SDK一起使用
![將Arduino庫與<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico C/C++ SDK<b class='flag-5'>一起</b>使用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論