【试用测评】pinpong板——MPU6050控制物理沙盒
【pinpong板】
PinPong Board是一款专为学习Python语言而设计的课堂类教学主板,可以满足用户所有需求,不仅可以用来制作智能检测设备,还可以制作成无线通讯设备,实现智能家居以及人工智能等。
一、产品特点
1、PinPong Board完全兼容传统的Arduino,还在Arduino原有功能的基础上集成了2路电机驱动、OLED显示、红外接收/发射、光线传感器、声音传感器、温湿度传感器、陀螺仪等新型传感器等硬件功能。
2、WiFi与局域网相连接可以实现无线下载程序功能,让你摆脱USB线的束缚。远距离的更新程序,同一个局域网内的设备可以进行无线传输,主从机设置,甚至一个PC端同时控制局域网内的所有设备。
3、基于Python编程,提供PinPong使用教程及大量的example,方便学习使用Python驱动硬件。
4、多元化编程方式和编程平台,可依据学习情况选择Python图形化编程、Python语言编程不同的编程方式;Mind+、Python等编程平台为开发者提供了极大的自由度和支持准备。
【pyPhysicsSandbox 】
pyPhysicsSandbox 是基于 Pymunk 的一个 2D 物理库,他可以很容易的通过 Python 实现对 2D 物理引擎的模拟。
【程序代码】
from pyphysicssandbox import *
# -*- coding: utf-8 -*-
#效果:打印检测到的加速度与角速度
#接线:使用windows电脑连接一块arduino主控板
import time
from math import *
from pinpong.board import Board
from pinpong.libs.dfrobot_mpu6050 import MPU6050
K1 =0.05 # 对加速度计取值的权重
dt=20*0.001#注意:dt的取值为滤波器采样时间
angle1=0.0
Board("PinPong Board").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
accelgyro = MPU6050()
accelgyro.init()
if accelgyro.connection():
print("MPU6050 connection successful")
else:
print("MPU6050 connection failed")
window("Python物理沙盒测试程序", 1024, 600)
gravity(0.0, 500.0) #设定重力参数
floor = static_rounded_box((0,570), 1024, 25, 3) # 最下面的地板,静止的
floor.color = Color('brown')
floor.friction=1.0 #摩擦力
floor.elasticity=0.5 #弹性
box2 = static_rounded_box((974,320), 50, 250, 5 ) # 右下品红色的圆角正方形
box2.color = Color('magenta')
box3 = static_rounded_box((0,320), 50, 250, 5 ) # 左下品红色的圆角正方形
box3.color = Color('magenta')
wheel1 = ball((500, 130), 30)
wheel1.color = Color('green')
wheel1.draw_radius_line=True
wheel1.friction = 1 #摩擦力
wheel1.elasticity=0.5 #弹性
wheel1.wrap= False
wheel2 = ball((600, 130), 30)
wheel2.color = Color('green')
wheel2.draw_radius_line=True
wheel2.friction = 1 #摩擦力
wheel2.elasticity=0.5 #弹性
wheel2.wrap= False
chassis=box((470,0),160,100)
chassis.color=Color("blue")
pin((500,130),wheel1,(470,0),chassis)
pin((500,130),wheel1,(470,100),chassis)
pin((600,130),wheel2,(630,0),chassis)
pin((600,130),wheel2,(630,100),chassis)
def my_observer(keys):
global K1 ,dt,angle1
buf = accelgyro.get_motion6()
ax=buf
az=buf
gy=buf
angleAx=atan2(ax,az)*180/3.1415926 #加速度计算角度
gyroGy=-gy/131.00 #陀螺仪角速度,注意正负号与放置有关
#一阶互补滤波
angle1 = K1 * angleAx +(1-K1) * (angle1 +gyroGy * dt)
#print("ax:{} ay:{} az:{} gx:{} gy:{} gz:{}".format(buf, buf, buf,buf,buf,buf))
print(angle1)
motor(wheel1,angle1)
motor(wheel2,angle1)
time.sleep(20*0.001)
add_observer(my_observer)
run()
print("测试完成")
【视频演示】
https://v.youku.com/v_show/id_XNTE0NjYzOTIzMg==.html
#语音播报模块
import pyttsx3
#实验效果:使用D8按钮控制外接LED灯亮灭
#接线:使用windows电脑连接一块PinPong主控板,主控板D7接一个LED模块
import time
from pinpong.board import Board,Pin,ADC#导入ADC类实现模拟输入
#模块初始化
Board("PinPong Board").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
adc0 = ADC(Pin(Pin.A3)) #将Pin传入ADC中实现模拟输入
btn = Pin(Pin.D8, Pin.IN) #引脚初始化为电平输入
engine = pyttsx3.init()
print('准备开始语音播报...')
#设置发音速率,默认值为200
rate = engine.getProperty('rate')
engine.setProperty('rate', rate - 50)
#设置发音大小,范围为0.0-1.0
volume = engine.getProperty('volume')
engine.setProperty('volume', 0.6)
#设置默认的声音:voices.id代表男生,voices.id代表女生
voices = engine.getProperty('voices')
engine.setProperty('voice', voices.id)
i=0
while True:
v = btn.read_digital()#读取引脚电平
if v:
i=1-i
if i:
#添加朗读文本
engine.say(str(adc0.read()))#读取A0口模拟信号数值
#等待语音播报完毕
engine.runAndWait()
学习python进行中,云台的文章很赞,
页:
[1]