2022-2-26 17:23:40 [显示全部楼层]
4253浏览
查看: 4253|回复: 0

手势控制电机运动

[复制链接]
本帖最后由 gada888 于 2022-2-27 13:42 编辑

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

手势控制电机运动图6
配件清单
编号 品名 数量 链接
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

一,介绍下电机和灯光模块手势控制电机运动图1
手势控制电机运动图2
电位器的模拟口就是我即将使用的模拟变数字口。后面还会讲到。

二 介绍下手势模块

PAJ7620U2手势识别传感器是一款以IIC通信的3D手势识别交互式传感器。工作电流仅3.5mA, 手势识别距离达20mm。在最远20cm范围内,可以识别的手势多达13种。该手势传感器具备良好的手势识别稳定性,反应快,准确率高,可识别多种手势。支持两种手势识别模式,高速模式(可识别9种)和低速模式(可识别13种)。支持用户自定义识别手势。

PAJ7620U2手势识别传感器在高速模式下可识别上,下,左,右,前,后,顺时针,逆时针,快速挥手。而低速模式除了支持高速基础包含的所有手势外,还支持慢速上下,慢速左右,慢速前后,乱序。此外,低速模式可以自定义单位采样时间,还可根据自己需要轻松定义识别手势。


三 看下连线图

手势控制电机运动图3

PAJ7620U2是IIC连接口,灯光和电机模块用了数字口D6.刚才说到模块赋予ADC的口可以接UNO的数字口,是真的吗?首先数字口接收的是0或1的值,模拟口接收的是0-255的任意值。但其实A0-A5适用于模拟和数字口。本例可以理解为用ADC口去采集到了0-1023间的一个数字信号。不知这么说你们能不能听明白。


四 看下程序在mind+里运行的情况

手势控制电机运动图4

我们看下方python打印的信息。其中包括很重要的部分在下图

手势控制电机运动图5

这里有每个动作的代码和定义。根据这个定义(decription)做一个判断,我们很轻松的完成控制电机的代码

if description == "Left":
motor.write_digital(1)

当然首先要对电机的针脚进行定义,用‘电机和灯光模块’的模拟口连Arduino的D6数字口。

motor = Pin(Pin.D6, Pin.OUT)

下面是完整代码

  1. #实验效果:读取I2C PAJ7620U2手势传感器
  2. #接线:使用windows或linux电脑连接一块arduino主控板,手势传感器接到I2C口SCL SDA
  3. import time
  4. from pinpong.board import Board
  5. from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture
  6. from pinpong.board import Board,Pin
  7. #Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
  8. Board("uno","COM6").begin()  #windows下指定端口初始化
  9. motor = Pin(Pin.D6, Pin.OUT)
  10. paj = PAJ7620U2()
  11. paj.set_gesture_high_rate()            #设置高速模式
  12. #paj.set_gesture_low_rate()            #设置低速模式
  13. Gesture.print_all()
  14. while True:
  15.   description,gesture = paj.get_gesture()
  16.   if gesture != Gesture.none:
  17.     print("gesture code         =%s"%gesture)
  18.     print("gesture description  =%s"%description)
  19.   if description == "Left":
  20.     motor.write_digital(1)
  21.   if description == "Right":
  22.     motor.write_digital(0)
  23.         
复制代码








您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail