推荐一款创新的LED矩阵显示库:MD_Parola

推荐一款创新的LED矩阵显示库:MD_Parola

MD_ParolaLibrary for modular scrolling LED matrix text displays项目地址:https://gitcode.com/gh_mirrors/md/MD_Parola

在这个数字时代,我们总是寻找新颖且富有创意的方式来展示信息。MD_Parola是一个专为Arduino设计的开源库,它允许您构建可扩展的滚动LED矩阵显示屏,无论是简单的文本消息还是复杂的动画,都能轻松呈现。

项目介绍

MD_Parola的核心是其模块化的特性,它允许您组合多个8x8 LED矩阵模块,创造出各种尺寸和形状的显示设备。这款库不仅支持基本的文字滚动效果,还提供了左中右对齐、进入与退出动画等高级功能。更令人惊喜的是,它还可以处理硬件SPI接口,并支持虚拟显示器(区域)以及自定义字体和字符替换!

项目技术分析

MD_Parola依赖于另一个强大的库——MD_MAX72xx,该库专注于MAX7219或MAX7221 LED矩阵显示控制器的硬件操作。通过巧妙的软件设计,Parola能够适应不同数量的模块配置,大大降低了用户进行硬件调整的需求。这种灵活性使得开发者能够轻松地扩展他们的显示系统,而不必重新编写大量的代码。

应用场景

  • 信息展示:在酒吧、咖啡馆或者个人工作室中,可以用来展示天气预报、欢迎信息或是艺术作品。
  • 教育工具:在教学环境中,用于动态演示数学公式、编程概念或是科学实验结果。
  • DIY项目:对于电子爱好者而言,MD_Parola是制作个性化时钟、游戏控制器或是互动装置的理想选择。

项目特点

  1. 模块化设计:易于扩展,只需添加更多模块即可增大显示面积。
  2. 丰富效果:多种文本排列方式,包括滚动、进出动画,提升视觉体验。
  3. 虚拟显示区:在一个物理显示上创建多个独立的显示区域。
  4. 自定义字体:支持用户定义的字体和字符替换,打造独一无二的显示风格。
  5. 硬件SPI支持:高速数据传输,确保流畅无延迟的显示效果。

如果您喜欢并计划使用这项技术,请考虑通过PayPal捐赠以支持作者的工作。项目讨论和更多信息可在Arduino论坛和作者的博客中找到。此外,您也可以在ElectroDragon购买配套的套件来快速启动您的项目。

现在就加入这个创新的LED显示世界,让MD_Parola照亮您的创意!

MD_ParolaLibrary for modular scrolling LED matrix text displays项目地址:https://gitcode.com/gh_mirrors/md/MD_Parola

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这里提供一个基于Arduino和MAX7219四合一点阵模块的频谱显示代码,可以实现从麦克风输入的音频信号的频谱分析并在点阵模块上显示出来。代码如下: ``` c++ #include <MD_MAX72xx.h> #include <MD_Parola.h> #include <MD_Arduboy.h> #include <FFT.h> #define NUM_ROWS 8 // 点阵行数 #define NUM_COLS 32 // 点阵列数 #define DATA_PIN 11 // 数据引脚 #define CLK_PIN 13 // 时钟引脚 #define CS_PIN 10 // 片选引脚 MD_MAX72XX mx = MD_MAX72XX(DATA_PIN, CLK_PIN, CS_PIN, 4); // 初始化点阵模块 MD_Parola P = MD_Parola(DATA_PIN, CLK_PIN, CS_PIN, 4); // 初始化Parola #define SAMPLES 128 // 采样点数 #define LOG_SAMPLES 7 // 采样点数的对数 #define SAMPLE_RATE 8000 // 采样率 byte spectrum[NUM_COLS]; // 频谱数据 byte peak[NUM_COLS]; // 峰值数据 byte prev_spectrum[NUM_COLS]; // 上一帧的频谱数据 byte prev_peak[NUM_COLS]; // 上一帧的峰值数据 FFT fft = FFT(); // 初始化FFT void setup() { mx.begin(); // 初始化点阵模块 P.begin(); // 初始化Parola P.setInvert(false); // 设置不反转显示 P.setIntensity(2); // 设置亮度 P.displayClear(); // 清空显示 } void loop() { // 读取音频信号并进行FFT分析 int signal[SAMPLES]; for (int i = 0; i < SAMPLES; i++) { signal[i] = analogRead(A0) - 512; // 读取麦克风信号并去除直流分量 delayMicroseconds(1000000 / SAMPLE_RATE); } fft.Windowing(signal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); fft.Compute(signal, SAMPLES, FFT_FORWARD); fft.ComplexToMagnitude(signal, SAMPLES); // 更新频谱数据 for (int i = 0; i < NUM_COLS; i++) { int start = pow(2, i * LOG_SAMPLES / NUM_COLS); int end = pow(2, (i + 1) * LOG_SAMPLES / NUM_COLS) - 1; float sum = 0; for (int j = start; j <= end; j++) { sum += signal[j]; } spectrum[NUM_COLS - 1 - i] = sum / (end - start + 1); // 更新峰值数据 if (spectrum[NUM_COLS - 1 - i] > peak[NUM_COLS - 1 - i]) { peak[NUM_COLS - 1 - i] = spectrum[NUM_COLS - 1 - i]; } else if (peak[NUM_COLS - 1 - i] > 0) { peak[NUM_COLS - 1 - i]--; } } // 绘制频谱图 for (int i = 0; i < NUM_COLS; i++) { for (int j = 0; j < NUM_ROWS; j++) { if (spectrum[i] > (NUM_ROWS - j - 1) * 32) { mx.setPoint(i, j, true); } else { mx.setPoint(i, j, false); } } } // 绘制峰值图 for (int i = 0; i < NUM_COLS; i++) { for (int j = 0; j < NUM_ROWS; j++) { if (peak[i] > (NUM_ROWS - j - 1) * 32) { if (prev_peak[i] > peak[i]) { mx.setPoint(i, j, true); } } else { if (prev_spectrum[i] > spectrum[i]) { mx.setPoint(i, j, false); } } } } // 保存上一帧的数据 memcpy(prev_spectrum, spectrum, NUM_COLS); memcpy(prev_peak, peak, NUM_COLS); // 点阵模块显示 mx.flush(); // 清空显示 P.displayClear(); delay(1000); } ``` 代码中使用了FFT对采样的音频信号进行频谱分析,并将分析结果显示在点阵模块上。具体实现过程如下: 1. 在`setup()`函数中初始化点阵模块和Parola。 2. 在`loop()`函数中读取麦克风信号,并进行FFT分析,得到频谱数据。 3. 更新频谱数据,并根据频谱数据更新峰值数据。 4. 绘制频谱图和峰值图,并保存上一帧的数据。 5. 点阵模块显示。 6. 清空Parola显示,等待1秒。 需要注意的是,这个代码只是一个简单的示例,可能存在一些问题,比如频谱数据的计算方法、峰值数据的更新策略等。如果需要更加精确和稳定的频谱分析结果,需要对代码进行优化和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明俪钧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值