Arduino基础入门篇20—心动点阵
2018-09-15 14:11
本篇继续学习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。
实验原理图如下图所示:
实验原理图实物连接图如下图所示:
实验原理图2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
1/*2 Heart
3 点阵屏心型跳动显示
4*/
5int leds[8] = {6, 11, 5, 9, 14, 4, 15, 2}; //点阵屏正极引脚
6int gnds[8] = {10, 16, 17, 7, 3, 8, 12, 13}; //点阵屏负极引脚
7
8//大“心型”的数据
9int table1[8][8] =
10{
11 0, 0, 0, 0, 0, 0, 0, 0,
12 0, 1, 1, 0, 0, 1, 1, 0,
13 1, 1, 1, 1, 1, 1, 1, 1,
14 1, 1, 1, 1, 1, 1, 1, 1,
15 1, 1, 1, 1, 1, 1, 1, 1,
16 0, 1, 1, 1, 1, 1, 1, 0,
17 0, 0, 1, 1, 1, 1, 0, 0,
18 0, 0, 0, 1, 1, 0, 0, 0,
19};
20
21//小“心型”的数据
22int table2[8][8] =
23{
24 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 1, 0, 0, 1, 0, 0,
27 0, 1, 1, 1, 1, 1, 1, 0,
28 0, 1, 1, 1, 1, 1, 1, 0,
29 0, 0, 1, 1, 1, 1, 0, 0,
30 0, 0, 0, 1, 1, 0, 0, 0,
31 0, 0, 0, 0, 0, 0, 0, 0,
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. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。
程序下载3. 实验现象
点阵屏上心型在不断跳动。
4. 实验分析
程序中定义了两个二维数组,分别用来存储两个不同大小的心型显示数据,在显示函数中通过两个for循环来遍历数组。在loop()中没有使用delay()函数来做延时处理,因为与数码管类似,这种LED显示设备需要不断刷新,delay()函数使程序暂停等待延时会造成显示闪烁甚至熄灭的情况。使用for循环来控制显示的次数,进而控制显示时间来达到延时效果。
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com