Arduino基础入门篇20—心动点阵

|

    阅读本文大概需要5分钟。

|

本篇继续学习LED点阵屏的使用,实现心型跳动效果。

1. 实验材料

  • Uno R3开发板

  • 配套USB数据线

  • 面包板及配套连接线

  • 8*8点阵屏

2. 实验步骤

1. 根据原理图搭建电路。

根据点阵屏管脚定义,点阵屏的[9, 14, 8, 12, 1, 7, 2, 5]分别连接开发板的[6,11, 5, 9, 14, 4, 15, 2],这8个引脚为LED的正极;

点阵屏的[13, 3, 4, 10, 6, 11, 15, 16]分别连接开发板的[10,16, 17, 7, 3, 8, 12, 13],这8个引脚为LED的负极。

这里需要注意,Uno R3开发板的A0~A5也可以做普通GPIO使用,编号分别为14~19。

实验原理图如下图所示:

Arduino基础入门篇20—心动点阵
实验原理图

实物连接图如下图所示:

Arduino基础入门篇20—心动点阵
实验原理图

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

 
 1/*
2      Heart
3      点阵屏心型跳动显示
4*/

5int  leds[8]  =  {61159144152 };   //点阵屏正极引脚
6int  gnds[8]  =  {1016177381213 };   //点阵屏负极引脚
7
8//大“心型”的数据
9int  table1[8][8]  =
10{
11    00000000,
12    01100110,
13    11111111,
14    11111111,
15    11111111,
16    01111110,
17    00111100,
18    00011000,
19 };
20
21//小“心型”的数据
22int  table2[8][8]  =
23{
24    00000000,
25    00000000,
26    00100100,
27    01111110,
28    01111110,
29    00111100,
30    00011000,
31    00000000,
32 };
33
34void  setup()  {
35    for  (int  i  =  0;   i  <  8;   i++)
36    {
37        pinMode(leds[i],  OUTPUT);
38        pinMode(gnds[i],  OUTPUT);
39        digitalWrite(gnds[i],  HIGH);   //负极引脚拉高,熄灭所有LED
40    }
41 }
42
43void  ledclean()
44
{
45    for  (int  i  =  0;   i  <  8;   i++)//将点阵屏正极ladies,负极拉高,关断显示
46    {
47        digitalWrite(leds[i],  LOW);
48        digitalWrite(gnds[i],  HIGH);
49    }
50 }
51
52//心型显示函数
53void  ledShow(int  temp[8][8])
54
{
55    for  (int  j  =  0  ;   j  <  8;   j++)
56    {
57        digitalWrite(gnds[j],  LOW);
58        for  (int  i  =  0;   i  <  8;   i++)
59        {
60            digitalWrite(leds[i],  temp[i][j]);
61            delayMicroseconds(100);
62        }
63        digitalWrite(gnds[j],  HIGH);
64        ledclean();
65    }
66 }
67
68void  loop()  {
69
70    for  (int  i  =  0;   i  <  100;   i++)  //利用for循环达到刷新延时的效果
71    {
72        ledShow(table1);
73    }
74    for  (int  i  =  0;   i  <  50;   i++)//利用for循环达到刷新延时的效果
75    {
76        ledShow(table2);
77    }
78
79 }

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

Arduino基础入门篇20—心动点阵
程序下载

3. 实验现象

点阵屏上心型在不断跳动。

Arduino基础入门篇20—心动点阵
实验现象

4. 实验分析

程序中定义了两个二维数组,分别用来存储两个不同大小的心型显示数据,在显示函数中通过两个for循环来遍历数组。在loop()中没有使用 delay()函数来做延时处理,因为与数码管类似,这种LED显示设备需要不断刷新, delay()函数使程序暂停等待延时会造成显示闪烁甚至熄灭的情况。使用for循环来控制显示的次数,进而控制显示时间来达到延时效果。

Arduino基础入门篇20—心动点阵
扫码加入微信公众号:TonyCode


原文始发于微信公众号(

TonyCode

):Arduino基础入门篇20—心动点阵

|

发表评论