5.4 二维码控制车灯#
5.4.1 简介#
二维码控制车灯,AI视觉模块对二维码进行识别然后通过二维码的内容进行设置WS2812灯珠显示的颜色分别有:红色,绿的,蓝色,黑色(熄灭),白色,因为我们提供的二维码就是这些内容,你也可以根据4.9 二维码识别教程的方法自己生成想要二维码。
5.4.2 流程图#

5.4.3 代码#
from machine import I2C,UART,Pin
from Sengo2 import *
import time
from neopixel import myNeopixel
# 等待Sengo2完成操作系统的初始化。此等待时间不可去掉,避免出现Sengo2尚未初始化完毕主控器已经开发发送指令的情况
time.sleep(3)
# 选择UART或者I2C通讯模式,Sengo2出厂默认为I2C模式,短按模式按键可以切换
# 4种UART通讯模式:UART9600(标准协议指令),UART57600(标准协议指令),UART115200(标准协议指令),Simple9600(简单协议指令),
#########################################################################################################
# port = UART(2,rx=Pin(16),tx=Pin(17),baudrate=9600)
port = I2C(0,scl=Pin(21),sda=Pin(20),freq=400000)
# Sengo2通讯地址:0x60。如果I2C总线挂接多个设备,请避免出现地址冲突
sengo2 = Sengo2(0x60)
err = sengo2.begin(port)
print("sengo2.begin: 0x%x"% err)
# 1、Sengo2只能识别并解码一个由不超过10个字符生成的二维码;
# 2、Apriltag与二维码不同,请勿混淆。二者在使用时,周围一圈均需要留白;
# 3、正常使用时,应由主控器发送指令控制Sentry2算法的开启与关闭,而非通过摇杆手动进行操作;
# 4、满足特定限制条件下,Sentry2可以并行运行多个识别算法;
err = sengo2.VisionBegin(sengo2_vision_e.kVisionQrCode)
print("sengo2.VisionBegin(sengo2_vision_e.kVisionQrCode):0x%x"% err)
#Define the number of pin and LEDs connected to neopixel.
NUM_LEDS = 4
np = myNeopixel(NUM_LEDS, 13)
np.brightness(150) #brightness: 0 ~ 255
lastDetectionTime = 0
while True:
# Sengo2不主动返回检测识别结果,需要主控板发送指令进行读取。读取的流程:首先读取识别结果的数量,接收到指令后,Sengo2会刷新结果数据,如果结果数量不为零,那么主控再发送指令读取结果的相关信息。请务必按此流程构建程序。
obj_num = sengo2.GetValue(sengo2_vision_e.kVisionQrCode, sentry_obj_info_e.kStatus)
# Sengo2只可识别并解码一个由不超过10个字符生成的二维码;所以返回结果非0时,只要获取并处理第1个结果的相关数据即可
#获取运行时间
currentMillis = time.ticks_ms()
if obj_num:
lastDetectionTime = currentMillis
QRcodeStr = sengo2.GetQrCodeValue()
if QRcodeStr == "Red":
np.fill(255,0,0)
np.show()
elif QRcodeStr == "Green":
np.fill(0,255,0)
np.show()
elif QRcodeStr == "Blue":
np.fill(0,0,255)
np.show()
elif QRcodeStr == "Black":
np.fill(0,0,0)
np.show()
elif QRcodeStr == "White":
np.fill(255,255,255)
np.show()
# 如果5秒内没有检测到二维码将会熄灭WS2812灯
if currentMillis - lastDetectionTime >= 5000:
lastDetectionTime = currentMillis
np.fill(0,0,0)
np.show()
5.4.4 代码结果#
上传代码成功后,AI视觉模块会对拍到的画面进行识别,判断是否有二维码,如果有便将二维码的内容进行赋值给变量,然后通过变量进行判断是否是对应的内容,内容"Red"亮红灯,内容"Green"亮绿灯,内容"Blue"亮蓝灯,内容"White"亮白灯,内容"Black"熄灭灯。