查看: 265|回复: 1

[项目] 【智控万物】手势传感器控制"3D物体"旋转

[复制链接]
本帖最后由 云天 于 2021-1-27 15:02 编辑

IMG_20210127_124521.jpg

【项目设计】

利用手势传感器,控制3D物体的旋转。

【手势传感器】

WedJanuary-202101273266..png

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文字】

IMG_20210127_142337.jpg



演示视频

编程代码

#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技术员)

WedJanuary-202101275725..png
WedJanuary-202101279459..png

【彩蛋】

闺女手工刻制年画

szjuliet  版主

发表于 2021-1-27 15:07:44

没有什么是云天老师驾驭不了的~
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail