0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自定义字符生成器的制作

454398 来源:网络整理 作者:网络整理 2019-11-19 10:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:组件

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

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

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

面包板

电源

步骤2:原理图

自定义字符生成器的制作

接线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

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

    关注

    190

    文章

    6516

    浏览量

    196053
  • 面包板
    +关注

    关注

    4

    文章

    299

    浏览量

    18695
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 中的自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检查,用户可实现工作流程的高效自动化运行。
    的头像 发表于 11-30 14:13 327次阅读
    无图形界面模式下<b class='flag-5'>自定义</b>检查工具的应用

    采用汇编指示符来使用自定义指令

    具体实现 1、采用.word .half .dword等汇编指示符直接插入自定义指令,这种方法需要自己指定寄存器。其中.word为插入一个字的数据即32位,.half为插入半字即16位
    发表于 10-28 06:02

    大彩讲堂:VisualTFT软件如何自定义圆形进度条

    VisualTFT软件如何自定义圆形进度条
    的头像 发表于 07-07 17:10 1240次阅读
    大彩讲堂:VisualTFT软件如何<b class='flag-5'>自定义</b>圆形进度条

    KiCad 中的自定义规则(KiCon 演讲)

    “  Seth Hillbrand 在 KiCon US 2025 上为大家介绍了 KiCad 的规则系统,并详细讲解了自定义规则的设计与实例。  ”   演讲主要围绕 加强 KiCad 中的自定义
    的头像 发表于 06-16 11:17 1526次阅读
    KiCad 中的<b class='flag-5'>自定义</b>规则(KiCon 演讲)

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘可以
    的头像 发表于 06-05 14:19 1689次阅读

    LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令自定义封装

    LabVIEW高效加工指令自定义封装
    的头像 发表于 04-08 13:49 3290次阅读
    LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令<b class='flag-5'>自定义</b>封装

    如何添加自定义单板

    在开发过程中,用户有时需要创建自定义板配置。本节将通过一个实例讲解用户如何创建属于自己的machine,下面以g2l-test.conf为例进行说明。
    的头像 发表于 03-12 14:43 1108次阅读

    Python中的迭代器与生成器

    Python迭代器与生成器 列表生成式 列表生成式也叫做列表推导式,它本身还是列表,只不过它是根据我们定义的规则来生成一个真实的列表。  
    的头像 发表于 02-20 10:43 688次阅读

    如何快速创建用户自定义Board和App工程

    概述自HPM_SDKv1.7.0发布开始,在HPM_ENV中新增了user_template文件夹,以方便用户快速创建自定义的Board和App工程。user_template是用户模板工程,用户
    的头像 发表于 02-08 13:38 1018次阅读
    如何快速创建用户<b class='flag-5'>自定义</b>Board和App工程

    开源随机数生成器库OpenRNG助力实现移植到Arm平台时的最佳性能

    OpenRNG 实现了多种生成器和分布方式。生成器算法可生成“看似随机”并具有某些统计特性的序列,我们将在下文进行讨论。分布方式会将序列映射到常见的概率分布概念,如高斯分布或二项分布
    的头像 发表于 02-08 09:24 1838次阅读
    开源随机数<b class='flag-5'>生成器</b>库OpenRNG助力实现移植到Arm平台时的最佳性能

    Altium Designer 15.0自定义元件设计

    电子发烧友网站提供《Altium Designer 15.0自定义元件设计.pdf》资料免费下载
    发表于 01-21 15:04 0次下载
    Altium Designer 15.0<b class='flag-5'>自定义</b>元件设计

    超详细!FMU生成器用户手册来啦~

    FMU生成器是TSMaster中用于将模型打包生成FMU文件的一个工具,目前支持FMI3.0和FMI2.0版本,FMU类型仅支持Co-Simulation(CS),即联合仿真FMU。本文将介绍FMU
    的头像 发表于 01-17 20:02 1677次阅读
    超详细!FMU<b class='flag-5'>生成器</b>用户手册来啦~

    think-cell:自定义think-cell(四)

    C.5 设置默认议程幻灯片布局 think-cell 议程可以在演示文稿中使用特定的自定义布局来定义议程、位置和议程幻灯片上的其他形状,例如标题或图片。通过将此自定义布局添加到模板,您可以为整个组织
    的头像 发表于 01-13 10:37 891次阅读
    think-cell:<b class='flag-5'>自定义</b>think-cell(四)

    think-cell;自定义think-cell(一)

    本章介绍如何自定义 think-cell,即如何更改默认颜色和其他默认属性;这是通过 think-cell 的样式文件完成的,这些文件将在前四个部分中进行讨论。 第五部分 C.5 设置默认议程幻灯片
    的头像 发表于 01-08 11:31 1261次阅读
    think-cell;<b class='flag-5'>自定义</b>think-cell(一)

    EE-322:面向SHARC处理器的专家代码生成器

    电子发烧友网站提供《EE-322:面向SHARC处理器的专家代码生成器.pdf》资料免费下载
    发表于 01-07 14:04 0次下载
    EE-322:面向SHARC处理器的专家代码<b class='flag-5'>生成器</b>