2018-11-15 08:38:01 [显示全部楼层]
5066浏览
查看: 5066|回复: 0

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

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

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

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

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

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


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


脉宽调制(PWM,Pulse Width Modulation)是一种模拟控制方脉冲宽度调制,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

  PWM就是脉冲宽度调制,也就是占空比可变的脉冲波形。该技术以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。

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

【实验目的】
1、认识掌控模拟输入输出引脚,初步学习掌控模拟引脚的使用
2、点灯一个外接LED灯,并能用旋钮来控制它的亮度3、其它模拟输入输出设备测试及小项目

【器材准备】
1、掌控板 1
2、DF micro:bit电机扩展板 1 (含电源线)【掌控】mpython-27…模拟输入输出测试:呼吸灯&调速风扇&声...图10
3、旋钮    1
4、LED灯 1
5、小风扇  1
6、音量传感器  1
【1】测试旋钮的读数值
【掌控】mpython-27…模拟输入输出测试:呼吸灯&调速风扇&声...图1

旋钮接 P2  读数 0---4059

再看下掌控引脚定义。

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

[mw_shl_code=python,true]# 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()[/mw_shl_code]
因为adc采样数据宽度为12bit,所以满量程为4095。
接下来,你可以在引脚2,接入阻性的电子器件,如光敏、热敏电阻。观察测量的输入值变化。

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

【2】PWM输出,呼吸灯
掌控PWM输出的范围  0--1023
【掌控】mpython-27…模拟输入输出测试:呼吸灯&调速风扇&声...图5

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

[mw_shl_code=python,true]# 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)[/mw_shl_code]
渐亮渐暗

[mw_shl_code=python,true]# 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)[/mw_shl_code]
哈哈,换上小风扇,风扇也忽快忽慢转起来。
老师,你好坏。

【3】调速风扇

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

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

[mw_shl_code=python,true]# 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))
    [/mw_shl_code]

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

换成LED灯,立马变成调光灯。

【4】声控灯测试

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

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

【掌控】mpython-27…模拟输入输出测试:呼吸灯&调速风扇&声...图7
[mw_shl_code=python,true]# 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)
    [/mw_shl_code]

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail