自定义字符生成器的制作

电子说

1.3w人已加入

描述

步骤1:组件

这是一个有关Adafruit HT16k33矩阵的基础项目,您需要:

Adafruit HT16k33 1.2‘’x 1.2‘’8x8双色LED矩阵。

Arduino(除了Uno以外的任何变体都是首选)。

面包板

电源

步骤2:原理图

Arduino

Arduino

接线Adafruit HT16k33 LED矩阵这很容易,因为我们需要像通常在I2C设备上那样连接时钟和数据引脚。连接方式如下:

SCL(矩阵的时钟引脚)连接到A5(时钟的时钟引脚) Arduino Uno。有关Arduino的其他变型,请参见数据表)

与A4连接的SDA(矩阵的数据引脚)。(有关Arduino的其他变型,请参见数据表)

VCC连接至5V。

GND连接到0V。

您也可以参考图中所示的示意图。

步骤3:代码

Arduino代码

首先,我们将包含所有需要的库。

Wire.h:-用于I2C通信

Adafruit_LedBackpack

Adafruit_GFX

所有这些库都可以在Arduino IDE本身中使用。您只需要从Library Manager安装它们。 Sketch 》》 Include Library 》》 Manage Libraries

设置功能()

设置一个无符号整数8位数组,以strore8个二进制值表示8行,每行8位(8列) )。设置I2C通信的地址。

循环功能()

由于我们需要打印字符,因此需要实时的字符代码。最方便的方法是串行发送代码,Arduino将读取串行数据并相应地打印字符。串行发送一个数组可能很麻烦,因此我们可以发送一个字符串,其中所有8个代码(每个8位)用逗号分隔。

读取串行字符串:

if (Serial.available()》0)

{

data=Serial.readStringUntil(‘ ’);

Serial.println(data);

}

阅读文本后,我们需要解码此字符串并获取二进制值。众所周知,输入字符串的格式将始终相同。我们可以对其进行编码以找到子字符串,并将字符串转换为其等效的十进制值。然后我们将传递生成的十进制数组(uint8_t)以在矩阵上打印字符。

将8位字符串转换为十进制:

int val(String str)

{

int v=0;

for (int i=0;i《8;i++)

{

if (str[i]==‘1’)

{

v=v+power(2,(7-i));

}

}

return v;

}

使用幂函数(pow()),您需要处理双精度类型值,因此我们可以编写自己的幂函数为:

int power(int base,int exponent)

{

int c=1;

for (int i=0;i {

c=c*base;

}

return c;

}

现在,最后,我们将代码编写为使用生成的8个十进制值的数组(每行一个)打印字符。

void print_emoji( uint8_t emoji[],String color)

{

matrix.clear();

if (color==“red”)

{

matrix.drawBitmap(0, 0,emoji, 8, 8, LED_RED);

}

else

{

matrix.drawBitmap(0, 0,emoji, 8, 8, LED_GREEN);

}

matrix.writeDisplay();

delay(500);

}

您将很容易理解此代码,因为我们先清除矩阵,然后使用表情符号显示字符使用 matrix.drawBitmap()函数的数组。别忘了在所有格式之后写“ matrix.writeDisplay()”,因为此函数将仅显示到目前为止在矩阵上完成的所有格式。

现在您可以发送字符串具有所有代码值,Arduino将在矩阵上打印字符。您可以从下面下载Arduino代码。出于实验目的,您可以在串行监视器中写

B00111100,B01000010,B10100101,B10000001,B10100101,B10011001,B01000010,B00111100

此字符串,并可以看到矩阵上的字符。/p》

现在,当我们按“打印”按钮时,我们需要从软件自动发送串行数据。为了实现这一点的自动化,我们将制作一个演示8x8矩阵,并为用户提供选择应该给哪些单元着色的工具,然后该软件将自动生成代码并将数据以字符串格式串行发送到Arduino。我选择余下的工作。在处理过程中,我们可以使用64个按钮(带有按下功能的矩形)制作矩阵,并可以在开始时分配特定的值和颜色(让其为值为0的白色)。现在,每当按下按钮时,我们都会将按钮的颜色转换为黑色,并将其值设置为1。如果用户再次按下相同的按钮,则其值将再次更改为0,然后颜色恢复为白色。这将帮助用户轻松地一次又一次地更改代码,并且可以轻松进行修改,而无需再次擦除整个矩阵。单击“打印”按钮,我们将创建一个类似于上面演示示例的字符串。然后,该字符串将被发送到特定的串行端口。

您可以从下面下载处理代码。这是我的第一个处理代码。高度赞赏有关增强编码方式的建议。

您可以看到GUI的外观以及如何使用系统创建字符。在矩阵上创建相同字符几乎不需要几秒钟。

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分