前言

看到很多UP主的桌面上都摆上了响度显示摆件,就想着自己动手做一个,刚好手头有不用的Maix Dock K210开发板。因为K210带有FFT所以可以直接做一个频谱显示摆件。

代码

根据官方教程的代码进行了一波魔改:

from Maix import GPIO, I2S,  FFT
import image, lcd, math, random, time
from fpioa_manager import fm#参数设置
sample_rate = 30000
sample_points = 1024
fft_points = 64#LCD条形柱显示宽度和数量计算
hist_x_num = int(fft_points/2)
hist_width = int(320 / hist_x_num) #changeable#LCD初始化
lcd.init()
lcd.rotation(0)
lcd.mirror(0)#麦克风初始化
fm.register(20,fm.fpioa.I2S0_IN_D0, force=True)
fm.register(30,fm.fpioa.I2S0_WS, force=True)    # 19 on Go Board and Bit(new version)
fm.register(32,fm.fpioa.I2S0_SCLK, force=True)  # 18 on Go Board and Bit(new version)
rx = I2S(I2S.DEVICE_0)
rx.channel_config(rx.CHANNEL_0, rx.RECEIVER, align_mode = I2S.STANDARD_MODE)
rx.set_sample_rate(sample_rate)#img初始化
img = image.Image()#增益倍数初始化
times=3.0while 1:#FFT计算audio = rx.record(sample_points)fft_res = FFT.run(audio.to_bytes(),fft_points)fft_amp = FFT.amplitude(fft_res)#绘制幅值img = img.clear()x_shift = 0maxFlag=0minFlag=0for i in range(hist_x_num):amp=int(fft_amp[i]*times)if amp < 10:minFlag+=1elif amp > 230:maxFlag+=1#限制振幅if amp > 240:hist_height = 240else:hist_height = amp#计算要显示的图像,矩形实心显示。r=random.randint(0, 255)g=random.randint(0, 255)b=random.randint(0, 255)#img = img.draw_rectangle((x_shift,0,hist_width-1,hist_height),[r,g,b],2,True)img = img.draw_rectangle((x_shift,120-int(hist_height/2),hist_width-1,hist_height),[r,g,b],2,True)x_shift = x_shift + hist_width#显示#img.draw_string(2,2, str(times), color=(255,255,255), scale=2)lcd.display(img)#自适应幅度增益if maxFlag>0 and minFlag<3:times-=0.5elif minFlag>20 and maxFlag<1:times+=0.2if times<1:times=1elif times>10:times=10time.sleep_ms(20)

步骤

将代码复制到MaixPy IDE中运行即可。

效果

B站视频

K210频谱显示桌面摆件(Sipeed Maix Dock)相关推荐

  1. 【K210】【MaixPy】三、Maix Dock入门之LCD的使用(播放BadApple)

    Maix Dock套件中标配了一块2.4寸LCD屏下面通过实现几个功能的方式介绍一些MaixPy中关于LCD使用的一些函数. 官方LCD函数文档链接:https://cn.maixpy.sipeed. ...

  2. 【K210】【MaixPy】二、Maix Dock入门之Timer、PWM基础模块,实现一个变色呼吸灯(效果参考罗技G502)

    文章目录 1.Timer模块 1.1.构造函数 1.2.参数 1.3.例程 1.4.附录 2.PWM功能设置 2.1.构造函数 2.2.参数 2.3.例程 官方文档点这里 1.Timer模块      ...

  3. 四针角oled屏连接arduino_和孩子一起做个显示温湿度的oled屏桌面摆件[青创小电视]...

    青创小电视--显示温湿度的oled屏桌面摆件/家庭亲子教育DIY 简介: 使用主控板arduino nano采集温湿度传感器dht11的温湿度数据,同时显示在1.3寸分辨率为128*64的oled屏幕 ...

  4. K210入门必看(MAIX DOCK)(一)

    目录 K210芯片上IO口 板子上的引脚 如何理解[引脚]映射[内部功能]? fpioa_manage 类 1.register(pin, func, force=True) 2.unregister ...

  5. K210入门 MAIX DOCK——点灯(二)

    目录 首先看现象 硬件连接 GPIO的介绍 GPIO() 类 特殊方法(函数) 1.value 2. irq() 3.disirq 4. mode 常量 主要程序 以后我会尽量,一直更新K210的操作 ...

  6. Mac OS X显示桌面和窗口最小化方法的几个快捷键

    除了可以用 command+F3 来显示桌面以外,我们还可以通过 Fn+F11 键来显示桌面. 大家都知道在 OS X 系统中,点击窗口左上角中间的小黄按钮就可以最小化当前窗口.而事实上,还有一些比点 ...

  7. java显示本地磁盘所有盘符,显示桌面路径

    import java.io.File; import javax.swing.filechooser.FileSystemView;/** 显示本地磁盘根盘符,显示桌面路径 */ public cl ...

  8. 如何添加显示桌面图标置于快速启动栏

    点击"开始→运行",在弹出的"运行"对话框中输入"REGSVR32 /n /i:u shell32"(不含双引号),然后回车,片刻后会弹出& ...

  9. 解决“显示桌面”快捷方式的丢失

    把下面的内容复制到一个文本文件中,文件名字为"显示桌面"扩展名为".scf" [Shell] Command=2 _#]7Ko"Y E IconFil ...

最新文章

  1. python >> 和 <<
  2. json省市区城市级联
  3. 本地环境的搭配及安装配置
  4. date制作电子时钟
  5. 【原】Spark Standalone模式
  6. protect 继承_(转)public、protect、private继承方式 C++
  7. echo off备份mysql_windows下备份Linux服务器上的MySQL
  8. 乔布斯,影响了一个时代的人
  9. Gitee同步GitHub仓库如何操作
  10. iOS 4中禁止程序退出后保留在后台的方法
  11. [论文评析]ArXiv,2021, CrossFormer技术分析
  12. matlab 滤波器_数字滤波器的MATLAB与FPGA实现
  13. PostgreSQL:安装
  14. ajax无翻页刷新简单实例
  15. 超分辨率重建双三次插值Bicubic生成高分辨率图像
  16. android 微博 登录,Android第三方登录之微博登录
  17. (2011-12-11 旧博文搬运)闪耀十字军(ティンクル☆くるせいだーす)【1】
  18. Python基础07
  19. Harmonious Rectangle(dfs 打表)
  20. APP - 查询全国医院各科室排行榜(一)

热门文章

  1. Android开发——错误:远程主机强迫关闭一个现有连接——解决办法
  2. Python学习:输出99乘法口诀表
  3. Java Annotation自定义注解详解
  4. DevExpress XtraReport报表开发相关知识点
  5. java--与君初相识之jdk的环境配置
  6. android app 按键精灵,安卓按键精灵的,关闭app程序问题!
  7. WIN10插上耳机拔掉后再插没声音的问题【已解决】
  8. 与蜂窝连接的无人机的空地干扰缓解
  9. 嵌入式了解 以及学习路线
  10. 在升龙备份方法_[求助]关于使用再生龙备份系统的问题