学习内容:
1. Arduino基本程序结构
2. 多个LED灯的流水灯实验
实验材料:
本次学习运用Arduino1.8.9(可在官网下载)、Arduino Uno开发板、数据线、LED灯若干、180Ω电阻若干、面包板、跳线若干。
备注:
Arduino的主要开发语言是C语言。
笔记:
一、 Arduino程序结构
以Arduino开发板13号led闪灯实验为例进行讲解(文件→示例→Basics→Blink)
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
1.setup()函数
当你给开发版通电后或按下复位键后,setup函数执行一次,注意只执行一次。函数中LED_BUILTIN默认为Arduino开发板上的13号灯,OUTPUT表示输出模式,即初始化 化LED_BUILTIN引脚为输出模式。
2.loop()函数
在 setup()函数中初始化和定义了变量,然后执行 loop()函数。loop有“环形”的意思,也就是在程序运行过程中会不断循环。
数字I/O的操作
1.pinMode(pin,mode)函数
这个函数常用在setup()函数里,用来设置引脚的功能。
pin—表示要配置的引脚号,数字电路的代号范围是0~13,模拟电路是A0~A5。
mode—用来设置引脚的模式,INPUT是输入模式,用于读取信号;OUTPUT是输出模式,用于输出控制信号。
2.digitalWrite(pin,value)函数
这个函数是用来设置引脚的输出电压,HIGH为高电平,默认5V;LOW为低电平,默认0V。但要注意这个函数运行的前提是有预先设置引脚模式,也就是pinMode(pin,mode)函数,可以说是以引脚设置为OUTPUT模式为前提的,能输出才能亮灯呀。
3.digitalRead(pin)函数
该函数用于读取引脚的电平情况,输入引脚的值,返回HIGH或者LOW。如果引脚没有连接到任何地方,那么将随机返回HIGH或者LOW。
时间函数
delay()函数
是一个没有返回值的延时函数,参数是时间长度,单位为毫秒(ms)。
二、多个LED的流水灯实验
LED灯是发光二极管,所以电路中必须具备电阻,否则可能造成短路。LED的长脚是正极,注意别插错了。
本实验中,面包板是作为电子元器件连接的载体,是不可或缺的。下面就来介绍一下。
1.面包板的介绍
面包板上有很多小插孔,专为电子电路元件无焊接实验设计的。它的种类有很多,不同种类的面包板使用略有不同。
先介绍这三种。
图2-1中绿线所在的一列(5个插孔)是相互连接的。黄线所在的一排(25个插孔)是相互连接的,通常用于连接电源。红色方框区域就相当于一堵墙,阻碍上下两个区域的连接,可以用杜邦线连接。
图2-1
图2-2中没有图2-1中的行连接方式,其它都一样。
图2-2
图2-3中可看出该面包板较长,不同图2-1的是横向连接分为两组,他们之间没有接通。
图2-4就是个简单点亮LED的电路连接,一端接数字端口,一端接地。
图2-4
2.LED流水灯实验
通过以上学习,让我们来试着搭建LED流水灯。
(1)电路连接
下图取自 河西石头 的博客《Arduino制作实践课程(1)闪灯和流水灯》
其实明白了电路元件、面包板和Arduino Uno开发板的基本原理,你不用完全按照上图搭建。我只有图2-2的板子,所以我是这样搭建的(有点点乱):
(2)代码
先设置引脚为输出模式,再按端口顺序:点亮(高电平)→等待→熄灭(低电平)
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT); //将端口设置为输出模式
}
void loop() {
digitalWrite(4, HIGH); //点亮
delay(500); //延迟0.5秒
digitalWrite(4, LOW); //熄灭
digitalWrite(5, HIGH); //点亮
delay(500); //延迟0.5秒
digitalWrite(5, LOW); //熄灭
digitalWrite(6, HIGH); //点亮
delay(500); //延迟0.5秒
digitalWrite(6, LOW); //熄灭
digitalWrite(7, HIGH); //点亮
delay(500); //延迟0.5秒
digitalWrite(7, LOW); //熄灭
}
也可以利用循环 :
void setup(){
for(int i=4;i<8;i++)
pinMode(i,OUTPUT); //将端口设置为输出模式
}
void loop(){
for(int i=4;i<8;i++)
{
digitalWrite(i, HIGH);//点亮
delay(1000); //延迟1秒
digitalWrite(i, LOW); //熄灭
delay(500); //延迟0.5秒
}
}
第一课的学习到这里就结束了,若有差错,请斧正,谢谢!