虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

您现在的位置是:首页 > 技术阅读 >  洪荒之力来啦!音乐也疯狂

洪荒之力来啦!音乐也疯狂

时间:2024-02-04

之前有新闻提到,有的地方已经建成音乐路面。无处不在的音乐果然神通广大,现在都有各种各样的颜色了。人类已经无法阻挡新技术的发展了,一块芯片竟有如此洪荒之力。


几年前,我写了可以将色彩分配给音符的算法ColorChord,但有点粗糙。受设备限制,我使用了专用的图形处理器。经过研究和重写,最终,它不仅可以在台式机的CPU上运行,还能在微控制器上运行。那么它能否在更简单的设备上运行呢?这就要提到乐鑫公司的一款Wi-Fi桥接设备—ESP8266。


ESP8266具有通用输入/输出端口;具备直接内存访问的集成芯片间声音,可进行快速数据传输;脉宽调制硬件支持;以及一个模数转换器(ADC)。通过在ESP上运行代码,可以让物联网设备和服务器拥有丰富的用户界面。


当时,黑客社区开发了固件工具、编译器以及演示和集成开发环境,可以实现在ESP上运行Arduino和NodeMCU代码。庆幸的是,乐鑫公司也随之发布并更新了其软件开发工具包(SDK),并发布了文档。结果,ESP也从一块价值2美元的芯片变身成为一个32位的全功能无线微控制器,且追随者越来越多。


因此,我想在ESP上运行ColorChord,以便它听声音、判断色值,然后再用色值去控制一系列可分别单独控制的色彩LED模块(WS2812B)。一般来说,许多人认为Arduino IDE和它的Wiring语言是理想选择。不过,我选择的是C语言和官方的Espressif SDK来打造自己的固件。虽然SDK使用起来不太方便,但它的功能十分完善。写项目软件的时候,我通过调查研究,找到了能够利用精确处理器中断请求读取ADC的人。控制WS2812B串行方面,我将I2S总线与DMA引擎连接起来,大量缓冲数据便能通过一个单独的引脚移至LED模块了,整个过程都没怎么使用CPU。


大部分低层输入和输出都是由配套硬件处理的,所以ESP核心便得到了解放。我把经过高度优化的ColorChord C代码放在ESP上运行。ESP竟然没有崩溃,我成功了!整个装置很小巧,足以附着在萨克斯风上。把LED放在萨克斯风管口里面,有人吹时,它不仅能发出声音,还能亮出颜色。


ESP8266太神奇了。乐鑫公司还在向我们展示这块芯片能做什么,esp8266.com社区也在探索乐鑫公司尚未想到的可能性。我会继续搜寻,学习更多知识。


作者:Charles Lohr