gada888 发表于 2022-2-26 17:23:40

手势控制电机运动

本帖最后由 gada888 于 2022-2-27 13:42 编辑

最近一直再用python,想说用DF提供的pinpong库来写个程序。第一没离开python,第二能用到arduino。毕竟arduino用的比较顺手。好了,言归正传。今天做个什么呢。就是用PAJ7620U2手势识别传感和DF新出的电机和灯光调速模块来做个项目。因为这两个模块在工具盒里躺了很久了。得让它们出来热热身了。简单说。我会让手势识别两个动作,左和右,分别是Left和Right。left是电机启动,right是电机停止。PAJ7620U2是I2C模块。这个好连线。但如果再接个电机和灯光模块,代码量就会加大。为了简便。就巧妙的用了模块上的ADC接口做数字接口来使用。下面会有详细的介绍。https://www.bilibili.com/video/BV1v44y1n79S/


配件清单

编号 品名 数量 链接
1 Romeo 三合一Arduino兼容控制器 1 https://www.dfrobot.com.cn/goods-54.html
2 PAJ7620U2 手势识别传感器 1 https://www.dfrobot.com.cn/goods-2677.html
3 电机及灯光驱动模块 1 https://www.dfrobot.com.cn/goods-3332.html
43v电机 1
5
6

一,介绍下电机和灯光模块

电位器的模拟口就是我即将使用的模拟变数字口。后面还会讲到。

二 介绍下手势模块
PAJ7620U2手势识别传感器是一款以IIC通信的3D手势识别交互式传感器。工作电流仅3.5mA, 手势识别距离达20mm。在最远20cm范围内,可以识别的手势多达13种。该手势传感器具备良好的手势识别稳定性,反应快,准确率高,可识别多种手势。支持两种手势识别模式,高速模式(可识别9种)和低速模式(可识别13种)。支持用户自定义识别手势。PAJ7620U2手势识别传感器在高速模式下可识别上,下,左,右,前,后,顺时针,逆时针,快速挥手。而低速模式除了支持高速基础包含的所有手势外,还支持慢速上下,慢速左右,慢速前后,乱序。此外,低速模式可以自定义单位采样时间,还可根据自己需要轻松定义识别手势。
三 看下连线图PAJ7620U2是IIC连接口,灯光和电机模块用了数字口D6.刚才说到模块赋予ADC的口可以接UNO的数字口,是真的吗?首先数字口接收的是0或1的值,模拟口接收的是0-255的任意值。但其实A0-A5适用于模拟和数字口。本例可以理解为用ADC口去采集到了0-1023间的一个数字信号。不知这么说你们能不能听明白。
四 看下程序在mind+里运行的情况我们看下方python打印的信息。其中包括很重要的部分在下图这里有每个动作的代码和定义。根据这个定义(decription)做一个判断,我们很轻松的完成控制电机的代码if description == "Left":
motor.write_digital(1)当然首先要对电机的针脚进行定义,用‘电机和灯光模块’的模拟口连Arduino的D6数字口。motor = Pin(Pin.D6, Pin.OUT)下面是完整代码#实验效果:读取I2C PAJ7620U2手势传感器
#接线:使用windows或linux电脑连接一块arduino主控板,手势传感器接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture
from pinpong.board import Board,Pin

#Board("uno").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
Board("uno","COM6").begin()#windows下指定端口初始化
motor = Pin(Pin.D6, Pin.OUT)

paj = PAJ7620U2()

paj.set_gesture_high_rate()            #设置高速模式
#paj.set_gesture_low_rate()            #设置低速模式

Gesture.print_all()

while True:
description,gesture = paj.get_gesture()
if gesture != Gesture.none:
    print("gesture code         =%s"%gesture)
    print("gesture description=%s"%description)
if description == "Left":
    motor.write_digital(1)
if description == "Right":
    motor.write_digital(0)
      







页: [1]
查看完整版本: 手势控制电机运动