李英 赵书锐 姜欣欣

摘要:该文使用Arduino硬件开发平台,以Arduino UNO电路板为中心,配合使用8乘8矩形点阵完成电路的设计。在完成的过程中,本文采纳的Arduino UNO电路板,与此同时配合应用Arduino IDE软件并利用Arduino语言进行编程以实现8乘8点阵上“心形”的显示。本文提到的8乘8点阵,Arduino电路板以及使用的语言均可供读者参考学习。

关键词:Arduino;8乘8“心形”显示;Arduino语言

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2019)13-0247-02

1 引言

当今社会,电子技术行业在不断的发展,在不断的学习过程中,硬件开发不仅可以增加学习者的开拓思维能力,还可以提高开发者的创新能力。Arduino以其简单的开发方式和容易操作的特点成了目前流行的开源硬件和硬件开发平台,更是硬件开发的趋向[1]。这使得使用Arduino的开发者们不再需要大量的时间学习类似于单片机等硬件的复杂机理,从而可以节约学习成本,也让开发者们更加关注开发本身的创意性和可行性,大大减少了开发需要的时间周期,从而更快地完成项目的开发。

总之由于Arduino的多种优势,越来越多的人开始使用Arduino,其中包括专业的硬件开发者,甚至包括一些软件开发者通过使用Arduino来进入硬件等开发的领域[2]。

本文所提到的8乘8点阵的“心形”显示实验就是应用Arduino开发板对8乘8点阵进行的控制的一个实验。

2 Arduino简介

Arduino是一个在可以不需花费过多时间学习就能使用的硬件和软件的基础上的一个开源电子平台。它是为任何做互动项目的人设计的。它包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。 它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境[3]。Arduino包括两个主要的部分:一是硬件部分,就是我们在电路连接过程中使用到的Arduino电路板;二是软件部分,即Arduino IDE,就是我们在计算机中编写程序时使用到的程序开发环境。 Arduino能通过各种各样的传感器来感知环境,也能通过许多其他的装置来影响环境。Arduino板能够读取输入-传感器上的灯,按钮上的手指,或者推特上的信息-并将其转换成输出-激活马达,打开LED,在线发布一些信息。通过Arduino的编程语言来编写程序后,编译生成二进制文件,可以烧录进Arduino板子上的微控制器,从而达到程序控制的目的[4]。基于Arduino的一些项目,也可以通过Arduino和其他一些在PC上运行的软件之间进行通信来实现。

总之,Arduino以其灵活性和操作简单的特点越来越受到我们的欢迎,也越来越受到对硬件开发有兴趣的人的青睐。

3 硬件电路设计

3.1硬件介绍

本文使用的硬件主要包括Arduino开发板、面包板两块、USB数据线、8乘8矩形点阵一个、连接线若干、220欧姆电阻若干。

本文使用的Arduino开发板类型为Arduino Uno;面包板的作用为使8乘8点阵的引脚可以与Arduino开发板之间可以用导线进行连接;USB数据线的作用为将Arduino开发板与电脑进行连接,从而使得Arduino IDE可以对Arduino开发板的各个引脚进行控制;8乘8点阵共由64个发光二极管组成,并且每个发光二极管位于行线和列线的交叉点处,如果要点亮其中一个发光二极管则将此二极管对应的行置高电平,对应的列置低电平即可;如要将最后一个发光二极管点亮,则5脚接高电平16脚接低电平,则最后一个发光二极管就被点亮了[5]。

3.2电路设计

首先对8乘8点阵各个引脚进行识别,点阵共有四个边,其中一个边上有丝印并且在中间有塑料向下突出,将点阵正向放置,带有丝印的一边朝向自己,左侧第一个引脚为一号引脚,依次逆时针排序增加,共有16个引脚。

然后将各个引脚与Arduino开发板进行相应的连接。连接示意图如图1所示,实际连接情况如图2所示。电阻主要起到限流作用。

3.3实现功能

在程序验证完成显示编译完成后,即可上传到相应的Arduino开发板上,实现的功能应为每隔1秒钟循环显示“心形”。

4 软件设计

4.1软件设计流程

首先需要对8乘8点阵的各个与Arduino开发板连接的引脚进行行列号的定义,来实现Arduino各个引脚对点阵行列的控制,然后将Arduino引脚设置为输出模式以控制点阵,并且全部都初始化为低电平,随后定义了一个显示函数,其作用是将点阵的各列依次选通,等待信号灯被点亮(利用人眼的视觉暂停作用,选通时间足够短的话,会造成多列同时点亮的效果),同时设置了一个清除函数目的是为了减轻信号灯点亮时产生的余晖,给出“心形”的数据后利用loop()函数对“心形”数据进行显示。程序流程图如图3所示。

4.2 Arduino语言程序

const int row1 = 2; // Arduino Pin2 连接点阵 行号9

const int row2 = 3; // Arduino Pin3 连接点阵 行号 14

const int row3 = 4; // Arduino Pin4 连接点阵 行号8

const int row4 = 5; // Arduino Pin5 连接点阵 行号 12

const int row5 = 17; // Arduino Pin17 (A3)连接点阵 行号1

const int row6 = 16; // Arduino Pin16 (A2)连接点阵 行号7

const int row7 = 15; //Arduino Pin15 (A1)连接点阵 行号 2

const int row8 = 14; // Arduino Pin14 (A0)连接点阵 行号 5

const int col1 = 6; //Arduino Pin6 连接点阵 列号13    //the pin to control COl

const int col2 = 7; // Arduino Pin7 连接点阵 列号3

const int col3 = 8; //Arduino Pin8 连接点阵 列号4

const int col4 = 9; // Arduino Pin9 连接点阵 列号 10

const int col5 = 10; //Arduino Pin10 连接点阵 列号6

const int col6 = 11; //Arduino Pin11 连接点阵 列号11

const int col7 = 12; // Arduino Pin12 连接点阵 列号15

const int col8 = 13; // Arduino Pin13 连接点阵 列号16

unsigned char table[8][8] =   //“心型”的数据

{

0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,

0,0,1,0,0,1,0,0,

0,1,1,1,1,1,1,0,

0,1,1,1,1,1,1,0,

0,0,1,1,1,1,0,0,

0,0,0,1,1,0,0,0,

0,0,0,0,0,0,0,0,

};

void setup()

{

int i = 0 ;

for(i=2;i<18;i++)

{

pinMode(i, OUTPUT); //设置为输出(包括模拟口,也设置为数字输出方式)

}

for(i=2;i<18;i++) {

digitalWrite(i, LOW); //拉低

} }

5 实验结果

程序写完后,将其验证,验证无误后下载到Arduino的微控制器中后,就会看到8乘8点阵发生相应的变化,即8乘8点阵每隔1秒钟循环显示“心形”。实验结果表明8乘8点阵能够很好地稳定的按照我们设计的程序进行“心形”的显示。实验结果如图4所示。

参考文献:

[1] 陈吕洲.Arduino程序设计基础[M]. 2版.北京:北京航空航天大学出版社,2015:3

[2] 付久强.基于Arduino平台的智能硬件设计研究[J].包装工程,2015(10).

[3] 卞云松.基于Arduino单片机的避障小车机器人[J].自动化技术与应用,2014 (1).

【通联编辑:朱宝贵】