Mixly/arduino---WS2812点阵显示图片和汉字

首先是最后实现的效果

 

 所需要的器材:

一块8*8的ws2812点阵

一块arduino uno

杜邦线若干

所需要的软件

取模软件

arduino ide或者mixly

开始!

首先我们需要确定我们WS2812点阵的方向,这个要和之后的取模软件的设置一致

在这里,我的WS2812点阵的方向如下

所以,我就以我的点阵的方向为例

扫描二维码关注公众号,回复: 13553038 查看本文章

在确定了点阵的方向之后,我们打开取模软件

将软件设置和下图一样

 

接着我们新建一幅8*8的图像

 

 

然后点击图中的点阵,画出自己想要的图案,左击是画上,右击是删除 

 

如果在后面显示的时候发现显示的图像是左右反转的,可以点一下程序中的这个按键

画好图案之后点击下方的生成字模

得到以下字符

 未命名文件(0)

0xFF,0x10,0x10,0xFF,0x10,0x28,0x44,0x82;"未命名文件",0
/* (8 X 8 )*/

 然后打开电脑自带的计算器,设置为程序员模式

 选中16进制,然后连续输入刚刚获得的16进制数

便得到64个2进制数 

1111111100010000000100001111111100010000001010000100010010000010

接着我们需要将这一段数字每隔一个加一个分号,改成如下格式

1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0

那么如何将那一串数字改成如下格式呢,二个办法,一个是手动加,不过这样很麻烦,所以我用的是第二种,借助EXCEL表格来完成。

首先我们打开EXCEL

在A1单元格粘贴刚刚那一串2进制

接着右键A1单元格,设置单元格格式

 

设置单元格格式为文本

 

接着在B1单元格中粘贴以下代码

​
=LEFT(A1,1)&","&MID(A1,2,1)&","&MID(A1,3,1)&","&MID(A1,4,1)&","&MID(A1,5,1)&","&MID(A1,6,1)&","&MID(A1,7,1)&","&MID(A1,8,1)&","&MID(A1,9,1)&","&MID(A1,10,1)&","&MID(A1,11,1)&","&MID(A1,12,1)&","&MID(A1,13,1)&","&MID(A1,14,1)&","&MID(A1,15,1)&","&MID(A1,16,1)&","&MID(A1,17,1)&","&MID(A1,18,1)&","&MID(A1,19,1)&","&MID(A1,20,1)&","&MID(A1,21,1)&","&MID(A1,22,1)&","&MID(A1,23,1)&","&MID(A1,24,1)&","&MID(A1,25,1)&","&MID(A1,26,1)&","&MID(A1,27,1)&","&MID(A1,28,1)&","&MID(A1,29,1)&","&MID(A1,30,1)&","&MID(A1,31,1)&","&MID(A1,32,1)&","&MID(A1,33,1)&","&MID(A1,34,1)&","&MID(A1,35,1)&","&MID(A1,36,1)&","&MID(A1,37,1)&","&MID(A1,38,1)&","&MID(A1,39,1)&","&MID(A1,40,1)&","&MID(A1,41,1)&","&MID(A1,42,1)&","&MID(A1,43,1)&","&MID(A1,44,1)&","&MID(A1,45,1)&","&MID(A1,46,1)&","&MID(A1,47,1)&","&MID(A1,48,1)&","&MID(A1,49,1)&","&MID(A1,50,1)&","&MID(A1,51,1)&","&MID(A1,52,1)&","&MID(A1,53,1)&","&MID(A1,54,1)&","&MID(A1,55,1)&","&MID(A1,56,1)&","&MID(A1,57,1)&","&MID(A1,58,1)&","&MID(A1,59,1)&","&MID(A1,60,1)&","&MID(A1,61,1)&","&MID(A1,62,1)&","&MID(A1,63,1)&","&MID(A1,64,1)

​

 设置好了之后点回车

就可以看到B1中的内容变成了

然后复制B1的内容右键,粘贴值到B2

 

然后B2中就是我们要的数据了,为了保证数据的长度没有问题,我们在B3中输入以下代码

=LEN(B2)

 可以看到B2那串数据的长度为127,这个长度是正常的

 最后我们将B2的那串字符复制到程序中

接线为

arduino      WS2812

vcc                vcc

gnd                  gnd

d2                   vin

mixly程序

把B2那串字符串复制到以下位置

arduino代码,复制到xxx数组就行


#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel rgb_display_2 = Adafruit_NeoPixel(64,2,NEO_GRB + NEO_KHZ800);
int XXX[64]={1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0};

void setup(){
  rgb_display_2.begin();
}

void loop(){
  rgb_display_2.setBrightness(20);
  for (int i = 0; i <= 63; i = i + (1)) {
    if (XXX[(int)((i - 0) - 1)] == 1) {
      rgb_display_2.setPixelColor((i)-1, 125*65536+125*256+0);

    } else {
      rgb_display_2.setPixelColor((i)-1, 0*65536+0*256+0);

    }
  }
  rgb_display_2.show();

}

然后上传程序,就可以看到效果了

猜你喜欢

转载自blog.csdn.net/moshanghuaw/article/details/121095265