本教程介绍如何使用 树莓派的 I2C 接口设置 0.96 英寸 OLED 显示模块。在设置完成后,就可以轻松使用 Python 来放置文本、绘制形状,甚至显示简单的图像和动画。
0.96OLED显示模块 | 树莓派开发板 |
VCC | 5V |
GND | GND |
SCL | SCL.1(BCM3) |
SDA | SDA.1(BCM3) |
树莓派GPIO引脚对照表
进入树莓派系统设置,选择:首选项→Raspberry Pi Configuration→Interfaces→找到I2C选项打开 然后会重启系统即可。(参考下图)
如果你在命令模式下,可输入sudo raspi-config依然可以找到该选项打开I2C然后重启一下系统即可。
下面的库可能你已经安装过了,但是最好还是全部过一遍命令,以确保无误。
sudo apt install -y python3-dev sudo apt install -y python3-smbus i2c-tools sudo apt install -y python3-pil sudo apt install -y python3-pip sudo apt install -y python3-setuptools sudo apt install -y python3-rpi.gpio sudo apt install -y python3-venv
我这里使用的是Python3,安装I2C库后,使用i2cdetect命令查询显示屏模块是否被识别
i2cdetect -y 1
显示该设备已被检测到地址为“0x3c”(如下图)此类型设备的默认是十六进制地址。
然后在创建一个文件夹来存放与屏幕相关内容
cd ~ mkdir oled-screen cd oled-screen
创建Python虚拟环境
为了安装luma.oled库,我们将首先创建一个Python虚拟环境。这将允许所有库和依赖项都包含在一个目录中,从而保护您的核心Python安装不受冲突的影响。如果出现任何问题,您可以删除虚拟环境,而无需对整个SD卡进行重新映像。
要在名为“venv”的子文件夹中创建Python 3虚拟环境,请使用:
python3 -m venv venv
创建一个自包含的Python 3系统。使用以下命令激活:
source venv/bin/activate
安装Luma OLED Python库,请运行以下命令:
python -m pip install --upgrade luma.oled
检查我们是否在项目文件夹中:
cd ~/oled-screen
然后确保git已安装:
sudo apt install -y git
然后克隆示例存储库:
git clone https://github.com/rm-hull/luma.examples.git
为了使示例正常工作,可能需要安装以下依赖项:
sudo apt install -y python3-pil libjpeg-dev zlib1g-dev python3-av sudo apt install -y libfreetype6-dev liblcms2-dev libopenjp2-7 libtiff5 -y
现在我们进入文件内,查看下显示屏示例,程序里已经包含了很多显示例子,先进入文件
cd luma.examples cd examples
输入ls命令查看下文件内具体有那些:
ls
可以看到在文件内已经包含了很多显示屏例子,我们随便测试一个,就可以输入对应的命令即可
python pi_logo.py
比如:pi_logo.py的显示效果如下:
比如:clock.py的显示效果如下:
python clock.py
通过修改这些示例,您可以为项目创建自己的脚本。要运行“sys_info.py”示例,我需要运行:
pip install psutil
删除Python虚拟环境
Python虚拟环境的有用功能是,您可以删除文件夹,并删除使用“apt”和“pip”安装库所做的所有更改。在本文的前面,我们在“oled屏幕”项目文件夹中创建了文件夹“luma-env”。删除虚拟环境
rm -rf ~/oled-screen/venv
将留下oled屏幕文件夹和其中的任何其他文件。提高I2C总线速度,如果您使用OLED屏幕制作动画或视频,则值得提高接口的总线速度,因为它可以提高性能。请参阅更改Raspberry Pi I2C总线速度帖子。
故障排除
1.如果你的屏幕不显示,要检查下您是否启用了I2C并安装了“python3 smbus”和“I2C工具”
2.四个模块的连接是否正确,SDA和SCL不能接错。显示屏与树莓派主板建议用杜邦线直接插入不要使用扩展板
3.“i2cdetect-y 1”是否为显示了I2C总线上显示器的地址