【雕爷学编程】Arduino动手做(195)---HT16k33 矩阵 8*8点阵屏模块6
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百九十五:I2C红色8*8LED点阵屏模块 HT16k33(VK16K33)驱动1088BS 物联网可扩展编程


知识点:VK16K33芯片
是一款存储器映射和多功能LED控制驱动芯片。该芯片支持更大 128 点的显示模式(16SEGs×8COMs) 以及更大 13×3 的按键矩阵扫描电路。VK16K33 的软件配置特性使其适用于多种 LED 应用,包括 LED 模块和显示子系统。VK16K33 通过双向I2C 接口可与大多数微控制器进行通信。
功能特点1.工作电压:4.5V~5.5V2.内部 RC 振荡器3.I2C 总线接口4.16×8 位 RAM 用于存储显示数据5.更大显示模式为16×8:16SEGs和8COMs6.读 /写地址自动递增7.多达13×3 按键矩阵扫描功能8. 16阶调光电路9.封装类型:20/24/28-pin SOP VK16K33此系列IC具有低功耗、高抗杂讯及高系统ESD防护能力;VK16K33整合了LED驱动和按键扫描的功能,将控制面板所需要的功能融合于一身,可降低主MCU的负担及需要的I/O数目。采用I2C的介面更可减少控制面板和主板之间的材料成本、进而降低产品整体成本。
VK16K33有28SOP、24SOP和20SOP三种包装,分别对应三种更大显示点数;16x8点LED和13x3个按键、12x8点LED和10x3个按键,以及8x8点LED和8x3个按键。内建显示记忆体及RC振荡电路;工作电压:4.5V~5.5V;VK16K33支持中断信号和轮询两种工作模式。可选择性的提供按键中断信号给MCU,MCU可不须一直检查按键状态。VK16K33与系统控制晶片的传输只需2根信号线,通过VK16K33 侦测按键输入,可减少主版MCU I/O数目及精简主版及面板的布局线路;因此可降低产品整体成本。 VK16K33适用于家电、影音设备、仪表设备、车用装置等LED显示器/面板的控制及驱动。


