之前我们尝试了亮灯、流水灯的亮灯方式,但都是运行就会亮。这次我们改为需要有命令才能亮灯~这就需要用到串行接口的方式,这是一种区别于并行接口的传输方式。串行比较简单稳定,一次只传一位数据。
建筑兔零基础Arduino自学记录47|安装和实战小灯闪烁-1-优快云博客
建筑兔零基础Arduino自学记录61|流水灯-3-优快云博客
那就直接开始~首先本次需要先设置电阻的数值220Ω
电阻的作用是限流,防止烧毁 LED 和 Arduino 引脚。LED 有一个正向电压(Vf),LED 的颜色由半导体材料决定,导致 Vf 差异。常见颜色控制在220Ω都是没问题的。
然后就是和之前一样的导入代码,在单行监视器里输入a/b,控制灯的开关
// C++ code
//
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop()
{
if(Serial.available()>0)
{
char ch=Serial.read();
Serial.print(ch);
if(ch=='a')
{
digitalWrite(13,HIGH);
Serial.print("turn on");
}
else if(ch=='b')
{
digitalWrite(13,LOW);
Serial.print("turn off");
}
}
}
参考视频串口控制Led灯 || Arduino入门实验_哔哩哔哩_bilibili
引脚的工作模式
设置 Arduino 开发板上指定引脚。
pinMode(13, OUTPUT)
中,第一个参数 13
代表要设置的引脚编号,Arduino 的引脚编号是从 0 开始的,不同的开发板,其引脚编号的范围和用途也有所不同。第二个参数 OUTPUT
表示将该引脚设置为输出模式。在 Arduino 中,引脚的工作模式一般有 OUTPUT
(输出)、INPUT
(输入)和 INPUT_PULLUP
(上拉输入)三种。
OUTPUT
(输出模式)digitalWrite()
高电平,点亮LED灯digitalWrite(13, HIGH);
低电平,熄灭LED灯digitalWrite(13, LOW);
pinMode()
INPUT(输入模式)
将引脚 2 设置为输入模式pinMode(2, INPUT);
pinMode()
INPUT_PULLUP(上拉输入模式)
本质上也是输入模式,不过它会在引脚内部连接一个上拉电阻,将引脚默认电平设置为高电平。当外部信号将引脚拉低时,就可以检测到信号变化。
将引脚 2 设置为上拉输入模式pinMode(2, INPUT_PULLUP)
具体代码解读:
// C++ code
//
// setup——初始化函数,只开始运行一次
void setup()
{
// 初始化串口通信,设置波特率为 9600
// 波特率表示每秒传输的比特数,这里设置为 9600bps,要与串口监视器等工具设置的波特率一致
Serial.begin(9600);
// 将引脚 13 设置为输出模式
pinMode(13,OUTPUT);
}
// loop——循环函数
void loop()
{
// Serial.available() 函数用于检查串口接收缓冲区中是否有可用的数据
// 如果有数据(即返回值大于 0),则进入 if 语句块执行相应操作
if(Serial.available()>0)
{
// 从串口接收缓冲区读取一个字符,并将其赋值给变量 ch
char ch=Serial.read();
// 通过串口将接收到的字符发送回去,起到回显的作用
Serial.print(ch);
// 判断接收到的字符是否为 'a'
if(ch=='a')
{
// 如果接收到的字符是 'a',将引脚 13 的电平设置为高电平
// 对于连接在引脚 13 上的 LED 灯来说,这会点亮它
digitalWrite(13,HIGH);
// 通过串口发送 "turn on" 信息,表示灯已打开
Serial.print("turn on");
}
// 判断接收到的字符是否为 'b'
else if(ch=='b')
{
// 如果接收到的字符是 'b',将引脚 13 的电平设置为低电平
// 对于连接在引脚 13 上的 LED 灯来说,这会熄灭它
digitalWrite(13,LOW);
// 通过串口发送 "turn off" 信息,表示灯已关闭
Serial.print("turn off");
}
}
}
一起来试试吧~