【智控万物】控制“3D的我”
本帖最后由 云天 于 2021-1-28 12:15 编辑【项目介绍】1、手势传感器控制3D贴图Box
2、超声波控制3D球
3、人脸识别控制彩灯
【贴图Box】
演示视频
https://v.youku.com/v_show/id_XNTA4NzMzNzkzNg==.html
程序代码(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
Board("uno").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
scene2 = canvas(width=900, height=400, center=vector(0,0,0), background=color.cyan)
#如果使用的是VPython 7,则可以在自己的计算机上使用纹理。纹理文件必须与程序文件位于同一目录(在这种情况下,您将指定texture ='T.jpg'),或者在该目录的子目录中(例如,texture ='images / T.jpg') 。
Box = box(texture ='1.jpg',pos=vector(0,0,0), axis = vector(10,20,10),size=vector(20,20,20), color=color.white)
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():
for i in range(360):
rate(100)
Box.rotate(angle=radians(-t),axis = vector(0,1,0),origin=vector(0,0,0))
def RIGHT():
for i in range(360):
rate(100)
Box.rotate(angle=radians(t),axis = vector(0,1,0),origin=vector(0,0,0))
def UP():
for i in range(360):
rate(100)
Box.rotate(angle=radians(-t),axis = vector(1,0,0),origin=vector(0,0,0))
def DOWN():
for i in range(360):
rate(100)
Box.rotate(angle=radians(t),axis = vector(1,0,0),origin=vector(0,0,0))
dtheta=0.05
theta=0
while True:
description,gesture = paj.get_gesture()
if description == "Left":
LEFT()
if description == "Right":
RIGHT()
if description == "Up":
UP()
if description == "Down":
DOWN()
【Box透明度】
通过为属性“ opacity”指定一个介于0-1(含0)之间的值,可以使大多数对象透明。例如,box(color = color.red,opacity = 0.8)稍微透明。不透明度值为0表示完全透明,而1表示完全不透明。当前,曲线和螺旋对象不允许透明。
https://v.youku.com/v_show/id_XNTA4NzU5OTY4MA==.html
【超声波控制】
URM10
https://v.youku.com/v_show/id_XNTA4NzgyNzMxMg==.html
#超声波
#接线:使用windows或linux电脑连接一块arduino主控板,使用SR04或URM10超声波,Trig接D7,Echo接D8
from vpython import *
import time
from pinpong.board import Board,Pin,SR04_URM10 #中导入SR04_URM10
Board("uno").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
TRIGER_PIN = Pin(Pin.D7)
ECHO_PIN = Pin(Pin.D8)
sonar = SR04_URM10(TRIGER_PIN,ECHO_PIN)
scene2 = canvas(width=900, height=400, center=vector(0,0,0), background=color.black)
ball = sphere(pos=vector(0,0,0),radius=2,texture =textures.wood,)
t = 1
dtheta=0.5
theta=0
i=0
while(1): # get a frame and show
rate(50)
dis = sonar.distance_cm() #获取距离,单位厘米(cm)
if dis!=0:
ball.pos.x=dis
print(dis)
【Opencv-Python】
安装Mind+的Python模式下的Opencv-Python库
获取人脸识别训练数据
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”中找到。
控制neopixel:WS2812灯带
#实验效果:控制WS2812单线RGB LED灯
#接线:使用windows或linux电脑连接一块arduino主控板,ws2812灯接到D9口
import time
from pinpong.board import Board,Pin,NeoPixel #导入neopixel类
Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
NEOPIXEL_PIN = Pin(Pin.D9)
PIXELS_NUM = 4 #灯数
np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
while True:
np = (0, 255 ,0) #设置第一个灯RGB亮度
np = (255, 0, 0) #设置第二个灯RGB亮度
np = (0, 0, 255) #设置第三个灯RGB亮度
np = (255, 0, 255) #设置第四个灯RGB亮度
print("color 1")
time.sleep(1)
np = (0, 255, 0)
np = (255, 0, 0)
np = (255, 255, 0)
np = (0, 0, 255)
print("color 2")
time.sleep(1)
人脸识别控制彩灯
https://v.youku.com/v_show/id_XNTA4Nzk0OTg1Ng==.html
代码如下:
#接线:使用windows或linux电脑连接一块arduino主控板,ws2812灯接到D9口
from vpython import *
import time
from pinpong.board import Board,Pin,NeoPixel #导入neopixel类
import cv2
Board("uno").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
NEOPIXEL_PIN = Pin(Pin.D9)
PIXELS_NUM = 7 #灯数
np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
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')
cap = cv2.VideoCapture(0)
while(1): # get a frame and show
ret, frame = cap.read()
if(ret):
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,scaleFactor = 1.15,minNeighbors = 5,minSize = (5,5))
for(x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+w),(0,255,0),2)
if len(faces)>0:
for i in range(7):
np=(255,0,0)
else:
for i in range(7):
np=(0,0,0)
cv2.imshow('Capture', frame) # change to hsv model
if cv2.waitKey(1) & 0xFF == ord('q'):
break 云天老师创作力爆表! 云天老师放假了吗? gray6666 发表于 2021-1-28 10:03
云天老师放假了吗?
在河北,早放假了 from pinpong.board import Board,Pin,SR04_URM10
pingppong 支持的类似模块说明文档在哪里可以找到? gray6666 发表于 2021-1-29 09:57
from pinpong.board import Board,Pin,SR04_URM10
pingppong 支持的类似模块说明文档在哪里可以找到? ...
https://pinpong.readthedocs.io/zh_CN/latest/2.pinpong%E7%A4%BA%E4%BE%8B/index3.html
页:
[1]