Jetson 04 OLED 屏幕控制
OLED 屏幕控制
本教程介绍了如何通过JSON指令控制连接到ESP32模组的OLED显示屏。OLED显示屏是一种常用的显示设备,可以用于显示各种信息,如文本、图像等。
OLED 屏幕基础信息
OLED显示屏通过I2C(IIC)接口与下位机ESP32模组进行通信。它可以显示自定义的文本内容,并支持多行显示。
产品上配有一个 OLED 显示屏,该显示屏通过 IIC 与下位机 ESP32 模组进行通信,当开机后会自动显示一些下位机的基础信息,上位机可以通过发送 JSON 指令来更改显示屏上显示的内容。
OLED 屏幕控制 JSON 指令
- {"T":3,"lineNum":0,"Text":"putYourTextHere"}
- 控制显示屏显示自定义内容
- lineNum 是行数,一条JSON指令可以改变一行的内容。针对大部分产品使用的0.91英寸的OLED显示屏,lineNum的数值可以为0、1、2、3,共四行。
- Text 是你希望在这一行显示的文字内容。如果内容太多,会自动换行,但同时也会挤掉最后一行。
lineNum 是行数,一条 JSON 指令可以改变一行的内容,下位机收到一条新的指令后,开机默认的 OLED 界面会消失,取而代之的是你新增加的内容,对于大部分产品使用的 0.91英寸的OLED显示屏,lineNum 的数值可以为 0、1、2、3,共四行;Text 是你希望在这一行显示的文字内容,如果你这一行的内容太多,会自动换行,但同时也会挤掉最后一行。
from base_ctrl import BaseController
base = BaseController('/dev/ttyTHS0', 115200)
# 更改 OLED 上面的显示内容
base.send_command({"T":3,"lineNum":0,"Text":"this is line0"})
base.send_command({"T":3,"lineNum":1,"Text":"this is line1"})
base.send_command({"T":3,"lineNum":2,"Text":"this is line2"})
base.send_command({"T":3,"lineNum":3,"Text":"this is line3"})
运行上面的代码块后,OLED上面会显示出来四行文字:
this is line0
this is line1
this is line2
this is line3
OLED 显示动态信息
在上面的教程中我们实现了在 OLED 屏幕上显示简单文字的方法,接下来我们写一个稍微复杂一些的例程,运行以下代码块后,OLED 屏幕上会显示当前的时间(但是由于树莓派的时间不一定是准确的所以和你当地的实际时间可能会有出入),本例程仅用于演示主程序中更新屏幕的方法,在产品主程序中,我们使用这样的方法来将产品的IP、运行状体等信息即时更新在 OLED 屏幕上。
# 导入 datetime 模块中的 datetime 类,用于获取和处理当前日期和时间
from datetime import datetime
# 导入 time 模块,主要用于程序中的延时处理
import time
# 使用 while True 创建一个无限循环,使程序能够持续运行
while True:
# 使用 datetime.now().strftime("%H:%M:%S") 获取当前时间,并将其格式化为 "小时:分钟:秒" 的形式
current_time = datetime.now().strftime("%H:%M:%S")
# 使用 base.send_command 方法发送一个包含当前时间的命令
base.send_command({"T":3,"lineNum":0,"Text":current_time})
# 使用 time.sleep(1) 让程序暂停1秒,这样可以确保每隔一秒更新一次时间,并发送一次命令
time.sleep(1)
运行上面的代码块后,你可以看到 OLED 屏幕的第一行开始显示当前的时间,每秒钟更新一次,上面这条函数是无限循环的,你可以通过点击上面的 ■ 按键来终止程序运行。
产品上位机使用
- 01 JupyterLab 基础和机器人介绍
- 02 Python 底盘运动控制
- 03 云台控制和 LED 灯控制
- 05 在 JupyterLab 中构建 UI 界面
- 06 获取底盘反馈信息
- 07 使用 JSON 指令控制下位机
- 08 下位机 JSON 指令集
- 09 开机自动发送指令
- 10 播放音频文件
- 11 文字转语音 (TTS)
- 12 使用 Flask 实现低延时图传
- 13 在 Jupyter Lab 中显示实时画面
- 14 延时摄影
- 15 OpenCV 运动检测
- 16 通过按键控制拍照
- 17 OpenCV 人脸识别
- 18 基于 DNN(深度神经网络)的物体识别
- 19 基于 OpenCV 的颜色识别
- 20 基于 OpenCV 的颜色追踪
- 21 基于 OpenCV 的巡线自动驾驶
- 22 基于 MediaPipe 的手势识别
- 23 基于 MediaPipe 的人脸识别
- 24 基于 MediaPipe 的姿态检测
- 25 简易的 WEB 应用
- 26 主程序架构介绍
- 27 YAML 配置文件设置
- 28 Crontab 开机自动运行脚本
- 29 自定义命令行功能
- 30 WEB 命令行应用
- 31 基于蒲公英的远程控制
