2018-9-26 10:09:53 [显示全部楼层]
7461浏览
查看: 7461|回复: 1

[入门教程] 【掌控】mpython-2…一起爱上掌控

[复制链接]
mpthon-2…一起爱上掌控

【掌控】mpython-2…一起爱上掌控图1

请看小视频。


【学习小目标:】
1、了解掌控的6个触摸引脚,学习触摸引脚使用。
2、了解掌控蜂鸣器的引脚,了解音符和频率的关系。
3、学习用代码编程,用掌控的触摸引脚弹奏一首简单的曲子。
4、学习while循环,if  elif  条件分支。

【学习准备:】
1、掌控的引脚定义。
【掌控】mpython-2…一起爱上掌控图2
【掌控】mpython-2…一起爱上掌控图3【掌控】mpython-2…一起爱上掌控图5
当前使用时还要对照一下掌控板ESP32的引脚定义。

本教程中用到的有掌控正面的6个电容数字触摸引脚,分别是
touchPad_P Pin(27)
touchPad_Y Pin(14)
touchPad_T Pin(12)
touchPad_H Pin(13)
touchPad_O Pin(15)
touchPad_N Pin(4)
这个单词也表明了掌控为了编程教育而生。

蜂鸣器的引脚buzz PWM(Pin(16))

这些都定义好了,后面也不需修改。
2、音符和频率的关系
【掌控】mpython-2…一起爱上掌控图4
下面例程中用了不标准的频率值,你要准确的音符,请参考上面修改。
其它调值自己查资料吧。

【一起爱上掌控例程代码:】
[mw_shl_code=applescript,true]
[mw_shl_code=python,true]from mpython import *  # 导入掌控内置传感器库
import time  # 导入时间库

buzz = PWM(Pin(16), freq = 500, duty = 0)  # 定义蜂鸣器引脚

# 蜂鸣器响一下
buzz.freq(300)  # 频率300
buzz.duty(512)  # 音量512
time.sleep_ms(100)  # 时长100ms
buzz.duty(0)  # 然后音量设为0

display.fill(0)  #  清屏
display.show()  # 刷新屏幕

while True:   
    if(touchPad_P.read() < 100):  # 如果P被触摸
        buzz.freq(300)  # 频率300
        buzz.duty(512)  # 音量512
        display.DispChar('一', 0 + 15, 24)  # 显示字符 一 ,位置,X,0+15,Y, 24
        time.sleep_ms(20)  # 延时20毫秒
    elif(touchPad_Y.read() < 100):
        buzz.freq(400)
        buzz.duty(512)
        display.DispChar('起', 15 + 15, 24)
        time.sleep_ms(20)
    elif(touchPad_T.read() < 100):
        buzz.freq(500)
        buzz.duty(512)
        display.DispChar('爱', 30 + 15, 24)
        time.sleep_ms(20)
    elif(touchPad_H.read() < 100):
        buzz.freq(600)
        buzz.duty(512)
        display.DispChar('上', 45 + 15, 24)
        time.sleep_ms(20)
    elif(touchPad_O.read() < 100):
        buzz.freq(700)
        buzz.duty(512)
        display.DispChar('掌', 60 + 15, 24)
        time.sleep_ms(20)
    elif(touchPad_N.read() < 100):
        buzz.freq(800)
        buzz.duty(512)
        display.DispChar('控', 75 + 15, 24)
        time.sleep_ms(20)
    else:
        display.show()  #  刷新屏幕显示
        buzz.freq(300)
        buzz.duty(0)[/mw_shl_code]

代码解读:
[mw_shl_code=applescript,true]from mpython import *  导入掌控库,此库为掌控板内置传感器驱动
import time                  导入运行时间

buzz = PWM(Pin(16), freq = 500, duty = 0)   初始化蜂鸣器引脚

buzz.freq(300)                                                 开机运行时嘀一下,频率300,音量512,时长100ms
buzz.duty(512)
time.sleep_ms(100)
buzz.duty(0)

while True:                                                        重复执行
#  print('Y:%d, T:%d, H:%d, O:%d' % (touchPad_Y.read(),touchPad_T.read(),touchPad_H.read(),touchPad_O.read()))
    if(touchPad_P.read() < 100):                        如果触摸按键P被触摸
        buzz.freq(300)                                          蜂鸣器响频率300
        buzz.duty(512)                                         音量512
        display.DispChar('一', 0+15, 24)               OLED屏显示“一”,位置,点阵X,0+15,Y,24
        time.sleep_ms(20)
    elif(touchPad_Y.read() < 100):                     如果触摸按键Y被触摸(后面类似)
        buzz.freq(400)
        buzz.duty(512)
        display.DispChar('起', 15+15, 24)
        time.sleep_ms(20)
    elif(touchPad_T.read() < 100):
        buzz.freq(500)
        buzz.duty(512)
        display.DispChar('爱', 30+15, 24)
        time.sleep_ms(20)
    elif(touchPad_H.read() < 100):
        buzz.freq(600)
        buzz.duty(512)
        display.DispChar('上', 45+15, 24)
        time.sleep_ms(20)
    elif(touchPad_O.read() < 100):
        buzz.freq(700)
        buzz.duty(512)
        display.DispChar('掌', 60+15, 24)
        time.sleep_ms(20)
    elif(touchPad_N.read() < 100):
        buzz.freq(800)
        buzz.duty(512)
        display.DispChar('控', 75+15, 24)
        time.sleep_ms(20)
    else:
        display.show()
        buzz.freq(300)
        buzz.duty(0)[/mw_shl_code]
补个中秋快乐的视频。;P

【拓展任务】  
    1、自己编写代码由传掌控并运行,弹首小星星吧。两个合作,可以更多音符出来哦。
    2、写出其它自己觉得好玩有趣的代码。



rzyzzxw  版主
 楼主|

发表于 2018-9-26 19:56:52

帖子写得早了点,软件还在不断优化测试中,掌控库文件也在完善中,所以后面正式软件发布后,再修订一下吧。
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail