【雕爷学编程】Arduino动手做(22)——8X8 LED点阵MAX7219屏7

news2024/11/28 6:46:37

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来—小小的进步或是搞不定的问题,希望能够抛砖引玉。

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴屏幕)

在这里插入图片描述

8×8 LED矩阵 MAX7219显示模块实验所需硬件清单
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
8*8 发光管 1088AS 共阴点阵屏X1
8×8 LED矩阵 MAX7219显示模块X2
Proto Shield 原型扩展板(带mini面包板)X1

在这里插入图片描述

程序一:快速扫描所有64个点
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序一:快速扫描所有64个点
  下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
  实验连线:
  VCC  →  5V
  GND  →  GND
  DIN 接 D11 (MOSI)
  CS  接 D10 (SS)
  CLK 接 D13 (SCK)
*/

#include <Sprite.h>  // 点阵之前的精灵
#include <Matrix.h>  // 点阵驱动库

const int numChips = 1;

//定义引脚DIN, CLK, CS
Matrix myLeds = Matrix(11, 13, 10, numChips);

void setup() {
  myLeds.clear();//点阵屏初始化
}

void loop() {
  byte x, y;

  // 一次点亮一个 LED,从左到右扫描
  // 从上到下...对于测试矩阵很有用
  for (y = 0; y < 8; y++) {
    for (x = 0; x < (numChips * 8); x++) {
      myLeds.write(x, y, HIGH);
      delay(20);
      myLeds.write(x, y, LOW);
    }
  }
}

在这里插入图片描述

程序四:四个角落的闪烁光点
(1)实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述
在这里插入图片描述

程序五:循环变幻对角线光点
实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述
在这里插入图片描述

程序六:间隔一秒,满屏闪烁
实验开源图形编程(Mind+、编玩边学)
设置满屏亮灯
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序七:三种图案的闪烁变脸
实验开源图形编程(Mind+、编玩边学)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序八:快速显示字符,逐点刷屏
Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序八:快速显示字符,逐点刷屏
*/

//导入驱动库
#include "LedControl.h"
//定义点阵屏的引脚,接线DIN-D11,CLK-D13,CS-D10
LedControl lc = LedControl(11, 13, 10, 1);

//我们总是在显示更新之间等待一段时间
unsigned long delaytime = 100;

void setup() {
  //MAX72XX 启动时处于省电模式,我们得叫醒
  lc.shutdown(0, false);
  //将亮度设置为中等值
  lc.setIntensity(0, 8);
  //并清除显示
  lc.clearDisplay(0);
}

//快速显示字符
void writeArduinoOnMatrix() {
  //这里是字符的数据
  byte a[5] = {B01111110, B10001000, B10001000, B10001000, B01111110};
  byte r[5] = {B00111110, B00010000, B00100000, B00100000, B00010000};
  byte d[5] = {B00011100, B00100010, B00100010, B00010010, B11111110};
  byte u[5] = {B00111100, B00000010, B00000010, B00000100, B00111110};
  byte i[5] = {B00000000, B00100010, B10111110, B00000010, B00000000};
  byte n[5] = {B00111110, B00010000, B00100000, B00100000, B00011110};
  byte o[5] = {B00011100, B00100010, B00100010, B00100010, B00011100};

  //现在以一个小的延迟一个一个地显示它们
  lc.setRow(0, 0, a[0]);
  lc.setRow(0, 1, a[1]);
  lc.setRow(0, 2, a[2]);
  lc.setRow(0, 3, a[3]);
  lc.setRow(0, 4, a[4]);
  delay(delaytime);
  lc.setRow(0, 0, r[0]);
  lc.setRow(0, 1, r[1]);
  lc.setRow(0, 2, r[2]);
  lc.setRow(0, 3, r[3]);
  lc.setRow(0, 4, r[4]);
  delay(delaytime);
  lc.setRow(0, 0, d[0]);
  lc.setRow(0, 1, d[1]);
  lc.setRow(0, 2, d[2]);
  lc.setRow(0, 3, d[3]);
  lc.setRow(0, 4, d[4]);
  delay(delaytime);
  lc.setRow(0, 0, u[0]);
  lc.setRow(0, 1, u[1]);
  lc.setRow(0, 2, u[2]);
  lc.setRow(0, 3, u[3]);
  lc.setRow(0, 4, u[4]);
  delay(delaytime);
  lc.setRow(0, 0, i[0]);
  lc.setRow(0, 1, i[1]);
  lc.setRow(0, 2, i[2]);
  lc.setRow(0, 3, i[3]);
  lc.setRow(0, 4, i[4]);
  delay(delaytime);
  lc.setRow(0, 0, n[0]);
  lc.setRow(0, 1, n[1]);
  lc.setRow(0, 2, n[2]);
  lc.setRow(0, 3, n[3]);
  lc.setRow(0, 4, n[4]);
  delay(delaytime);
  lc.setRow(0, 0, o[0]);
  lc.setRow(0, 1, o[1]);
  lc.setRow(0, 2, o[2]);
  lc.setRow(0, 3, o[3]);
  lc.setRow(0, 4, o[4]);
  delay(delaytime);
  lc.setRow(0, 0, 0);
  lc.setRow(0, 1, 0);
  lc.setRow(0, 2, 0);
  lc.setRow(0, 3, 0);
  lc.setRow(0, 4, 0);
  delay(delaytime);
}

