8. I2C接口 OLED屏幕

野火IIC OLED模块,屏幕分辨率为128*64像素,黄蓝双色显示,驱动芯片为SSD1306,使用IIC接口,用于显示字符、图片等信息。

../_images/show-peripheral-oled.png

野火扩展板板载一个IIC OLED屏幕接口:

../_images/show-board-oled-01.png
../_images/show-board-oled-02.png

OLED屏幕接自扩展板上的I2C1:

../_images/show-circuit-oled-01.png
../_images/show-circuit-oled-02.png

以鲁班猫1为例,扩展板上的I2C1对应鲁班猫1的I2C3:

../_images/show-circuit-oled-03.png

执行如下命令修改/boot/uEnv/uEnv.txt,开启I2C3_M0插件:

1
sudo vi /boot/uEnv/uEnv.txt
../_images/show-dtbo9.png

修改后重启板卡。

8.1. 显示基础图案文字

本次代码例程将演示在OLED屏幕上显示基础图案和文字。

python代码测试

python测试代码为:lubancat_rk_code_storage/expansion_board/i2c/oled/oled_basic/python/main.py

关于程序中的OLED I2C接口定义,需要自行根据具体板卡来修改:

1
2
3
4
5
6
7
8
9
'''
filename : main.py
'''

...

i2c = busio.I2C(board.I2C3_SCL, board.I2C3_SDA)

...

main.py所在的整个文件夹传到板卡,执行如下命令运行程序:

1
2
 # 运行程序
 sudo python main.py
../_images/show-operation-coderun-oled-py.png

c代码测试

c测试代码为:lubancat_rk_code_storage/expansion_board/i2c/oled/oled_basic/c/main.c

关于程序中的OLED I2C接口定义,需要自行根据具体板卡来修改:

1
2
3
4
5
6
7
/* filename : main.c */

...

ret = oled_init(3);

...

将main.c所在的整个文件夹传到板卡,执行如下命令运行程序:

1
2
3
4
5
# 编译程序
sudo make

# 运行程序
sudo ./main
../_images/show-operation-coderun-oled-c.png

8.2. 显示DHT11数据

本次代码例程将演示在OLED屏幕上显示DHT11温湿度。

python代码测试

python测试代码为:lubancat_rk_code_storage/expansion_board/i2c/oled/oled_dht11/python/oled_dht11.py

关于程序中的OLED I2C接口定义,需要自行根据具体板卡来修改:

1
2
3
4
5
6
7
8
9
'''
filename : oled_dht11.py
'''

...

i2c = busio.I2C(board.I2C3_SCL, board.I2C3_SDA)

...

将oled_dht11.py所在的整个文件夹传到板卡,执行如下命令运行程序:

1
2
 # 运行程序
 sudo python oled_dht11.py

c代码测试

c测试代码为:lubancat_rk_code_storage/expansion_board/i2c/oled/oled_dht11/c/oled_dht11.c

关于程序中的OLED I2C接口定义,需要自行根据具体板卡来修改:

1
2
3
4
5
6
7
/* filename : oled_dht11.c */

...

ret = oled_init(3);

...

将oled_dht11.c所在的整个文件夹传到板卡,执行如下命令运行程序:

1
2
3
4
5
 # 编译程序
 sudo make

 # 运行程序
 sudo ./oled_dht11
../_images/show-operation-coderun-dht11.png