【Arduino实验笔记】机械臂篇(二) 开关控制LED灯


前言

本章节介绍如何通过按键控制LED灯,在上一章节中,我们学习了如何控制IO输出电平。而本章节,我们将学会如何读取IO输入的电平。


硬件介绍

观察独立按键,共有四个引脚,其中两组间距较短,而另两组间距较长间距长的两组引脚之间是连接在一起的而短间距引脚之间初始状态是断开的,当按键被按下时,四个引脚被接通,可视作一根导线
在这里插入图片描述

一般情况下,独立按键只需要接两个脚即可使用。其中一个引脚接地,另一个引脚由单片机IO口控制

独立按键的详细介绍请参考另一篇博客《51单片机开关篇》


实物接线图

接线图


软件实现

为了读取引脚输入情况,我们需要借助串口工具。幸运的是,Arduino IDE中集成了串口显示窗口,我们可以十分方便地通过几行代码就实现打印引脚状态


库函数介绍

首先,介绍几个核心库中的函数。详细的移步至官方函数手册

  • 数字引脚读取
    uint8_t digitalRead(uint8_t pin)
    • pin: 引脚号
    • 返回值: 引脚电平高低
      • 低电平: LOW
      • 高电平: HIGH

串口库Serial)属于内置核心库,无需#include预编译指令包含。本节使用到的函数如下。

  • 串口初始化
    Serial.begin(baud)
    • baud: 波特率,需与串口窗口中保持一致。
  • 串口打印
    Serial.println(chara)
    • chara: 可接收任意类型数据
    • 打印后开启新行

程序代码

// 2022.11.18
// Author:Qiu

#define KEY_PORT 2   // 2号引脚

void setup() {
    
    
  // 设置串口波特率
  Serial.begin(9600);
  // 将2号引脚设置为输入上拉
  pinMode(KEY_PORT, INPUT_PULLUP);
  // 将13号引脚设置为输出; 
  // #define LED_BUILTIN 13
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    
    
  // 读取2号引脚的状态
  boolean buttonState = digitalRead(KEY_PORT);
  // 在串口窗口打印引脚状态
  Serial.println(buttonState);
  // 判断控制灯:0-按下;1-没按
  if(buttonState){
    
    
    // 熄灭,写入低电平
    digitalWrite(LED_BUILTIN, LOW);
  }else{
    
    
    // 点亮,写入高电平
    digitalWrite(LED_BUILTIN, HIGH);
  }
  // 读取存在间隔,保证稳定
  delay(1);
}

下一篇的目标

我们希望更加高级的控制LED灯,比如,动态调节它的亮度,而不是简单亮灭。我们下一篇再见!


总结

通过本章,你学会了如何读取数字IO口的高低电平,并借助串口相关函数完成了按键的控制LED的实验。这为未来我们控制机械臂奠定了坚实的基础!

猜你喜欢

转载自blog.csdn.net/m0_46500149/article/details/132630314