02-1 闪烁LED发光二极管
打开第一个例程,闪烁LED发光二极管,验证开发板是否正常。
让一个 LED 灯亮一秒,然后灭一秒,如此反复。
大多数 Arduino 开发板都有一个板载 LED 灯可以控制。在 UNO、MEGA 和 ZERO 开发板上,它连接到数字管脚13;LED_BUILTIN是已经被设置为正确的数字管脚13,用于控制板载LED发光二极管的管脚。
打开这个例程的方法:
// 当你按下重启键或给开发板通电时,setup函数会运行一次。
void setup() {
// 将数字引脚 LED_BUILTIN 初始化为输出管脚。
pinMode(LED_BUILTIN, OUTPUT);
}
// loop函数会永远反复地运行下去
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // 打开 LED(HIGH是指高电电压水平)
delay(1000); // 等待一秒钟。
digitalWrite(LED_BUILTIN, LOW); // 通过将电压设置为低电平来关闭 LED。
delay(1000); // 等待一秒钟。
}
setup()部分的程序,只设定管脚模式,控制LED发光二极管的程序则在loop()部分执行,永远循环。
程序代码运行的顺序都是由上而下,逐行执行的。
程序流程图如下:
02-2 搞懂LED灯的电子电路
(一)面包板,省去焊接的电路板
(二)LED发光二极管
(三)电阻,保护发光二极管不被烧毁
(四)用5V电源点亮LED发光二极管
(五)电压、电流、欧姆定律、串联、并联
欧姆定律:
电压
V
=
电流
I
×
电阻
R
电压V = 电流I × 电阻R
电压V=电流I×电阻R 或
电阻
R
=
电压
V
电流
I
电阻R = \frac{电压V}{电流I}
电阻R=电流I电压V
电阻的串联与并联:
02-3 数字信号的输出,实验4
(一)外部接LED灯
int startPin = 2;
int endPin = 7;
int index = 0;
void setup() {
for (int i = startPin; i <= endPin; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
for (int i = startPin; i <= endPin; i++) {
digitalWrite(i, LOW);
}
digitalWrite(startPin + index, HIGH);
//当index=5时,index = (5 + 1) % (7 - 2 + 1),又重新赋值为0
index = (index + 1) % (endPin - startPin + 1);
delay(100);
}
实验4的仿真结果:为了实验现象明显,可以修改延时函数delay(1000)。
02-4 数字信号输出函数,digitalWrite(管脚的编号,高或低的电压值),用于通过该管脚输出数字信号
digitalWrite(i, LOW);
表示将编号为i的输出管脚设定为LOW,熄灭LED
digitalWrite(i, HIGH);
表示将编号为i的输出管脚设定为HIGH,点亮LED
02-5 数字信号的输入,实验12
(一)按键开关
按键是一种常用的控制电器元件 ,常用来接通或断开电路 ,从而达到控制电机或者其 他设备运行的开关。按键的外观多种多样 ,本次实验使用的是这种微型按键 ,6mm的 ,如下图。
此种按键有 4 个脚 ,从背面看是这样子的。
在按键没有按下去的时候 1 ,2 号脚相连 ,3,4 号脚相连。
按键按下去的时候,1,2,3,4 号脚就全部接通在一起,相当于按键的触点导通了。
按键松开的时候,又恢复到按键没有按下去的情况,1,2脚导通,3,4 号脚导通,1,2与3.4脚之间是断开的状态。
(二)通过按键的方法来控制LED灯
按键接通后判断按键电路中的输出电压 ,
如果电压 大于 4.88V ,就使给 LED 电路输出高电平 ,
反之就输出低电平。
使用逻辑判断的方法 来控制 LED 亮或者灭 ,此种控制方法应用范围较广。
本次连接方法如下图。
按键的在面包板的正确摆放位置一一跨接在面包板的上下两区。
接线时, 对角线 - 位置的两个管脚,才是开关的两个管脚。
按键开关两段一端连接 5V 接口 ,一端连接数字端口 11 ,再连 接下拉电阻。
LED 长针脚(正极)串联 1k 电阻连接数字端口 13 ,短针脚连接 GND。
const byte LED = 13; //设置 LED 的数字 IO 脚
const byte SW = 11; //设置开关引脚
void setup()
{
pinMode(LED, OUTPUT); //设置数字 IO 引脚为输出模式
pinMode(SW,INPUT);
// digitalWrite(SW,HIGH);
}
void loop()
{
boolean val = digitalRead(SW);
if (val) {
digitalWrite(LED, HIGH);
}
else {
digitalWrite(LED, LOW);
}
}
02-6 数字信号输入函数,digitalRead(管脚的编号),函数的返回值是该管脚的数字信号(电压高或电压低),用于读取指定管脚的数字信号(高电平或低电平)
例如,如果要读取数字管脚 2 的状态,可以这样写:
int state = digitalRead(2);
如果管脚 2 输入数字信号为高电平,state的值将为HIGH;如果为低电平,state的值将为LOW。