rzyzzxw 发表于 2018-9-26 10:09:53

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

mpthon-2…一起爱上掌控



请看小视频。
http://v.youku.com/v_show/id_XMzgzMTkyNjY0NA==.html?spm=a2hzp.8244740.0.0

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

【学习准备:】
1、掌控的引脚定义。


当前使用时还要对照一下掌控板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、音符和频率的关系

下面例程中用了不标准的频率值,你要准确的音符,请参考上面修改。
其它调值自己查资料吧。

【一起爱上掌控例程代码:】

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)

代码解读:
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)
补个中秋快乐的视频。;P
http://v.youku.com/v_show/id_XMzgzNzk5MDMwOA==.html?spm=a2h3j.8428770.3416059.1
【拓展任务】
    1、自己编写代码由传掌控并运行,弹首小星星吧。两个合作,可以更多音符出来哦。
    2、写出其它自己觉得好玩有趣的代码。



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

帖子写得早了点,软件还在不断优化测试中,掌控库文件也在完善中,所以后面正式软件发布后,再修订一下吧。{:5_140:}
页: [1]
查看完整版本: 【掌控】mpython-2…一起爱上掌控