rzyzzxw 发表于 2018-11-15 08:38:01

【掌控】mpython-27…模拟输入输出测试:呼吸灯&调速风扇&声...

加上扩展后,掌控板打开了一个新天地。
外接电子模块让掌控如虎添翼。

这个帖子来进行模拟输入输出测试。



模拟输入是将模拟信号转换为数字信号,简称ADC。

ADC,Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。模/数转换器可以实现这个功能,在各种不同的产品中都可以找到它的身影。


模拟输出是通过IO引脚输出脉宽调制信号,输出指定的电压值,简称PWM。


脉宽调制(PWM,Pulse Width Modulation)是一种模拟控制方脉冲宽度调制,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。  PWM就是脉冲宽度调制,也就是占空比可变的脉冲波形。该技术以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。http://editerupload.eepw.com.cn/201506/a5ce999f57c6316f7df49d76c0501c60.jpg【实验目的】
1、认识掌控模拟输入输出引脚,初步学习掌控模拟引脚的使用
2、点灯一个外接LED灯,并能用旋钮来控制它的亮度3、其它模拟输入输出设备测试及小项目

【器材准备】
1、掌控板 1
2、DF micro:bit电机扩展板 1 (含电源线)
3、旋钮    1
4、LED灯 1
5、小风扇1
6、音量传感器1
【1】测试旋钮的读数值


旋钮接 P2读数 0---4059

再看下掌控引脚定义。




# analog io text
from mpython import *

p2 = MPythonPin(2, PinMode.ANALOG)# 创建引脚对象p2 模拟输入模式

while True:   
    pinin = p2.read_analog()# 将p2引脚读取模拟值存入变量pinin
    display.fill(0)
    display.DispChar(str(pinin),16, 16)# 显示 变量值 在16,16坐标 str将数字转换为字符串
    display.show()
因为adc采样数据宽度为12bit,所以满量程为4095。
接下来,你可以在引脚2,接入阻性的电子器件,如光敏、热敏电阻。观察测量的输入值变化。

我接入了DF的光线传感器进去,哇,好灵敏啊,用外接光线传感器做物联光线项目应该很棒的。

【2】PWM输出,呼吸灯
掌控PWM输出的范围0--1023



渐亮

# analog io text
from mpython import *
import time # 导入时间库

p0=MPythonPin(0, PinMode.PWM)    # 创建引脚对象p0 输出模式 pwm
p2 = MPythonPin(2, PinMode.ANALOG)# 创建引脚对象p2 模拟输入模式

while 1:
    for i in range(1024):
      p0.write_analog(i)
      time.sleep_ms(1)
渐亮渐暗

# analog io text
from mpython import *
import time # 导入时间库

p0=MPythonPin(0, PinMode.PWM)    # 创建引脚对象p0 输出模式 pwm
p2 = MPythonPin(2, PinMode.ANALOG)# 创建引脚对象p2 模拟输入模式

while 1:
    for i in range(1024):
      p0.write_analog(i)
      time.sleep_ms(1)
    for i in range(1023, 0, -1):
      p0.write_analog(i)
      time.sleep_ms(1)
哈哈,换上小风扇,风扇也忽快忽慢转起来。
老师,你好坏。{:5_146:}

【3】调速风扇



本例中,风扇接p0,旋钮接p2.

# analog io text
from mpython import *

p0 = MPythonPin(0, PinMode.PWM)    # 创建引脚对象p0 输出模式 pwm
p2 = MPythonPin(2, PinMode.ANALOG)# 创建引脚对象p2 模拟输入模式

while 1:
    p0.write_analog(int(p2.read_analog()/4))
   

输入0-4059,输出0-1023,用4除取整。

换成LED灯,立马变成调光灯。{:5_146:}

【4】声控灯测试

声音传感器接P2,先用第一段代码测试传感器的读数。

环境燥音的值达到了1200+。邻居家小狗叫也会让数值增加一些。
相比板载音量传感器,外接音量传感器的灵敏度还是好很多。拍下手,轻松超过1400+。


# analog io text
from mpython import *
import time# 导入时间库

p0 = MPythonPin(0, PinMode.OUT)    # 创建引脚对象p0 数字输出模式
p2 = MPythonPin(2, PinMode.ANALOG)# 创建引脚对象p2 模拟输入模式

item = 1
while 1:
    if p2.read_analog() > 1400:
      if item == 1:
            p0.write_digital(1)# 对引脚写高电平
            item = 0
      else:
            p0.write_digital(0)
            item = 1
    time.sleep_ms(200)
   

【拓展练习】
电子蜡烛等等超多小项目都可以玩起来了。

页: [1]
查看完整版本: 【掌控】mpython-27…模拟输入输出测试:呼吸灯&调速风扇&声...