云天 发表于 2021-1-27 22:55:16

【智控万物】控制“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

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/zh_CN/latest/2.pinpong%E7%A4%BA%E4%BE%8B/index3.html
页: [1]
查看完整版本: 【智控万物】控制“3D的我”