最近买了块pybase的板子,主要为了学习micropython,最后选择了01studio家的,不是我打广告,我博客也没人看,没有必要打广告哈哈,主要是他家的教程确实是全网最细的,昨天自学到蜂鸣器,DAC这一章了,突然反应过来,家里的热水器什么的那种自带音乐芯片的会不会也是这个玩意?自己也懂些乐器,所以干脆自己编个曲子得了,为了显示出硬核,来首贝多芬的月光奏鸣曲第三乐章好了。
先找到了音符与hz间的联系,乐理上大概是每半音相差1.06倍,也就是一个八度刚好差2倍,找了张图:
然后就是撸代码!


'''
实验名称:DAC-蜂鸣器-演奏月光奏鸣曲
版本:v1.0
日期:2021.1
作者:jd3096
说明:通过USER按键播放
'''#导入相关模块
from pyb import DAC,Switch,Pin,ExtInt,LED
from machine import Pin,I2C
from ssd1306 import SSD1306_I2C
import time#初始化相关模块
i2c = I2C(sda=Pin("Y8"), scl=Pin("Y6"))
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
dac = DAC(1)     #定义DAC对象名字为dac,输出引脚为X5#事先写好的谱子,把音符转化为HZ
play1=[138, 208, 278, 330, 416, 278, 330, 416, 554, 330, 416, 554, 660, 416, 554, 660, 830, 554, 660, 830, 1108, 660, 830, 1108, 1318, 830, 1108, 1318, 1662, 1, 1662, 1]
play2=[131,208,262,311,415,262,311,415,523,311,415,523,622,415,523,622,831,523,622,831,1047,622,831,1047,1245,831,1047,1245,1662,1,1662,1]
play3=[123,227,349,415,554,349,415,554,698,415,554,698,831,554,698,831,1108,698,831,1108,1397,831,1108,1397,1661,1108,1397,1661,2218,1,2218,1]
play4=[110,277,370,440,554,554,740,880,1109,1109,1480,1760,2217,1,2217,1,110,277,330,392,554,554,659,784,1109,1109,1319,1568,2218,1,2218,1]
play5=[2094,1,831,1661,831,1661,923,1661,1047,1661,1109,1661,1245,1661,1109,1661,1245,1661,1109,1661,1480,1661,1319,1661,1245,1661,1109,1661,1047,1661,880,1568]
play6=[831,1661,831,1661,831,1661,923,1661,1047,1661,1109,1661,1245,1661,1109,1661,1245,1661,1109,1661,1480,1661,1319,1661,1245,1661,1109,1661,1047,1661,880,1568]
play7=[831,1661,880,1568,831,1661,880,1568,831,1661,880,1568,831,1661,880,1568,1661,1661,1661,1661,831,831,831,831,831,831,831,831,831,831,831,831,1]
playlist=play1+play2+play3+play4+play5+play6+play7
# 定义8位精度下方波的值。0、255分别对应输出0V、3.3V。需要定义成字节数组。
buf = bytearray(2)
buf[0]=0
buf[1]=255tempo=0.1
# 定义了速度,0.1秒演奏一个音def playstart():oled.fill(0)  # 清屏显示黑色背景oled.text('Moonlight Sonata', 0, 0)  oled.text('3rd', 0, 15)oled.text('Beethoven', 0, 30)  oled.text('Playing...', 0, 45)  oled.show()for num in playlist:pl(num)def pl(hz):dac.write_timed(buf, hz*len(buf), mode=DAC.CIRCULAR)time.sleep(tempo)##############################################
#  OLED初始显示
##############################################
oled.fill(0)  # 清屏显示黑色背景
oled.text('Moonlight Sonata', 0, 0)
oled.text('3rd', 0, 15)
oled.text('Beethoven', 0, 30)
oled.text('Press USER', 0, 45)
oled.show()callback=lambda e:playstart()  #中断用法
ext=ExtInt(Pin('Y1'),ExtInt.IRQ_FALLING,Pin.PULL_UP,callback)

嗯,因为这个乐曲还是挺难的,平时听的这种音乐芯片都是什么兰花草、东方红啥的,有的还有明显的错误,这次费了我俩小时时间,把音符转换为HZ,最后整完了一听,很有电子那味儿嘛,就像网易云音乐评论里面说的,贝多芬放到现在绝壁是个金属摇滚大师!