【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零七:I2C红色8*8LED点阵模块VK16k33驱动1088BS树莓派物联网可扩展编程
项目十五:不同方向的滚动字符串
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二百零七:I2C红色8*8LED点阵模块VK16k33驱动1088BS树莓派物联网可扩展编程项目十五:不同方向的滚动字符串实验接线:VK16k33 UNOVIN 5VGND GNDSCL A5SDA A4
*/#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"Adafruit_8x8matrix matrix = Adafruit_8x8matrix();void setup() {Serial.begin(9600);Serial.println("8x8 LED Matrix Test");matrix.begin(0x70); // pass in the address
}static const uint8_t PROGMEM
smile_bmp[] =
{ B00111100,B01000010,B10100101,B10000001,B10100101,B10011001,B01000010,B00111100
},
neutral_bmp[] =
{ B00111100,B01000010,B10100101,B10000001,B10111101,B10000001,B01000010,B00111100
},
frown_bmp[] =
{ B00111100,B01000010,B10100101,B10000001,B10011001,B10100101,B01000010,B00111100
};void loop() {matrix.clear();matrix.drawBitmap(1, 0, smile_bmp, 8, 8, LED_ON);matrix.writeDisplay();delay(500);matrix.clear();matrix.drawBitmap(1, 0, neutral_bmp, 8, 8, LED_ON);matrix.writeDisplay();delay(200);matrix.clear();matrix.drawBitmap(1, 0, frown_bmp, 8, 8, LED_ON);matrix.writeDisplay();delay(200);matrix.clear(); // clear displaymatrix.drawPixel(1, 0, LED_ON);matrix.writeDisplay(); // write the changes we just made to the displaydelay(200);matrix.clear();matrix.drawLine(1, 0, 7, 7, LED_ON);matrix.writeDisplay(); // write the changes we just made to the displaydelay(200);matrix.clear();matrix.drawRect(1, 0, 8, 8, LED_ON);matrix.fillRect(2, 2, 4, 4, LED_ON);matrix.writeDisplay(); // write the changes we just made to the displaydelay(200);matrix.clear();matrix.drawCircle(3, 3, 3, LED_ON);matrix.writeDisplay(); // write the changes we just made to the displaydelay(200);matrix.setTextSize(1);matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicelymatrix.setTextColor(LED_ON);for (int8_t x = 0; x >= -36; x--) {matrix.clear();matrix.setCursor(x, 0);matrix.print("Hello");matrix.writeDisplay();delay(50);}matrix.setRotation(3);for (int8_t x = 7; x >= -36; x--) {matrix.clear();matrix.setCursor(x, 0);matrix.print("World");matrix.writeDisplay();delay(50);}matrix.setRotation(0);
}
Arduino实验场景图

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零七:I2C红色8*8LED点阵模块VK16k33驱动1088BS树莓派物联网可扩展编程
项目十六:滚动的一串数字
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二百零七:I2C红色8*8LED点阵模块VK16k33驱动1088BS树莓派物联网可扩展编程项目十六:滚动的一串数字实验接线:VK16k33 UNOVIN 5VGND GNDSCL A5SDA A4
*/#include <Wire.h>
#include "Grove_LED_Matrix_Driver_HT16K33.h"Matrix_8x8 matrix;void setup() {Wire.begin();matrix.init();matrix.setBrightness(0);matrix.setBlinkRate(BLINK_OFF);
}void loop() {// 显示数字“0”并延迟 400nsmatrix.writeNumber(0, 400);matrix.display();// 显示数字 "-2147483648" 并延迟 (300*11)ns// writeNumber()的显示范围是int32_t(从-2147483648到2147483647)matrix.writeNumber(-2147483648, 300);matrix.display();
}
Arduino实验场景图

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零七:I2C红色8*8LED点阵模块VK16k33驱动1088BS树莓派物联网可扩展编程
项目十七:变换的笑脸与流淌的字符"Hello",“World”
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二百零七:I2C红色8*8LED点阵模块VK16k33驱动1088BS树莓派物联网可扩展编程项目十七:变换的笑脸与流淌的字符"Hello","World"实验接线:VK16k33 UNOVIN 5VGND GNDSCL A5SDA A4
*/#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix();void setup() {Serial.begin(9600);Serial.println("8x8 LED Matrix Test");matrix.begin(0x70); // pass in the address
}static const uint8_t PROGMEM
smile_bmp[] =
{ B00111100,B01000010,B10100101,B10000001,B10100101,B10011001,B01000010,B00111100
},
neutral_bmp[] =
{ B00111100,B01000010,B10100101,B10000001,B10111101,B10000001,B01000010,B00111100
},
frown_bmp[] =
{ B00111100,B01000010,B10100101,B10000001,B10011001,B10100101,B01000010,B00111100
};void loop() {matrix.clear();matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_GREEN);matrix.writeDisplay();delay(500);matrix.clear();matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_GREEN);matrix.writeDisplay();delay(500);matrix.clear();matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_GREEN);matrix.writeDisplay();delay(500);matrix.clear(); // clear displaymatrix.drawPixel(0, 0, LED_GREEN);matrix.writeDisplay(); // write the changes we just made to the displaydelay(500);matrix.clear();matrix.drawLine(0, 0, 7, 7, LED_GREEN);matrix.writeDisplay(); // write the changes we just made to the displaydelay(500);matrix.clear();matrix.drawRect(0, 0, 8, 8, LED_GREEN);matrix.fillRect(2, 2, 4, 4, LED_GREEN);matrix.writeDisplay(); // write the changes we just made to the displaydelay(500);matrix.clear();matrix.drawCircle(3, 3, 3, LED_GREEN);matrix.writeDisplay(); // write the changes we just made to the displaydelay(500);matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicelymatrix.setTextSize(1);matrix.setTextColor(LED_GREEN);for (int8_t x = 7; x >= -36; x--) {matrix.clear();matrix.setCursor(x, 0);matrix.print("Hello");matrix.writeDisplay();delay(50);}matrix.setRotation(3);matrix.setTextColor(LED_GREEN);for (int8_t x = 7; x >= -36; x--) {matrix.clear();matrix.setCursor(x, 0);matrix.print("World");matrix.writeDisplay();delay(50);}matrix.setRotation(0);
}
Arduino实验场景图




