OLED显示器如何与Raspberry Pi一起使用?

我们大多数人都熟悉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)

用“公地悲剧”描述当前人工智能领域的发展再贴切不过
Oculus创始人:虚拟现实将取代手机地位
空调制热的正确开法_空调制热出冷风怎么回事
人工智能给医疗领域带来的发展机遇
华为大豆,在华为云“黑土地”上茁壮成长
OLED显示器如何与Raspberry Pi一起使用?
保养充电电池的几则小技巧
Elastic Store Operation
“跑分作弊”华为回应:其它厂商也是这么干的
传宁德时代重启港股IPO,最快明年上市
小米移动电源发热严重与哪些因素有关?
华为与阿里巴巴为什么都要做芯片
Boost公式推导及验证
英特尔携手海康威视打造简便高效的智慧物流管理解决方案
顺义1200亩自动驾驶封闭测试场首期道路设施和场景建设完成
机科做到二十年来稳拿亿元AGV机器人市场的秘诀是什么
凌力尔特推出高度集成的升压型DC/DC转换器
华为Mate40RS保时捷版本维修成本到底有多高?
芯片验证方法之极限验证法简析
数控机床出现丢步现象的原因及解决办法