前言
查看1s可以采取多少次音量
代码
#---------------------------------------------
# func5: 测试一秒采音量数据个数
# PS : 由于将数值转换为字符串以及显示会耗费时间,导致增加了转换及显示1s只能采到8个数值
# 但是只设置取值以及计采样次数,可以采到16643个,所以音频的采样率大致为16643hz
#---------------------------------------------
import ntptime,network
from mpython import*
from machine import Timer
# 十进制数字转换为字符
def int2char (x):
numbers = {
0 : '0',
1 : '1',
2 : '2',
3 : '3',
4 : '4',
5 : '5',
6 : '6',
7 : '7',
8 : '8',
9 : '9',
10 : 'a',
11 : 'b',
12 : 'c',
13 : 'd',
14 : 'e',
15 : 'f',
}
return numbers.get(x,None)
# 十进制int转十进制字符串
def int_2_dec( value , key_num):
a=value%key_num
result=''
#print("value",value)
if (a == 0) & (value == 0 ):
result = '0'
return result
#print("result",result)
#print("a!=0",a!=0)
#print("value > 0",value > 0)
while True :
if a == 0:
if value <= 0:
break
#print("enter")
#print("a",a)
temp=int2char(a)
#temp=hex(a).replace('0x','')
result=temp+result
#print("result",result)
value=(value-a)//key_num
#print("value",value)
a=value%key_num
#print("a",a)
return result
# 定义刷新函数,获取时间并显示
def Refresh(_):
global temp_num #定义全局变量
temp_value=int_2_dec(temp_num,10)
print(temp_value)
temp_num=0
return
temp_num=0
# 定时器1
tim1 = Timer(1)
# 初始化定时器1,设置时间1s,Timer.PERIODIC周期性,回调函数Refresh
tim1.init(period=1000, mode=Timer.PERIODIC, callback=Refresh)
while 1 :
temp_num=temp_num+1
sound_value_int=sound.read()
# sound_value_char=int_2_dec(sound_value_int,10)
# print('sound',sound_value_char)
# oled.DispChar('sound', 0, 0, 1)
# oled.DispChar(sound_value_char, 0, 16, 1)
结果
小结
while循环中只计采样个数以及获取音量,这种方式测试下来大概1s可以采集16643个音量数值.
但是如果增加了数值转换为字符串以及显示,那么就会发现1s只有8次.应该是转换及显示占用了时间
所以下一章尝试利用数组方式存储采样数据,这样再看下可以采多少个