4620浏览
查看: 4620|回复: 5

[项目] 【智控万物】控制“3D的我”

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

【智控万物】控制“3D的我”图1

【项目介绍】
1、手势传感器控制3D贴图Box
2、超声波控制3D球
3、人脸识别控制彩灯

【贴图Box】
演示视频

程序代码(Mind+的Python模式
【智控万物】控制“3D的我”图3

  1. #I2C PAJ7620U2手势传感器
  2. #接线:使用windows或linux电脑连接一块Arduino主控板,手势传感器接到I2C口SCL SDA
  3. from vpython import *
  4. import time
  5. from pinpong.board import Board
  6. from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture
  7. Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
  8. scene2 = canvas(width=900, height=400, center=vector(0,0,0), background=color.cyan)
  9. #如果使用的是VPython 7,则可以在自己的计算机上使用纹理。纹理文件必须与程序文件位于同一目录(在这种情况下,您将指定texture ='T.jpg'),或者在该目录的子目录中(例如,texture ='images / T.jpg') 。
  10. Box = box(texture ='1.jpg',pos=vector(0,0,0), axis = vector(10,20,10),size=vector(20,20,20), color=color.white)
  11. label( pos=vector(0,15,0), text='YunTian' )
  12. t = 1
  13. paj = PAJ7620U2()
  14. paj.set_gesture_high_rate()            #设置高速模式
  15. #paj.set_gesture_low_rate()            #设置低速模式
  16. Gesture.print_all()
  17. def LEFT():
  18. for i in range(360):
  19.   rate(100)
  20.   Box.rotate(angle=radians(-t),axis = vector(0,1,0),origin=vector(0,0,0))
  21. def RIGHT():
  22. for i in range(360):
  23.   rate(100)
  24.   Box.rotate(angle=radians(t),axis = vector(0,1,0),origin=vector(0,0,0))
  25. def UP():
  26. for i in range(360):
  27.   rate(100)
  28.   Box.rotate(angle=radians(-t),axis = vector(1,0,0),origin=vector(0,0,0))  
  29. def DOWN():
  30. for i in range(360):
  31.   rate(100)
  32.   Box.rotate(angle=radians(t),axis = vector(1,0,0),origin=vector(0,0,0))  
  33. dtheta=0.05
  34. theta=0
  35. while True:
  36.   description,gesture = paj.get_gesture()
  37.   if description == "Left":
  38.     LEFT()
  39.   if description == "Right":
  40.     RIGHT()
  41.   if description == "Up":
  42.     UP()
  43.   if description == "Down":
  44.     DOWN()
复制代码

【Box透明度】
通过为属性“ opacity”指定一个介于0-1(含0)之间的值,可以使大多数对象透明。例如,box(color = color.red,opacity = 0.8)稍微透明。不透明度值为0表示完全透明,而1表示完全不透明。当前,曲线和螺旋对象不允许透明。
【智控万物】控制“3D的我”图4


【超声波控制】
【智控万物】控制“3D的我”图5
【智控万物】控制“3D的我”图6

URM10


  1. #超声波
  2. #接线:使用windows或linux电脑连接一块arduino主控板,使用SR04或URM10超声波,Trig接D7,Echo接D8
  3. from vpython import *
  4. import time
  5. from pinpong.board import Board,Pin,SR04_URM10 #中导入SR04_URM10
  6. Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
  7. TRIGER_PIN = Pin(Pin.D7)
  8. ECHO_PIN = Pin(Pin.D8)
  9. sonar = SR04_URM10(TRIGER_PIN,ECHO_PIN)
  10. scene2 = canvas(width=900, height=400, center=vector(0,0,0), background=color.black)
  11. ball = sphere(pos=vector(0,0,0),radius=2,texture =textures.wood,)
  12. t = 1
  13. dtheta=0.5
  14. theta=0
  15. i=0
  16. while(1):    # get a frame and show   
  17.    rate(50)
  18.    dis = sonar.distance_cm() #获取距离,单位厘米(cm)
  19.    if dis!=0:
  20.       ball.pos.x=dis
  21.    print(dis)
复制代码

【Opencv-Python】

安装Mind+的Python模式下的Opencv-Python库
【智控万物】控制“3D的我”图2


获取人脸识别训练数据
https://github.com/opencv/opencv/tree/master/data/haarcascades

Mind+中python模式安装好opencv-pyhton库后,可在:“mindplus-py\environment\Python3.6.5-64\Lib\site-packages\cv2\data”中找到。

【智控万物】控制“3D的我”图7
控制neopixel:WS2812灯带

  1. #实验效果:控制WS2812单线RGB LED灯
  2. #接线:使用windows或linux电脑连接一块arduino主控板,ws2812灯接到D9口
  3. import time
  4. from pinpong.board import Board,Pin,NeoPixel #导入neopixel类
  5. Board("uno").begin()               #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
  6. #Board("uno","COM36").begin()      #windows下指定端口初始化
  7. #Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
  8. #Board("uno","/dev/cu.usbmodem14101").begin()   #mac下指定端口初始化
  9. NEOPIXEL_PIN = Pin(Pin.D9)
  10. PIXELS_NUM = 4 #灯数
  11. np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
  12. while True:
  13.     np[0] = (0, 255 ,0) #设置第一个灯RGB亮度
  14.     np[1] = (255, 0, 0) #设置第二个灯RGB亮度
  15.     np[2] = (0, 0, 255) #设置第三个灯RGB亮度
  16.     np[3] = (255, 0, 255) #设置第四个灯RGB亮度
  17.     print("color 1")
  18.     time.sleep(1)
  19.     np[1] = (0, 255, 0)
  20.     np[2] = (255, 0, 0)
  21.     np[3] = (255, 255, 0)
  22.     np[0] = (0, 0, 255)
  23.     print("color 2")
  24.     time.sleep(1)
复制代码

人脸识别控制彩灯
【智控万物】控制“3D的我”图8


代码如下:

  1. #接线:使用windows或linux电脑连接一块arduino主控板,ws2812灯接到D9口
  2. from vpython import *
  3. import time
  4. from pinpong.board import Board,Pin,NeoPixel #导入neopixel类
  5. import cv2
  6. Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
  7. NEOPIXEL_PIN = Pin(Pin.D9)
  8. PIXELS_NUM = 7 #灯数
  9. np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
  10. face_cascade = cv2.CascadeClassifier(r'C:/Users/zlzx/Documents/mindplus-py/environment/Python3.6.5-64/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
  11. cap = cv2.VideoCapture(0)
  12. while(1):    # get a frame and show   
  13.    ret, frame = cap.read()
  14.    if(ret):
  15.     gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
  16.     faces = face_cascade.detectMultiScale(gray,scaleFactor = 1.15,minNeighbors = 5,minSize = (5,5))
  17.     for(x,y,w,h) in faces:
  18.        cv2.rectangle(frame,(x,y),(x+w,y+w),(0,255,0),2)
  19.     if len(faces)>0:
  20.        for i in range(7):
  21.            np=(255,0,0)
  22.     else:
  23.        for i in range(7):
  24.            np=(0,0,0)      
  25.     cv2.imshow('Capture', frame)    # change to hsv model   
  26.     if cv2.waitKey(1) & 0xFF == ord('q'):
  27.       break
复制代码

szjuliet  版主

发表于 2021-1-28 08:49:24

云天老师创作力爆表!
回复

使用道具 举报

gray6666  初级技神

发表于 2021-1-28 10:03:36

云天老师放假了吗?
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2021-1-28 12:10:49

gray6666 发表于 2021-1-28 10:03
云天老师放假了吗?

在河北,早放假了
回复

使用道具 举报

gray6666  初级技神

发表于 2021-1-29 09:57:07

from pinpong.board import Board,Pin,SR04_URM10
pingppong 支持的类似模块说明文档在哪里可以找到?
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2021-1-29 11:46:58

gray6666 发表于 2021-1-29 09:57
from pinpong.board import Board,Pin,SR04_URM10
pingppong 支持的类似模块说明文档在哪里可以找到? ...

https://pinpong.readthedocs.io/z ... 4%BE%8B/index3.html
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail