笔者在前文中大致分析了pinpong板用途和使用环境,【PinPong Board】测评1:点灯贴 。
本文,就来谈谈pinpong板的实际应用。
因为DF官方没有提供pp板的相关教程,这里就不展开讲,只以产品经理在测试群里发的教程和示例代码为例,测试pp板板载各个传感器的功能。
步骤1 光线传感器:
光线传感器,接在A1口。示例代码里的注释说明也是接在A1口的,
但奇怪的是代码为什么却是去读了A2???
所以需要做一点点修改,如下代码:
#效果:打印PinPong主板板A1口模拟值
#接线:使用windows电脑连接一块PinPong主控板
import time
from pinpong.board import Board,Pin,ADC #导入ADC类实现模拟输入
Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别
adc1 = ADC(Pin(Pin.A1)) #将Pin传入ADC中实现模拟输入
while True:
v = adc1.read() #读取A2口模拟信号数值
print("light value =", v)
time.sleep(0.5)
运行后,我们可以看到,随着灯光的变化,程序能打印相关的变化量,取值区间应该是[0~1024],但是我用手机强光去照,最大只能到1019。。。看来极值处理地不错!!!
步骤2 声音传感器:
声音传感器接在A2口。代码运行正常,这里就不展示具体代码了。
声音传感器的取值范围也是:[0~1023],能到最大值 1023,可是为什么最小值会在400以上?(0除外)
继续黑人问号脸??????
步骤3 陀螺仪:
# -*- coding: utf-8 -*-
#效果:打印检测到的加速度与角速度
#接线:使用windows电脑连接一块arduino主控板
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_mpu6050 import MPU6050
Board("PinPong Board").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
accelgyro = MPU6050()
accelgyro.init()
if accelgyro.connection():
print("MPU6050 connection successful")
else:
print("MPU6050 connection failed")
while True:
buf = accelgyro.get_motion6()
print("ax:{} ay:{} az:{} gx:{} gy:{} gz:{}".format(buf[0], buf[1], buf[2],buf[3],buf[4],buf[5]))
time.sleep(0.5)
以上是陀螺仪的代码,我们可以看到,
Board("PinPong Board").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
这句代码,和光线传感器里的代码,
Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别
一会儿 “PinPong Board”, 一会儿 "uno"的,是为了说明这里的参数有多飘逸吗?还是说pp板无论是用
这两个参数的哪一个都可以?(因为pp板的核心是uno,实际上这里是通的,另外看了下源代码,这里的大小写可以任意。)
继续黑人问号脸???
静止时的输出结果是魔性的非标准值:
ax:2164 ay:-312 az:15808 gx:-208 gy:243 gz:134
先不说具体的参数介绍,难道工程师已经懒到连个出厂校准也不做吗????
另外通过X,Y,Z三个方向的测试,陀螺仪从效果上来看是运行正常的。
不过因为变化波动比较大, 参量就不好处理了(或者笔者太菜?),我觉得示例代码最好给个定量分析。
步骤4 其它
这次的测评先到这里,因为RGB灯在前文已经介绍,这里不再赘述。WIFI模块连不上也不说了。下次有机会再继续了解下板子上面的几个传感器。
不过为什么今天的三个传感器都是满满的槽点呢?难道是因为今晚的菜不香吗?酒不好喝吗?
嗯,我想也是的。
评论