/*
  此功能连续点亮一些 LED。
  该模式将在每一行上重复。
  该模式将与行号一起闪烁。
  行号 4 (index==3) 将闪烁 4 次,以此类推。
*/
void rows() {
  for (int row = 0; row < 8; row++) {
    delay(delaytime);
    lc.setRow(0, row, B10100000);
    delay(delaytime);
    lc.setRow(0, row, (byte)0);
    for (int i = 0; i < row; i++) {
      delay(delaytime);
      lc.setRow(0, row, B10100000);
      delay(delaytime);
      lc.setRow(0, row, (byte)0);
    }
  }
}

/*
  此功能点亮一列中的一些 LED。
  该模式将在每一列上重复。
  该模式将与列号一起闪烁。
  第 4 列(索引==3)将闪烁 4 次,以此类推。
*/
void columns() {
  for (int col = 0; col < 8; col++) {
    delay(delaytime);
    lc.setColumn(0, col, B10100000);
    delay(delaytime);
    lc.setColumn(0, col, (byte)0);
    for (int i = 0; i < col; i++) {
      delay(delaytime);
      lc.setColumn(0, col, B10100000);
      delay(delaytime);
      lc.setColumn(0, col, (byte)0);
    }
  }
}

/*
  此功能将点亮矩阵上的每个 Led。
  LED 将与行号一起闪烁。
  行号 4 (index==3) 将闪烁 4 次,以此类推。
*/
void single() {
  for (int row = 0; row < 8; row++) {
    for (int col = 0; col < 8; col++) {
      delay(delaytime);
      lc.setLed(0, row, col, true);
      delay(delaytime);
      for (int i = 0; i < col; i++) {
        lc.setLed(0, row, col, false);
        delay(delaytime);
        lc.setLed(0, row, col, true);
        delay(delaytime);
      }
    }
  }
}

//循环写入
void loop() {
  writeArduinoOnMatrix();
  rows();
  columns();
  single();
}

在这里插入图片描述
程序九:依序点亮每一颗LED 再依序熄灭每一颗LED
Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序九://依序点亮每一颗LED 再依序熄灭每一颗LED
  引脚定义
  DIN = D11
  CS  = D10
  CLK = D13
*/

//依序亮每一颗LED 再依序灭每一颗LED
#include "LedControl.h"  //引用 LedControl 库
LedControl lc = LedControl(11, 13, 10, 1); //定义DIN,CLK,CS

void setup() {
  lc.shutdown(0, false); // 关闭省电模式
  lc.setIntensity(0, 0); // 设定亮度为 0 (介于0~15之间)
  lc.clearDisplay(0);    // 清除屏幕
}

void loop() {
  int col;
  int row;
  for (col = 0; col < 8; col++) {
    for (row = 0; row < 8; row++) {
      lc.setLed(0, row, col, 1); // 将Led的列,行设定为亮
      delay(100);
    }
  }
  for (col = 7; col >= 0; col--) {
    for (row = 7; row >= 0; row--) {
      lc.setLed(0, row, col, 0); // 将Led的列,行设定为暗
      delay(100);
    }
  }
}

在这里插入图片描述

程序十:依序显示 A,r,d,u,i,n,o
Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十:依序显示 A,r,d,u,i,n,o
  引脚定义
  DIN = D11
  CLK = D13
  CS  = D10
*/

#include "LedControl.h"  //引用 LedControl 库

LedControl lc = LedControl(11, 13, 10, 1); //定义DIN,CLK,CS

//字型码A,r,d,u,i,n,o
byte a[5]={B01111110,B10001000,B10001000,B10001000,B01111110};
byte r[5]={B00111110,B00010000,B00100000,B00100000,B00010000};
byte d[5]={B00011100,B00100010,B00100010,B00010010,B11111110};
byte u[5]={B00111100,B00000010,B00000010,B00000100,B00111110};
byte i[5]={B00000000,B00100010,B10111110,B00000010,B00000000};
byte n[5]={B00111110,B00010000,B00100000,B00100000,B00011110};
byte o[5]={B00011100,B00100010,B00100010,B00100010,B00011100};


