【掌控】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、写出其它自己觉得好玩有趣的代码。
帖子写得早了点,软件还在不断优化测试中,掌控库文件也在完善中,所以后面正式软件发布后,再修订一下吧。{:5_140:}
页:
[1]