试用LED9x16灰度阵列(智能硬件/开源硬件/Arduino)

十分Funny的点阵显示器

周日闲暇时光,无意间发现这个有趣的点阵显示器:9行16列的256级PWM型灰度显示器,十分有趣,竟然玩了几个小时!

使用4线接口,2根电源线,2根I2C串行通讯接口线。采用标准的I2C接口,按说明书找到I2C从地址为0x74。自己依然保存着这个显示器模块配套的4芯线,与LinkIoT的扩展底板完全兼容。硬件连接如下图:

LinkIoT和LED9x16灰度阵列显示器的连接

接下来就用Arduino IDE和LinkIoT BSP实现几个有趣的想法。

DIY的几种显示效果

先上动图,看效果再评论我的创意!

波浪翻滚

设计一幅波浪翻滚的模拟图案,实际的算法是咋样?真的让我脑痛了还一阵子,在草稿纸上画了很多种方案,终于找到一种3层嵌套循环的简单思路!

模拟地上鞭炮爆炸的效果

这算是今天最得意的作品吧!只是没有在春节期间做出来玩一玩。

滚动显示文本

路边的广告牌就是这个道理:小模块+小模块+..+小模块,然后用这个滚屏显示的思路,神马信息都能如此show。

算法分享

  1. 波浪翻滚的算法
#include <LED9x16Matrix_ESP.h>
LED9x16Matrix ledmatrix;
void setup() {
  ledmatrix.begin();
  ledmatrix.clear();
}
void loop() {
  uint8_t incr=0, x=7, y=4;
  uint8_t sweep[] = {1, 2, 4, 8, 15, 30, 60, 60, 30, 15, 8, 4, 2, 1};
  for (incr = 0; incr < 14; incr++) {
    for (x = 0; x < 16; x++) {
      for (y = 0; y < 9; y++) {
        ledmatrix.drawPixel(x, y, sweep[(x+y+incr)%14]);
      }
    }
  }
}
  1. 鞭炮爆炸的模拟算法
#include <LED9x16Matrix_ESP.h>
LED9x16Matrix  ledmatrix;
void setup() {
  ledmatrix.begin();
  ledmatrix.clear();
}
void loop() {
  uint8_t xc, yc, dt;
  // 模拟放鞭炮的效果,中心点最亮,依次越来越暗,中心点最先消失
  // 中心点的位置是随机的,持续时间也是随机的
  xc = random(2, 14); yc = random(2, 7);
  dt = random(20, 41);
  ledmatrix.drawPixel(xc, yc, 127);
  delay(dt+10);
  ledmatrix.drawCircle(xc, yc, 1, 64);
  delay(dt);
  ledmatrix.clear();
  ledmatrix.drawCircle(xc, yc, 2, 8);
  ledmatrix.drawCircle(xc, yc, 3, 2);
  delay(60-dt);
  ledmatrix.clear();
  delay(10);
}
  1. 滚动显示字符串
#include <LED9x16Matrix_ESP.h>
LED9x16Matrix ledmatrix;
void setup() {
  ledmatrix.begin();
  ledmatrix.showText("Hello World");
}
void loop() {
  static uint8_t c=0;
  ledmatrix.showNumber(c);
  delay(10);
}

安装Arduino依赖库

如果你已经安装了Arduino IDE,实现上述的效果需要安装LinkIoT BSP依赖库
,这个依赖库具有上述示例所依赖的开源代码,我们可以直接使用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容