I2C 接口 Jetson nano 板载有两路I2C接口,JetBot上的OLED就是通过I2C接口来操作的。这里我们可以使用i2ctool工具来查看i2C设备。 这里指令最后的参数为1, 表示查看的是i2c总线1的设备,如果参数为0,则查看的是总线0的设备。
其中0x3C 就是OLED的i2C设备地址。由于JetBot一开始的项目使用的是SSD1306的0.91inch OLED屏幕,所以提供的OLED函数库是Adafruit_SSD1306. 屏幕的控制程序你可以在jetbot/jetbot/app/stats.py文件中了解。 OLED显示 这里为了不与原OLED的程序冲突,我们连接另一个0.91inch OLED 到Jetson Nano的i2c0接口上做显示测试。 引脚连接关系如下: Vcc (OLED) -> 3V3 (Jetson) GND (OLED) -> GND (Jetson) SDA (OLED) -> I2C0_SDA (Jetson) SDL (OLED) -> I2C0_SDL (Jetson) 如果你不清楚I2C0接口的引脚具体是哪个,请参考Jetson nano系列教程之GPIO 连接好之后查看i2c总线0所挂载的设备,可以看到有一个0x3C的设备被识别到 由于控制芯片和屏幕规格都一样,所以我们同样直接使用Adafruit_SSD1306函数库来操作OLED. 我们试着去写一个程序显示字符串到OLED上面。 代码情况如下: 开头import需要用到的各个函数,分别是time用来控制睡眠时间等, PIL图形库以及Adafruit__SSD1306 这里注意我们接到的是i2c0总线,所以参数i2c_bus设置为0
初始化屏幕并清屏
设置字体为默认字体
设置屏幕长宽,并创建画布
设置刷新区域,并写入字符串,这里调用的是PIL图形库的画图函数
最后将内存刷新到屏幕上即可:
声明: Adafruit_SS1306是Adafruit Electronics 提供的驱动小尺寸OLED屏幕的驱动。有兴趣的可以自行了解一下。 |