用蜂鸣器来首月光奏鸣曲第三乐章怎么样相关推荐

  1. 【053】贝多芬《月光奏鸣曲》第一、三乐章

    贝多芬<月光奏鸣曲>第一乐章 点击播放 贝多芬<月光奏鸣曲>第三乐章 点击播放 简介: 贝多芬一生写了32首钢琴奏鸣曲,其中第14首<月光>最有名.这首<月光 ...

  2. 《预训练周刊》第16期:中科院推出全球首个图文音三模态预训练模型、顶会论文探索100层序列推荐模型的加速训练...

    No.16 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第16期&l ...

  3. Arduino UNO R3开发板+MQ-2烟雾浓度传感器+火焰传感器+舵机+无源蜂鸣器+风扇+步进电机+WIFI模块+RGB三色LED灯+SIM900A所构成的室内安全报警模块

    该系统模块主要由Arduino UNO R3开发板+MQ-2烟雾浓度传感器+火焰传感器+舵机+无源蜂鸣器+风扇+步进电机+WIFI模块+RGB三色LED灯+SIM900A所组成,MQ-2烟雾浓度传感器 ...

  4. 贝多芬的月光奏鸣曲第一乐章

    贝多芬的月光奏鸣曲第一乐章--- 2012.03.11 闲话 .. 今天是女儿一周假期的第一天,可她这周却排得满满的 .. 送她到学校后回到家,家里空荡荡的,我锁上门提前上班了 摇了摇头,心想: 好笑 ...

  5. 小学生怎样学习英语,ProudKids少儿英语推荐几首适合学英语的三年级英语歌曲

    对于三年级的学生来说,英语课堂难度不是很大.而学生们学习英语的方式也是多种多样的,下面小编为你介绍几首少儿三年级英语歌曲推荐.学生们可以在愉快的歌声中学习英语,大家可以看看几首少儿三年级英语歌曲推荐. ...

  6. 澜起科技发布业界首款DDR5第三子代寄存时钟驱动器工程样片

    上海-2022年12月1日,澜起科技宣布在业界率先推出DDR5第三子代寄存时钟驱动器(简称RCD或DDR5 RCD03)工程样片,并已向业界主流内存厂商送样,该产品将用于新一代服务器内存模组. 澜起科 ...

  7. 最全微信小程序demo

    wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...

  8. 为什么琴键要排成等比数列?

    钢琴的每个键频率是多少?频率的排列有什么关系?黑白键的排列方式是出于什么原因?为什么有的音合在一起会和谐共处,有的音和在一起会打架?后来发现数学其实可以解释这些问题. 下面的话可能不严格,但是音乐不需 ...

  9. 《全国钢琴演奏考级作品集(新编第一版) 》1-10级曲目

    <全国钢琴演奏考级作品集(新编第一版) >1-10级曲目 音乐天地 7月25日 第一级 1基本练习 C大调.G大调.F大调 2技巧性练习曲 1.旋律与伴奏练习曲(Op.823 No.13) ...

最新文章

  1. RxJava 解除订阅---------Disposable.dispose()方法
  2. 德勤预测2018年9大科技趋势:AR走进普通用户,直播仍然是王道
  3. 细胞膜内流体应力分析
  4. 5shift shell
  5. 服务器性能优化和Mysql性能优化
  6. 一个必用的javascript框架:underscore.js - wine的思考 - ITeye技术网站
  7. Ansys workbench静应力分析基本流程
  8. Nginx的alias/root/try_files实战
  9. python爬虫实战——青果教务网系统,并用xpath提取成绩
  10. C++初学必练基础题【第三期】
  11. 今天,我们求知若渴、虚心若愚(附技术PPT)
  12. MT【109】线面角最大时为二面角平面角
  13. 视觉世界中的“众里寻她”--开放环境下的人物特征表示
  14. 【光剑藏书轩2021】5分钟读懂《贫穷的本质》:“穷人通常缺少信息来源”
  15. QT中的Singal\slot机制
  16. 《利用python进行数据分析》第二版 第14章-数据分析示例 学习笔记1
  17. CSDN聊ChatGPT
  18. 如何使用高防CDN防御DDOS攻击呢?
  19. python tokenize_model_python-AttributeError:“令牌生成器”对象在Keras中没有属性“ oov_token”...
  20. ASP.Net Core The type initializer for 'Gdip' threw an exception

热门文章

  1. 钉钉氚云到金碟之一:金碟KIS专业版的DELPHI接口
  2. 数字逻辑·数制转换、编码方法
  3. 使用spring+html5实现安全传输随机数字密码键盘
  4. 区块链软件公司:加密货币再演疯狂
  5. 基于android手机的健身预约系统APP开发
  6. python 提取复杂 json 的数据
  7. opengl对三种光源(方向光,点光源,聚光灯)进行特写并分屏渲染
  8. 联想电脑thinkpad x240 开机引变成PCI Lan 进不了启动界面
  9. 读梁实秋散文《旅行》有感
  10. 论文阅读CVPR2022 《Language As Queries for Referring Video Object Segmentation》