相关文章:
【雕爷学编程】Arduino动手做(195)---HT16k33 矩阵 8*8点阵屏模块6
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…...
Typescript]基础篇之 tsc 命令解析
[Typescript]基础[TOC]([Typescript]基础篇之 tsc 命令解析 tsc 命令概览编译参数说明--declaration--watch 这里是对 tsc 的一个详细介绍 tsc 命令概览 安装 Typescript 后可以使用 tsc 编译 ts 文件,tsc 命令是否支持其它参数 如果需要查看 tsc 支持的命令,或者…...
测试人员简单使用Jenkins
一、测试人员使用jenkins干什么? 部署测试环境 二、相关配置说明 一般由开发人员进行具体配置 1.Repository URL:填写git地址 2.填写开发分支,测试人员可通过相应分支进行测试环境的构建部署 当多个版本并行时,开发人员可以通过…...
使用RecyclerView构建灵活的列表界面
使用RecyclerView构建灵活的列表界面 1. 引言 在现代移动应用中,列表界面是最常见的用户界面之一,它能够展示大量的数据,让用户可以浏览和操作。无论是社交媒体的动态流、商品展示、新闻列表还是任务清单,列表界面都扮演着不可或…...
linux ubuntu安装mysql
在 Ubuntu 上安装 MySQL 的步骤如下: 更新系统软件包列表: sudo apt update 安装 MySQL 服务器: sudo apt install mysql-server 安装完成,可以使用以下命令检查 MySQL 服务器是否正在运行: sudo systemctl status mysql 如果 MyS…...
计算机网络各层的功能以及常用协议
目录 1. 物理层(Physical Layer)2. 数据链路层(Data Link Layer)3. 网络层(Network Layer)4. 传输层(Transport Layer)5. 应用层(Application Layer) 计算机网…...
M. Minimal and Maximal XOR Sum 2023“钉耙编程”中国大学生算法设计超级联赛(7)hdu7359
Problem - 7359 题目大意:给出一个n个数的排列,可以将任意区间内的所有数头尾翻转,每次操作的费用等于区间长度,要求将其变成一个递增排列,求消耗费用的异或和的最小值和最大值 1<n<1e5 思路:操作…...
C++基础篇(五)内存模型及详细示例
目录 一、内存分区模型二、内存分区代码示例三、new 运算符详解 一、内存分区模型 C程序在运行时,将内存分为四个区域,不同的区域赋予不同的生命周期,以提供强大的灵活编程。 代码区:存储程序的二进制代码,通常是只读…...
基于 JMeter API 开发性能测试平台
目录 背景: 常用的 JMeter 类和功能的解释: JMeter 编写性能测试脚本的大致流程示意图: 源码实现方式: (1) 环境初始化 (2) 环境初始化 (3) 创建测试计划 (4) 创建 ThreadGroup (5) 创建循环控制器 (6) 创建 Sampler (…...
HBase-写流程
写流程顺序正如API编写顺序,首先创建HBase的重量级连接 (1)读取本地缓存中的Meta表信息;(第一次启动客户端为空) (2)向ZK发起读取Meta表所在位置的请求; (…...
[mongo]应用场景及选型
应用场景及选型 MongoDB 数据库定位 OLTP 数据库横向扩展能力,数据量或并发量增加时候架构可以自动扩展灵活模型,适合迭代开发,数据模型多变场景JSON 数据结构,适合微服务/REST API基于功能选择 MongoDB 关系型数据库迁移 从基…...
linux c語言之crc16错误检测的使用
一、是什么? CRC16是循环冗余校验的一种,是一种根据数据产生校验码的方法。它是一种比较常用的校验算法,可以用于错误检测和纠正等方面。CRC16是16位的校验码,可以检测出32位以内的错误。在通信协议、网络传输等领域中,CRC16被广泛应用. 二、使用步骤 1.引入库 代码如…...
搭建本地开发服务器
搭建本地开发服务器 :::warning 注意 在上一个案例的基础上添加本地开发服务器,请保留上个案例的代码。如需要请查看 Webpack 使用。 ::: 搭建本地开发服务器这一个环节是非常有必要的,我们不可能每次修改源代码就重新打包一次。这样的操作是不是太繁琐…...
linux脚本
程序后台运行: nohup java -jar xxx.jar &>hello.log & 后台运行java-jar命令,并且将日志输出到hello.log文件 防火墙: 开启防火墙:systemctl start firewalld 开放指定端口:firewall-cmd --zonepublic --…...
企升编辑器word编写插件
面向用户群体招投标人员,用统一的模板来编写标书,并最终合并标书。项目经理,编写项目开发计划书,项目验收文档等。开发人员,编写项目需求规格说明书、设计说明书、技术总结等文档。其他文档编写工作量较多的岗位人员。…...
怎么在JMeter中的实现关联
我们一直用的phpwind这个系统做为演示系统, 如果没有配置好的同学, 请快速配置之后接着往下看哦. phpwind发贴时由于随着登陆用户的改变, verifycode是动态变化的, 因此需要用到关联. LoadRunner的关联函数是reg_save_param, Jmeter的关联则是利用后置处理器来完成. 在需要查…...
算法通关村第六关——如何使用中序和后序来恢复一颗二叉树
1 树的基础知识 1.1 树的定义 树(Tree):表现得是一种层次关系,为 n ( n ≥ 0 ) n(n≥0) n(n≥0)个节点构成的有限集合,当n0时,称为空树,对于任一…...
leetcode算法题--判断是否能拆分数组
原题链接:https://leetcode.cn/problems/check-if-it-is-possible-to-split-array/ 一开始思路想错了。。导致浪费很多时间 其实只要能找到存在一个子数组,子数组长度为2,这个子数组符合条件就一定能拆分。。 func canSplitArray(nums []i…...
基于Flask的模型部署
基于Flask的模型部署 一、背景 Flask:一个使用Python编写的轻量级Web应用程序框架; 首先需要明确模型部署的两种方式:在线和离线; 在线:就是将模型部署到类似于服务器上,调用需要通过网络传输数据&…...
【资料分享】全志科技T507-H开发板规格书
1 评估板简介 创龙科技TLT507-EVM是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53国产工业评估板,主频高达1.416GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
