本文章实现几个有趣的小案例。直接上代码。
一、环境
二、代码
main.py
from machine import Pin,PWM
import time
import _thread
beep = PWM(Pin(15), freq=50000,duty=500)
s2 = [50000, 262, 294, 330, 349, 392, 220, 247]
s3 = [50000, 523, 587, 659, 698, 784, 440, 494]
s4 = [50000, 1044, 1175, 1318, 1397, 1568, 880, 988]
def play(level, power = 1, deltatime = 200):
if power == 0:
beep.freq(s2[level])
elif power == 1:
beep.freq(s3[level])
elif power == 2:
beep.freq(s4[level])
time.sleep_ms(deltatime)
beep.freq(50000)
def plays(l):
for i in l:
if(len(i) == 3):
play(i[0], i[1], i[2])
else:
play(i[0], i[1])
def test():
plays([(3,2),(3,2),(0,2),(3,2),(0,2),(1,2),(3,2),(0,2),(5,2),(0,2,500)])
plays([(1,2,600),(5,1,600),(3,1,600),(6,1,400),(7,1,400),(7,1),(6,1,400)])
plays([(5,1),(3,2,400),(5,2),(6,2,400),(4,2),(5,2,400),(3,2,400),(1,2),(2,2),(7,1)])
plays([(1,2,600),(5,1,600),(3,1,600),(6,1,400),(7,1,400),(7,1),(6,1,400)])
plays([(5,1),(3,2,400),(5,2),(6,2,400),(4,2),(5,2,400),(3,2,400),(1,2),(2,2),(7,1)])
_thread.start_new_thread(test,())
diagram.json
{
"version": 1,
"author": "Anonymous maker",
"editor": "wokwi",
"parts": [
{
"type": "wokwi-esp32-devkit-v1",
"id": "esp",
"top": 0,
"left": 0,
"attrs": { "env": "micropython-20220618-v1.19.1" }
},
{
"type": "wokwi-buzzer",
"id": "bz1",
"top": -9.57,
"left": 174.83,
"attrs": { "volume": "0.1" }
}
],
"connections": [
[ "esp:TX0", "$serialMonitor:RX", "", [] ],
[ "esp:RX0", "$serialMonitor:TX", "", [] ],
[ "bz1:1", "esp:GND.1", "green", [ "v0" ] ],
[ "bz1:2", "esp:D15", "red", [ "v0" ] ]
]
}
效果:
Wokwi Arduino and ESP32 Simulatorhttps://wokwi.com/projects/342321085191029332