5398| 3
|
[项目] 【智控万物】手势传感器控制"3D物体"旋转 |
本帖最后由 云天 于 2021-1-27 15:02 编辑 【项目设计】 利用手势传感器,控制3D物体的旋转。 【手势传感器】 PAJ7620U2手势识别传感器是一款以IIC通信的3D手势识别交互式传感器。工作电流仅3.5mA, 手势识别距离达20mm。在最远20cm范围内,可以识别的手势多达13种。该手势传感器具备良好的手势识别稳定性,反应快,准确率高,可识别多种手势。支持两种手势识别模式,高速模式(可识别9种)和低速模式(可识别13种)。支持用户自定义识别手势。 PAJ7620U2手势识别传感器在高速模式下可识别上,下,左,右,前,后,顺时针,逆时针,快速挥手。而低速模式除了支持高速基础包含的所有手势外,还支持慢速上下,慢速左右,慢速前后,乱序。此外,低速模式可以自定义单位采样时间,还可根据自己需要轻松定义识别手势。 市面上主流的手势传感器可识别手势通常仅为六种,而对于非接触式遥控器,手势游戏机等应用,仅有的基础性6种识别模式完全不够。而PAJ7620U2手势识别传感器的出现,解决了手势识别模式欠缺的问题。PAJ7620U2手势识别传感器广泛适用于非接触式遥控器,机器人交互,手势操作游戏机,手势控制酷炫灯光等应用。 【PinPong】 PinPong中手势传感器演示代码: # -*- coding: utf-8 -*- #实验效果:读取I2C PAJ7620U2手势传感器 #接线:使用windows或linux电脑连接一块Arduino主控板,手势传感器接到I2C口SCL SDA import time from pinpong.board import Board from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别 #Board("uno","COM36").begin() #windows下指定端口初始化 #Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化 #Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化 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) 【控制Box】 演示视频 Mind+中Python代码: #I2C PAJ7620U2手势传感器 #接线:使用windows或linux电脑连接一块arduino主控板,手势传感器接到I2C口SCL SDA from vpython import * import time from pinpong.board import Board from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture import pyttsx3 engine = pyttsx3.init() Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别 Box = box(pos=vector(0,0,0), axis = vector(10,20,10),size=vector(20,20,20), color=color.green) label( pos=vector(0,15,0), text='YunTian' ) t = 1 paj = PAJ7620U2() paj.set_gesture_high_rate() #设置高速模式 #paj.set_gesture_low_rate() #设置低速模式 Gesture.print_all() def LEFT(): engine.say("左转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(-t),axis = vector(0,1,0),origin=vector(0,0,0)) def RIGHT(): engine.say("右转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(t),axis = vector(0,1,0),origin=vector(0,0,0)) def UP(): engine.say("上转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(-t),axis = vector(1,0,0),origin=vector(0,0,0)) def DOWN(): engine.say("下转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(t),axis = vector(1,0,0),origin=vector(0,0,0)) while True: description,gesture = paj.get_gesture() if description == "Left": LEFT() if description == "Right": RIGHT() if description == "Up": UP() if description == "Down": DOWN() 【旋转3D文字】 演示视频 编程代码 #I2C PAJ7620U2手势传感器 #接线:使用windows或linux电脑连接一块arduino主控板,手势传感器接到I2C口SCL SDA from vpython import * import time from pinpong.board import Board from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture import pyttsx3 engine = pyttsx3.init() Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别 scene2 = canvas(width=900, height=400, center=vector(0,0,0), background=color.cyan) Box = box(pos=vector(0,0,0), axis = vector(10,20,10),size=vector(20,20,20), color=color.green) label( pos=vector(0,15,0), text='YunTian' ) T = text(pos=vector(0,0,50),text='Yun Tian', align='center', color=color.red) T.height = 5 * T.height T.length = 5 * T.length t = 1 paj = PAJ7620U2() paj.set_gesture_high_rate() #设置高速模式 #paj.set_gesture_low_rate() #设置低速模式 Gesture.print_all() def LEFT(): engine.say("左转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(-t),axis = vector(0,1,0),origin=vector(0,0,0)) T.rotate(angle=radians(-t),axis = vector(0,1,0),origin=vector(0,0,0)) def RIGHT(): engine.say("右转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(t),axis = vector(0,1,0),origin=vector(0,0,0)) T.rotate(angle=radians(t),axis = vector(0,1,0),origin=vector(0,0,0)) def UP(): engine.say("上转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(-t),axis = vector(1,0,0),origin=vector(0,0,0)) T.rotate(angle=radians(-t),axis = vector(1,0,0),origin=vector(0,0,0)) def DOWN(): engine.say("下转") engine.runAndWait() for i in range(360): rate(100) Box.rotate(angle=radians(t),axis = vector(1,0,0),origin=vector(0,0,0)) T.rotate(angle=radians(t),axis = vector(1,0,0),origin=vector(0,0,0)) while True: description,gesture = paj.get_gesture() if description == "Left": LEFT() if description == "Right": RIGHT() if description == "Up": UP() if description == "Down": DOWN() 备注:程序中不能设置 文字深度(depth),出现如下错误,如果解决这个问题,会出另一个问题(我解决不了,呼叫DF技术员) 【彩蛋】 闺女手工刻制年画 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed