查看原文
其他

超级炫酷的LED数字变换算法,你能写的出吗?

Hari Wiguna 芯片之家 2021-01-31

今天浏览Twitter,发现一个不错的项目,作者Hari Wiguna,对于普通的数字变换,加了一种连贯变化的效果,还是比较有冲击感的,代码开源,公众号后台回复 数字变化 获取源代码!部分代码:

Digit::Digit(PxMATRIX* d, byte value, uint16_t xo, uint16_t yo, uint16_t color) {
 _display = d;
 _value = value;
 xOffset = xo;
 yOffset = yo;
 _color = color;
}

byte Digit::Value() {
 return _value;
}
void Digit::drawPixel(uint16_t x, uint16_t y, uint16_t c)
{
 _display->drawPixel(xOffset + x, height - (y + yOffset), c);
}

void Digit::drawLine(uint16_t x, uint16_t y, uint16_t x2, uint16_t y2, uint16_t c)
{
 _display->drawLine(xOffset + x, height - (y + yOffset), xOffset + x2, height - (y2 + yOffset), c);
}

void Digit::drawSeg(byte seg)
{
 switch (seg) {
   case sA: drawLine(1, segHeight * 2 + 2, segWidth, segHeight * 2 + 2, _color); break;
   case sB: drawLine(segWidth + 1, segHeight * 2 + 1, segWidth + 1, segHeight + 2, _color); break;
   case sC: drawLine(segWidth + 1, 1, segWidth + 1, segHeight, _color); break;
   case sD: drawLine(1, 0, segWidth, 0, _color); break;
   case sE: drawLine(0, 1, 0, segHeight, _color); break;
   case sF: drawLine(0, segHeight * 2 + 1, 0, segHeight + 2, _color); break;
   case sG: drawLine(1, segHeight + 1, segWidth, segHeight + 1, _color); break;
 }
}


下面欣赏一下视频:

https://v.qq.com/txp/iframe/player.html?vid=y1342xoyzo7&width=500&height=375&auto=0

往期好文


【拆解】小米AI音箱,看看小爱同学内部究竟有什么


【拆解】斐讯AI智能音箱R1,内部究竟采用了什么?


【视频】老外教你学电子系列第13期-第15期,我就不信还有不懂的!


【最强干货】618个3D封装免费分享


Google Home拆解,看看这个神秘的设备里面到底有什么?


阿里巴巴人工智能实验室2018春季发布会完整版视频


MPS软件帮您搞定DC-DC电源设计!


天呐!身为电子工程师的你,竟然还在用百度找资料?


茸茸大神带你玩跨界,“泛读”“精读”两大神器助你阅读datasheet

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存