问题描述
LED that I am using with fastLED librairy
所以我的项目是制作一个带有 rgb 条的 LED 风扇,我发现了一些非常相似的东西,但我在一周内尝试使用 fastLED 库更改代码以进行转换,但我请求帮助。[the类似的代码,但与 POV led arduino project 中的 digitalWrite 类似:
// bit shift through the byte and output it to the pin
for (int j=0; j<charHeight; j++) {
digitalWrite(LEDpins[j],!!(b & (1 << j)));
(我不能用 LED 灯条进行“digitalWrite”)]2
所以我想知道是否有更擅长代码的人能给我一些更正。
我有一个 arduino nano,它可以让 7 个 LED(我想在我的 prototype 的一侧写一条消息)闪烁以通过视网膜持久性写一条消息。 我想要做的是当我收到串行消息时(我制作了一个蓝牙应用程序,可以向我发送一个单词)我希望它在他旋转时显示在我的原型上。因此,如果我想在原型的一侧显示一封信,我必须将其写成 that 我已经手动制作了它,但它太长了:
// la lettre A :
leds[24] = CRGB::Red;
leds[23] = CRGB::Red;
leds[22] = CRGB::Red;
leds[21] = CRGB::Red;
leds[20] = CRGB::Red;
leds[19] = CRGB::Red;
leds[18] = CRGB::Black;
FastLED.show();
delay(Pause);
leds[24] = CRGB::Black;
leds[23] = CRGB::Black;
leds[22] = CRGB::Black;
leds[21] = CRGB::Red;
leds[20] = CRGB::Black;
leds[19] = CRGB::Black;
leds[18] = CRGB::Red;
FastLED.show();
delay(Pause);
leds[24] = CRGB::Black;
leds[23] = CRGB::Black;
leds[22] = CRGB::Black;
leds[21] = CRGB::Red;
leds[20] = CRGB::Black;
leds[19] = CRGB::Black;
leds[18] = CRGB::Red;
FastLED.show();
delay(Pause);
leds[24] = CRGB::Black;
leds[23] = CRGB::Black;
leds[22] = CRGB::Black;
leds[21] = CRGB::Red;
leds[20] = CRGB::Black;
leds[19] = CRGB::Black;
leds[18] = CRGB::Red;
FastLED.show();
delay(Pause);
leds[24] = CRGB::Red;
leds[23] = CRGB::Red;
leds[22] = CRGB::Red;
leds[21] = CRGB::Red;
leds[20] = CRGB::Red;
leds[19] = CRGB::Black;
FastLED.show();
delay(Pause);
leds[24] = CRGB::Black;
leds[23] = CRGB::Black;
leds[22] = CRGB::Black;
leds[21] = CRGB::Black;
leds[20] = CRGB::Black;
leds[19] = CRGB::Black;
FastLED.show();
delay(Pause);
所以从技术上讲它很好用,但是当我发送例如“难度”时,我想用一个函数或类似的东西来做。 (我可以看到它如何工作的想法,但现在我无法做到)。
请帮帮我,
如果您想了解更多信息,可以告诉我。
伊万·巴罗佐
解决方法
所以如果我想在我的原型的侧面显示一个字母,我必须像我手动制作的那样写它,但它太长了
可以理解,您不想手动写下每个单独的字母列序列。这是一个使用字符图像表(类似于字符ROM)的示例程序;它演示了 ANSI 终端上的输出,但您可以轻松地将其调整到您的 LED 灯带上。
/* cc -std=c99 */
// glyphs taken from https://github.com/uffejakobsen/sysvbanner/blob/master/banner.c
char glyphs[7*(0x7F-' '+1)/8][7*8] =
{ // 7 x 7 pixels for each of our displayable characters (8 side by side)
" ### ### ### # # ##### ### # ## ### "," ### ### ### # # # # ## # # # # ### "," ### # # ######## # ### # ## # "," # # # ##### # ### # "," ####### # # # #### # # "," ### # # # # # # # ## # "," ### # # ##### # ### #### # "," ## ## #"," # # # # # # "," # # # # # # "," # # ### ### ##### ### ##### # "," # # # # # ### ### # "," # # # # # # ### # "," ## ## # ### # "," ### # ##### ##### # ####### ##### #######"," # # ## # ## ## # # # ## # ","# # # # # # ## # # # # ","# # # # ##### ##### ####### ##### ###### # ","# # # # # # # ## # # "," # # # # # # # # ## # # "," ### ##### ####### ##### # ##### ##### # "," ##### ##### # ### # # ##### ","# ## # # # ### # # # #","# ## # # # ##### # #"," ##### ###### ### # # ## ","# # # # ### # ##### # # ","# ## # # # # # # "," ##### ##### # # # # # "," ##### # ###### ##### ###### ############## ##### ","# # # # # ## ## ## # # #","# ### # # # # ## # ## # # ","# # # ## ####### # # ###### ##### # ####","# #### ######## ## # ## # # #","# ## ## ## ## ## # # #"," ##### # ####### ##### ###### ######## ##### ","# # ### ## # # # ## ########","# # # ## # # ## #### ## #","# # # ## # # # # # ## # ## #","####### # #### # # # ## # ## #","# # # # ## # # # ## # ## #","# # # # ## # # # ## ### #","# # ### ##### # # ######## ## ########","###### ##### ###### ##### ######## ## ## #","# ## ## ## # # # ## ## # #","# ## ## ## # # ## ## # #","###### # ####### ##### # # ## ## # #","# # # ## # # # # # # # # # #","# # # # # # # # # # # # # # #","# #### ## # ##### # ##### # ## ## ","# ## ######## ##### # ##### # "," # # # # # # # # # # "," # # # # # # # # # # "," # # # # # # "," # # # # # # # "," # # # # # # # ","# # # ####### ##### # ##### #######"," ### "," ### ## ##### #### ##### ###### ###### #### "," # # # # # # # # # # # # #"," # # # ##### # # # ##### ##### # "," ###### # # # # # # # # ###"," # # # # # # # # # # # #"," # # ##### #### ##### ###### # #### "," "," # # # # # # # # # # # #### "," # # # # # # # ## ## ## # # #"," ###### # # #### # # ## # # # # # #"," # # # # # # # # # # # # # #"," # # # # # # # # # # # ## # #"," # # # #### # # ###### # # # # #### "," ##### #### ##### #### ##### # # # # # #"," # # # # # # # # # # # # # #"," # # # # # # #### # # # # # # #"," ##### # # # ##### # # # # # # # ## #"," # # # # # # # # # # # # ## ##"," # ### # # # #### # #### ## # #"," ### # ### ## # # # #"," # # # # ###### # # # # # # # # # "," # # # # # # # # ## # # # #"," ## # # ## ## # # # "," ## # # # # # # # # #"," # # # # # # # # # # "," # # # ###### ### # ### # # # #"};
#define delay(p) sleep(1)
#include <stdio.h>
#include <unistd.h>
char led[25];
void show()
{
printf("\e[A\e[A\e[A\e[A\e[A\e[A\e[A");
for (int i = 18; i <= 24; ++i)
printf("%c\e[B\e[D",led[i] ? '#' : ' ');
printf("\e[C");
fflush(stdout);
}
int main(int argc,char *argv[])
{
if (argc < 2) return 1;
char c = *argv[1];
enum { Black,Red };
if (c < ' ' || 0x7F < c) return 1;
int i = c-' ';
puts("\n\n\n\n\n\n");
for (int col = 0; col < 7; ++col)
{
for (int row = 0; row < 7; ++row)
led[18+row] = glyphs[i/8*7+row][i%8*7+col] == ' ' ? Black : Red;
show();
delay(Pause);
}
puts("");
}