2018-09-19 14:48:38 +08:00
|
|
|
Mic API
|
|
|
|
|
********
|
|
|
|
|
|
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
|
|
Function
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
|
|
Usage
|
|
|
|
|
------
|
|
|
|
|
|
|
|
|
|
.. code:: python
|
|
|
|
|
|
2018-09-12 11:47:21 +08:00
|
|
|
from m5stack import *
|
2018-09-19 14:48:38 +08:00
|
|
|
import machine, _thread
|
2018-09-12 11:47:21 +08:00
|
|
|
|
|
|
|
|
mic_adc = 0
|
|
|
|
|
buffer = []
|
2018-09-19 14:48:38 +08:00
|
|
|
def microphone_enter():
|
2018-09-12 11:47:21 +08:00
|
|
|
print('microphone_enter')
|
2018-09-19 14:48:38 +08:00
|
|
|
global mic_adc, buffer
|
|
|
|
|
try:
|
|
|
|
|
mic_adc = machine.ADC(34)
|
2018-09-12 11:47:21 +08:00
|
|
|
mic_adc.atten(mic_adc.ATTN_11DB)
|
|
|
|
|
dac = machine.DAC(machine.Pin(25))
|
|
|
|
|
dac.write(0)
|
2018-09-19 14:48:38 +08:00
|
|
|
except:
|
2018-09-12 11:47:21 +08:00
|
|
|
pass
|
|
|
|
|
buffer = []
|
2018-09-19 14:48:38 +08:00
|
|
|
for i in range(0, 55):
|
2018-09-12 11:47:21 +08:00
|
|
|
buffer.append(0)
|
|
|
|
|
|
|
|
|
|
|
2018-09-19 14:48:38 +08:00
|
|
|
def microphone_loop():
|
2018-09-12 11:47:21 +08:00
|
|
|
global mic_adc, buffer
|
|
|
|
|
val = 0
|
2018-09-19 14:48:38 +08:00
|
|
|
for i in range(0, 32):
|
2018-09-12 11:47:21 +08:00
|
|
|
raw = (mic_adc.readraw() - 1845) // 10
|
|
|
|
|
if raw > 20:
|
|
|
|
|
raw = 20
|
|
|
|
|
elif raw < -20:
|
|
|
|
|
raw = -20
|
2018-09-19 14:48:38 +08:00
|
|
|
val += raw
|
2018-09-12 11:47:21 +08:00
|
|
|
val = val // 32
|
|
|
|
|
buffer.pop()
|
|
|
|
|
buffer.insert(0, val)
|
|
|
|
|
for i in range(1, 50):
|
|
|
|
|
lcd.line(i*2+44, 120+buffer[i+1], i*2+44+2, 120+buffer[i+2], lcd.WHITE)
|
|
|
|
|
lcd.line(i*2+44, 120+buffer[i], i*2+44+2, 120+buffer[i+1], lcd.BLACK)
|
|
|
|
|
|
|
|
|
|
microphone_enter()
|
|
|
|
|
|
2018-09-19 14:48:38 +08:00
|
|
|
while 1:
|
2018-09-12 11:47:21 +08:00
|
|
|
microphone_loop()
|