525|0

172

帖子

3

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第3期】+任务3:使用蜂鸣器播放音乐 [复制链接]

 

Seeed Studio XIAO ESP32C3扩展板上,自带了一个无源蜂鸣器,可以用于提示音以及简单的音乐播放。

硬件介绍

ESP32C3模组的IO引脚分布以及扩展板的引脚和功能分布如下图。

由图中信息可知控制蜂鸣器的引脚是GPIO5(PWM)

软件编写

蜂鸣器的控制GPIO或者PWM即可实现控制,以下代码实现简单的蜂鸣器提示

  1. import time
  2. from time import sleep
  3. import machine
  4. from machine import Pin, SoftI2C
  5. # Buzzer settings
  6. buzzer_pin = machine.Pin(5, machine.Pin.OUT)
  7. buzzer = machine.PWM(buzzer_pin)
  8. buzzer.freq(1047)
  9. # Buzzer working
  10. while True:
  11. buzzer.duty(10)
  12. time.sleep(1)
  13. buzzer.duty(0)
  14. time.sleep(1)

以下为演示视频

鎾斁鍣ㄥ姞杞藉け璐�: 鏈娴嬪埌Flash Player锛岃鍒�瀹夎
buzzer_control

以下代码实现控制蜂鸣器播放音乐
  1. import machine
  2. import time
  3. # Buzzer settings
  4. buzzer_pin = machine.Pin(5, machine.Pin.OUT)
  5. buzzer = machine.PWM(buzzer_pin)
  6. buzzer.freq(1047)
  7. # Defining frequency of each music note
  8. NOTE_C4 = 262
  9. NOTE_D4 = 294
  10. NOTE_E4 = 330
  11. NOTE_F4 = 349
  12. NOTE_G4 = 392
  13. NOTE_A4 = 440
  14. NOTE_B4 = 494
  15. NOTE_C5 = 523
  16. NOTE_D5 = 587
  17. NOTE_E5 = 659
  18. NOTE_F5 = 698
  19. NOTE_G5 = 784
  20. NOTE_A5 = 880
  21. NOTE_B5 = 988
  22. # Music notes of the song, 0 is a rest/pulse
  23. notes = [
  24. NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
  25. NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
  26. NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
  27. NOTE_A4, NOTE_G4, NOTE_A4, 0,
  28. NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
  29. NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
  30. NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
  31. NOTE_A4, NOTE_G4, NOTE_A4, 0,
  32. NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
  33. NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
  34. NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
  35. NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
  36. NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
  37. NOTE_D5, NOTE_E5, NOTE_A4, 0,
  38. NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
  39. NOTE_C5, NOTE_A4, NOTE_B4, 0,
  40. NOTE_A4, NOTE_A4,
  41. #Repeat of first part
  42. NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
  43. NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
  44. NOTE_A4, NOTE_G4, NOTE_A4, 0,
  45. NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
  46. NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
  47. NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
  48. NOTE_A4, NOTE_G4, NOTE_A4, 0,
  49. NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
  50. NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
  51. NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
  52. NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
  53. NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
  54. NOTE_D5, NOTE_E5, NOTE_A4, 0,
  55. NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
  56. NOTE_C5, NOTE_A4, NOTE_B4, 0,
  57. #End of Repeat
  58. NOTE_E5, 0, 0, NOTE_F5, 0, 0,
  59. NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
  60. NOTE_D5, 0, 0, NOTE_C5, 0, 0,
  61. NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4,
  62. NOTE_E5, 0, 0, NOTE_F5, 0, 0,
  63. NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
  64. NOTE_D5, 0, 0, NOTE_C5, 0, 0,
  65. NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4
  66. ]
  67. # Durations (in ms) of each music note of the song
  68. # Quarter Note is 250 ms when songSpeed = 1.0
  69. durations = [
  70. 125, 125, 250, 125, 125,
  71. 125, 125, 250, 125, 125,
  72. 125, 125, 250, 125, 125,
  73. 125, 125, 375, 125,
  74. 125, 125, 250, 125, 125,
  75. 125, 125, 250, 125, 125,
  76. 125, 125, 250, 125, 125,
  77. 125, 125, 375, 125,
  78. 125, 125, 250, 125, 125,
  79. 125, 125, 250, 125, 125,
  80. 125, 125, 250, 125, 125,
  81. 125, 125, 125, 250, 125,
  82. 125, 125, 250, 125, 125,
  83. 250, 125, 250, 125,
  84. 125, 125, 250, 125, 125,
  85. 125, 125, 375, 375,
  86. 250, 125,
  87. #Rpeat of First Part
  88. 125, 125, 250, 125, 125,
  89. 125, 125, 250, 125, 125,
  90. 125, 125, 375, 125,
  91. 125, 125, 250, 125, 125,
  92. 125, 125, 250, 125, 125,
  93. 125, 125, 250, 125, 125,
  94. 125, 125, 375, 125,
  95. 125, 125, 250, 125, 125,
  96. 125, 125, 250, 125, 125,
  97. 125, 125, 250, 125, 125,
  98. 125, 125, 125, 250, 125,
  99. 125, 125, 250, 125, 125,
  100. 250, 125, 250, 125,
  101. 125, 125, 250, 125, 125,
  102. 125, 125, 375, 375,
  103. #End of Repeat
  104. 250, 125, 375, 250, 125, 375,
  105. 125, 125, 125, 125, 125, 125, 125, 125, 375,
  106. 250, 125, 375, 250, 125, 375,
  107. 125, 125, 125, 125, 125, 500,
  108. 250, 125, 375, 250, 125, 375,
  109. 125, 125, 125, 125, 125, 125, 125, 125, 375,
  110. 250, 125, 375, 250, 125, 375,
  111. 125, 125, 125, 125, 125, 500
  112. ]
  113. def play_song():
  114. total_notes = len(notes)
  115. for i in range(total_notes):
  116. current_note = notes<i>
  117. wait = durations<i>
  118. if current_note != 0:
  119. buzzer.duty(512) # Set duty cycle for sound
  120. buzzer.freq(current_note) # Set frequency of the note
  121. else:
  122. buzzer.duty(0) # Turn off the sound
  123. time.sleep_ms(wait)
  124. buzzer.duty(0) # Turn off the sound
  125. while True:
  126. # Play the song
  127. play_song()

以下为演示视频

鎾斁鍣ㄥ姞杞藉け璐�: 鏈娴嬪埌Flash Player锛岃鍒�瀹夎
buzzer_song

## 总结 蜂鸣器的使用简单,但是配合复杂的程序运行逻辑可以实现音乐播放这种应用。
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
立即报名 | 2025 瑞萨电子工业以太网技术日即将开启!
3月-4月 深圳、广州、北京、苏州、西安、上海 走进全国6城
2025瑞萨电子工业以太网技术巡回沙龙聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案。
预报从速,好礼等您拿~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表