64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
|
||
|
||
import math
|
||
import sensor, image, time, lcd
|
||
import binascii
|
||
from Maix import GPIO
|
||
from machine import Timer, PWM, UART, Timer
|
||
from fpioa_manager import fm
|
||
import KPU as kpu
|
||
|
||
lcd.init() # lcd初始化
|
||
|
||
# 映射串口引脚
|
||
fm.register(6, fm.fpioa.UART1_RX, force=True)
|
||
fm.register(7, fm.fpioa.UART1_TX, force=True)
|
||
|
||
# 初始化串口
|
||
uart = UART(UART.UART1, 115200, read_buf_len=4096)
|
||
|
||
# 初始化摄像头阈值
|
||
def canera_init():
|
||
# 摄像头模块初始化
|
||
sensor.reset() # 复位和初始化摄像头
|
||
sensor.set_pixformat(sensor.RGB565) # 设置像素格式为彩色 RGB565
|
||
# sensor.set_pixformat(sensor.GRAYSCALE) # 设置像素格式为灰色
|
||
sensor.set_framesize(sensor.QVGA) # 设置帧大小为QVGA(320×240)
|
||
sensor.set_vflip(1) # 后置模式
|
||
sensor.skip_frames(30) # # 跳过前30帧
|
||
|
||
canera_init()
|
||
|
||
def Servo(angle):
|
||
'''
|
||
说明:舵机控制函数
|
||
功能:180度舵机:angle:-90至90 表示相应的角度
|
||
360连续旋转度舵机:angle:-90至90 旋转方向和速度值。
|
||
【duty】占空比值:0-100
|
||
'''
|
||
#PWM通过定时器配置,接到IO17引脚
|
||
tim_pwm = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
|
||
S1 = PWM(tim_pwm, freq=50, duty=0, pin=17)
|
||
S1.duty((angle+90)/180*10+2.5)
|
||
|
||
Servo(0)
|
||
|
||
res_QR = []
|
||
|
||
timeflag = 0
|
||
while (timeflag < 30):
|
||
# for i in range(9):
|
||
img = sensor.snapshot() # 获取图像
|
||
lcd.display(img) # 在LCD显示
|
||
TS_QR = img.find_qrcodes() # 再次寻找二维码
|
||
for qr in TS_QR:
|
||
if all(qr.payload() != existing_qr.payload() for existing_qr in res_QR):
|
||
res_QR.append(qr)
|
||
timeflag+=1
|
||
time.sleep(0.001)
|
||
print(timeflag)
|
||
print(len(res_QR))
|
||
|
||
for res in res_QR:
|
||
result = res.payload()
|
||
print(result) |