其他
超级炫酷的LED数字变换算法,你能写的出吗?
今天浏览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
【视频】老外教你学电子系列第13期-第15期,我就不信还有不懂的!
Google Home拆解,看看这个神秘的设备里面到底有什么?
茸茸大神带你玩跨界,“泛读”“精读”两大神器助你阅读datasheet