void setup() {
  lc.shutdown(0, false); // 关闭省电模式
  lc.setIntensity(0, 15); // 设定亮度为 0 (介于0~15之间)
  lc.clearDisplay(0);    // 清除屏幕
}

void loop() {

  //显示 A
  for(int j=0;j<5;j++){
    //显示 0~4 行
    lc.setColumn(0,j,a[j]);
  }
  delay(500);      

  //显示 r
  for(int j=0;j<5;j++){
    //显示 0~4 行
    lc.setColumn(0,j,r[j]);
  }    
  delay(500);      

  //显示 d
  for(int j=0;j<5;j++){
    //显示 0~4 行
    lc.setColumn(0,j,d[j]);
  }    
  delay(500);      

  //显示 u
  for(int j=0;j<5;j++){
    //显示 0~4 行
    lc.setColumn(0,j,u[j]);
  }    
  delay(500);      

  //显示 i
  for(int j=0;j<5;j++){
    //显示 0~4 行
    lc.setColumn(0,j,i[j]);
  }    
  delay(500);      

  //显示 n
  for(int j=0;j<5;j++){
    //显示 0~4 行
    lc.setColumn(0,j,n[j]);
  }    
  delay(500);      

  //显示 o
  for(int j=0;j<5;j++){
    //显示 0~4 行
    lc.setColumn(0,j,o[j]);
  }    
  delay(50);      
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/769468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java开发中使用sql简化开发

引语&#xff1a; 在Java开发中&#xff0c;我们更希望数据库能直接给我们必要的数据&#xff0c;然后在业务层面直接进行使用&#xff0c;所以写一个简单的sql语句有助于提高Java开发效率&#xff0c;本文由简单到复杂的小白吸收&#xff0c;还请多多指教。 使用MySQL数据库…

GO 语言GC

目录 写屏障 读屏障 GO语言GC准备 堆内存结构: GC内存分配: GC触发&#xff1a; P的作用: 写屏障 实现强弱三色不式,为了避免误删,则实现写屏障. 写屏障是在写操作中插入指令,目的是把数据对象的修改通知到GC GO语言支持两种写屏障 读屏障 非移动垃圾回收(例如 三色)天…

详解c++---智能指针

目录标题 为什么会有智能指针智能指针模拟实现库中的智能指针auto_ptrunique_ptrshared_ptr 智能指针的线程安全问题循环智能指针weak_ptr定制删除器定制删除器的实现 为什么会有智能指针 根据前面的知识我们知道使用异常可能会导致部分资源没有被正常释放&#xff0c;因为异常…

Jupyter入门使用教程

1 Jupyter Notebook与Jupyter Lab简介 Jupyter Notebook是一个开源的Web应用&#xff0c;在深度学习领域非常活跃。用户可以在这里创建和分享可执行代码、可视化结构和注释说明的文档。 Jupyter Notebook以网页的形式展现&#xff0c;用户可以在此网页中直接编辑代码、运行程…

语法怎么学 | 7-非谓语动词

为什么要学非谓语动词 太常见了&#xff0c;非谓语动词可以做句子中&#xff0c;除了谓语的任何成分 是一个非常重要课题&#xff0c;弄懂了这个&#xff0c;就相当于弄懂了语法的90%&#xff0c;特别是语法题 怎样学习 我在小破站上查了不少教程&#xff0c;大多数都很好&…

三种视频字幕提取工具让你更好地阅读和学习

视频字幕提取技术是指通过计算机算法自动从视频中提取出字幕文本的技术。这项技术能够大大提高视频的可用性&#xff0c;使得聋哑人士、语言学习者以及听力不佳的观众可以更好地理解视频内容。那么你知道视频字幕提取工具免费有哪些吗&#xff1f;接下来我将分享三款我亲测好用…

CSDN铁粉是什么?看完这篇你也可以获得忠实铁粉!(详细总结)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; 什么是铁粉&#x1f3ac; 为什么存在铁粉⁉️ 为什么我的铁粉那么少 &#x1…

Spring【AOP】

AOP-面向切面编程 AOP&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 SpringAop中&#xff0c;通过Advice定义横切逻辑&#xff0c;并支持5种类型的Advice&#xff1a; 导入依赖 <dependency><groupId>…

Linux基础服务11——LNMP架构

文章目录 一、环境说明二、安装nginx三、安装mysql四、安装php五、配置nginx六、配置php七、验证 一、环境说明 主机服务192.168.161.129nginx192.168.161.131mysql192.168.161.132php 二、安装nginx 1.参考文章&#xff0c;nginx部署。 三、安装mysql 1.参考文章&#x…

隐私计算大会亮点前瞻:“隐私计算互联互通标准及第二批实践示范征集项目”解读预告

7月26日&#xff0c;2023隐私计算大会将于青岛正式扬帆&#xff0c;本次大会将齐聚业内专家大咖共论行业最新进展&#xff0c;洞察未来发展趋势&#xff0c;共同推进隐私计算行业蓬勃发展。本次大会将公开正式发布解读《隐私计算应用研究报告&#xff08;2023&#xff09;》、“…

QT6之QtWidgets和QWidget

1、概念 如上图&#xff1a; QtWidgets是模块&#xff0c;它不是类。它与Qt core模块等是同级别的模块&#xff0c;它提供了一系列类的来创建界面相关。QWidget是类&#xff0c;它不是模块。它是所有用户界面对象的基类&#xff0c;QWidget 及其子类是开发桌面应用的核心&…

隐私计算大会亮点前瞻:《隐私计算应用研究报告(2023年)》发布预告

7月26日&#xff0c;2023隐私计算大会将于青岛正式扬帆&#xff0c;本次大会将齐聚业内专家大咖共论行业最新进展&#xff0c;洞察未来发展趋势&#xff0c;共同推进隐私计算行业蓬勃发展。 本次大会将公开正式发布《隐私计算应用研究报告&#xff08;2023&#xff09;》、“隐…

IDEA 安装完成无法打开排查插件问题

以前我自己遇到IDEA&#xff08;19.3&#xff09;突然打不开了、所以写过一篇IDEA无法正常启动&#xff08;打不开&报错&#xff09;_idea启动报错_DJyzh的博客-CSDN博客版权声明&#xff1a;转载请附上文章地址https://blog.csdn.net/qq_42672839IDEA无法正常启动 今天在清…

演讲实录:以 AI 变革组织运营与管理

7月14日&#xff0c;以“释放数智生产力”为主题的 Kyligence 用户大会在上海前滩香格里拉大酒店成功举行。大会现场发布了 Kyligence 最新产品家族&#xff1a;AI 数智助理——Kyligence Copilot 的预览版、一站式指标平台 Kyligence Zen 的 Cloud 和 Enterprise 版本&#xf…

0基础学习VR全景平台篇 第66篇:VR直播-如何管理VR直播活动

一、电脑端管理 已创建好的VR直播活动可以在【管理后台】-【作品管理】-【VR直播】列表下查看到。 1、点击活动标题可以直接进入电脑端的播放页面&#xff0c;点击“编辑”按钮可以进入活动的设置界面。 2、电脑端播放页 该链接地址是可以自适应电脑端和手机端的&#xff0c…

C国演义 [第十二章]

第十二章 打家劫舍题目理解步骤dp数组递推公式初始化遍历顺序 代码 打家劫舍II题目理解步骤递推公式初始化遍历顺序 代码 打家劫舍 力扣链接 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋…

微服务Day2——Nacos注册中心入门

Nacos注册中心 1、Nacos简介 国内公司一般都推崇阿里巴巴的技术&#xff0c;比如注册中心&#xff0c;SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 2、Mac安装 进入Nacos官网下载安装包 http://nacos.io/zh-cn/ Github仓库地址 下载解压后进入nacos/bin目录下 …

【论文解读】2017 STGCN: Spatio-Temporal Graph Convolutional Networks

一、简介 使用历史速度数据预测未来时间的速度。同时用于序列学习的RNN(GRU、LSTM等)网络需要迭代训练&#xff0c;它引入了逐步累积的误差&#xff0c;并且RNN模型较难训练。为了解决以上问题&#xff0c;我们提出了新颖的深度学习框架STGCN&#xff0c;用于交通预测。 二、…

【云原生|Docker系列第4篇】Docker的容器的入门实践

欢迎来到云原生系列的第4篇博客&#xff01;在前面的两篇博客中&#xff0c;我们已经学习了Docker镜像的基本概念和入门实践。本篇博客将带您深入了解Docker容器&#xff0c;探索如何使用Docker容器来构建、运行和管理应用程序。无论您是新手还是有一定经验的开发者&#xff0c…

PHP循环

PHP while 循环 PHP SwitchPHP For 循环 PHP while 循环在指定条件为 true 时执行代码块。 PHP 循环 在您编写代码时&#xff0c;经常需要反复运行同一代码块。我们可以使用循环来执行这样的任务&#xff0c;而不是在脚本中添加若干几乎相等的代码行。 在 PHP 中&#xff…