树莓派0.96寸oled显示系统信息

技术文章请注意时效!原理才是根本。

github:https://github.com/maplesugarr/raspberrypi-ssd1306_0.96_oled

网上花了12买的一块屏幕,比较小。选的是黄蓝双色,我以为是可以显示黄色或者蓝色,实际上是上面8个像素点是黄色,下面是蓝色。

并不知道怎玩耍,找到一片博客Interfacing SSD1306 OLED Display with Raspberry Pi:https://circuitdigest.com/microcontroller-projects/ssd1306-oled-display-with-raspberry-pi 。它使用库Adafruit_SSD1306:https://github.com/adafruit/Adafruit_Python_SSD1306

Adafruit_SSD1306库的使用

下载Adafruit_SSD1306后,可以在examples文件夹找到各种例子。

创建一个和屏幕一样大小的画布

拿到画笔

清空画布

用画笔在画布上写字,或者画图像,甚至还封装了一些形状。

接线

这两张图是对应的

oled 屏幕连接树莓派的 i2c1_sda,i2c1_scl。

打开树莓派i2c

执行命令raspi-config,找到Interfacing Options,找到i2c打开。

I2C是一种总线式结构,它只需要SCL时钟信号线与SDA数据线,两根线就能将连接与总线上的设备实现数据通信,由于它的简便的构造设计,于是成为一种较为常用的通信方式。 由于I2C采用的是主从式通信方式,所以,通信的过程完全由主设备仲裁。在通信之前,必须由主设备发送一个起始信号,决定数据是否可以开始传送,并且在结束通信时,必须再由主设备发送一个结束信号,以表示通信已经结束。

由于I2C是主从式通信,也就意味着一根总线上可以挂载多个从设备,那么主设备如何区分这些从设备呢?主设备如何知道是在与哪一个从设备在通信呢?答案是:通过地址。每一个从设备都有自己的地址编码,也就是说,主设备在与具体的某一个从设备通信之前,必须先发送地址,以表示与主设备通信的是该设备。

由于只有一个i2c设备,还有库,使用默认就好了,不需要详细了解i2c了。要是以后使用多个i2c再回来看

安装相关库(python3)

安装Adafruit SSD1306(python3)

显示任意大小的文字

我选择的是128×64分辨率,默认显示8行文字,显示的字实在是太小了。想再这种高分辨下一行字符占用两行,也就是总共显示4行,怎么办?

在画笔在画布上写文字时候,使用了font参数,如果把fontsize相应调大,就能实现一行文字占用两行显示。

下面是写好的方法,只要传入想用几行lines显示一行文字,就能得到对应的fontsize。

显示自定义图片

屏幕只有亮暗两种,所以只能显示这种黑白照片。

使用ps制作好,使用程序保存起来。

按钮和菜单

使用两个按钮,一个是选择菜单项,一个是确定执行。

添加按钮监听

根据按钮的GPIO号码,实现选择菜单和确定功能

其他:显示系统信息,睡眠唤醒

发表评论

电子邮件地址不会被公开。 必填项已用*标注