Hi,大家好!前两次呢,我们一起学习了按键开关的基本使用。在每一次的电路连接过程中,我们每次都需要额外连接一个10k欧姆大小的电阻。话说如果只是想学习一下按键开关,就不得不需要额外再连接一个电阻,总觉得有点繁琐,能不能去掉这个电阻呢?可喜可贺!答案是肯定的!
好!废话不多啰嗦!让我们直奔主题,看看是如何去掉那个电阻的!
首先,还是要我们做准备一下。
硬件方面
image.png


具体包括如下:

  • Arduino UNO电路板(1块)
  • 面包板(1块)
  • 按键开关(1个)
  • 面包线(2根)
看!这次果然抛弃了电阻,还省了一根儿面包线,只用了两根。测试用的LED神灯,还是用Arduino UNO电路板自带的那盏。关于Arduino UNO电路板自带的这盏LED神灯,这里就不再次赘述了。印象模糊的同学,可以翻看前两次的实验记录。
软件方面Arduino官方提供的IDE。
image.png

对于类似电路的连接,都是轻车熟路了吧?!这次更是简单,只剩下了一个开关按键,真的是连电阻都没有啦!下面进行最后一步!
添加几行代码首先还是让我们新建一个项目窗口。
// 对Arduino电路板或相关状态进行初始化方法
  • void setup() {
  •   // 开启串行通信,并设置其频率为9600。
  •   // 如果没有特别要求,此数值一般都为9600。
  •   Serial.begin(9600);
  •   // 配置2号针脚为输入状态,
  •   // 并设置使用内部上拉电阻。
  •   pinMode(2, INPUT_PULLUP);
  •   // 定义LED输入针脚号为13号针脚。
  •   // 注:此处我们使用的LED神灯是Arduino UNO电路板自带,
  •   // 此神灯对应的针脚号默认为13,此数值不得随意更改,
  •   // 所以这里定义的数值13是为了和默认值相对应。
  •   pinMode(13, OUTPUT);
  • }
  • // 系统调用,无限循环方法
  • void loop() {
  •   // 读取2号针脚上的输入信号的数值
  •   int sensorVal = digitalRead(2);
  •   // 为了更直观的看到2号针脚输入的信号值,
  •   // 将获取到的数值打印到串行调试窗口,方便调试。
  •   Serial.println(sensorVal);
  •   // 如果获取到的数值为HIGH(数值大小等于1),
  •   // 则向13号针脚发送LOW信号(数值大小等于0),熄灭LED神灯,
  •   // 反之则发送HIGH信号(数值大小等于1),点亮LED神灯。
  •   if (sensorVal == HIGH) {
  •     digitalWrite(13, LOW);
  •   } else {
  •     digitalWrite(13, HIGH);
  •   }
  • }
  • 复制代码
    使用这个内部电阻还有一点需要注意,那就是它会将按键的输入状态取反。也就是说,当按键断开的时候,输入为HIGH,也就是数值为1,按键按下的时候,输入为LOW,也就是数值为0。这也是为什么我们会在代码的第70行进行一次if判断,并将输入状态重新调整过来的原因。
    221027pzdchd222mmrkzcp.jpg

    OK!点击一下上图中标有向右指向的箭头图标,将编写好的代码烧入Arduino UNO电路板。如果一切顺利,此时就可以通过按下按键,让LED神灯点亮,松开按键,LED神灯熄灭。同时,你还可以点击上图中最右边的放大镜图标,打开串口调试窗口,查看实时的按键输出状态。
    image.png

    每次按下按键或松开按键,都可以从串口调试窗口中实时看到按键的输入数值。
    总结通过这次学习,我们知道了如何调用Arduino UNO自带的内部上拉电阻,还了解到此上拉电阻会按键开关的输入状态进行取反。通过使用内部的上拉电阻,我们在使用开关按键的时候可以少连接一个外部电阻,将电路的连接变的更简单。但相应的代价是,要将获取到的数值进行取反。
    下期预告经过这几次对按键开关的学习,我们对按键开关的使用已经有了初步的掌握。下一次,我们将过去几次的学习融合到一起,做一个小实验,在用按键开关控制LED神灯的同时,我们将试着记录按键开关的总按下次数!