小白在线

爱生活 爱小白

Arduino教程-用按键开关计数

今天我们将综合之前学到的,关于如何更好的使用按键开关等相关知识,做一个综合的小实验,看看如何用按键开关进行计数。当然,与其说是用按键开关进行计数,其实不如说是记录按键开关的点击次数,嘿嘿!好!打起精神,让我们开始吧!
首先,当然还是老样子,先要对所学的内容做准备。
硬件方面
图片来源:Arduino电路配件
具体包括如下:

  • Arduino UNO电路板(1块)

  • 面包板(1块)

  • 10k电阻(1个)

  • 按键开关(1个)

  • 面包线(3根)

211648fd7h20iz3hr4ui45.jpg

// 定义按键的针脚号为2的整型常量
const int  buttonPin = 2;
// 定义LED输入针脚号为13号针脚
// 注:此处我们使用的LED神灯是Arduino UNO电路板自带,
// 此神灯对应的针脚号默认为13,此数值不得随意更改,
// 所以这里定义的数值13是为了和默认值相对应。
const int ledPin = 13;
// 定义用来记录按键次数的整型变量
int buttonPushCounter = 0;
// 记录当前按键的状态
int buttonState = 0;
// 记录按键之前的状态
int lastButtonState = 0;
// 对Arduino电路板或相关状态进行初始化方法
void setup() {
  // 设置按键的针脚为输入状态
  pinMode(buttonPin, INPUT);
  // 设置电路板上LED神灯的针脚状态为输出状态
  pinMode(ledPin, OUTPUT);
  // 开启串行通信,并设置其频率为9600。
  // 如果没有特别要求,此数值一般都为9600。
  Serial.begin(9600);
}
// 系统调用,无限循环方法
void loop() {
  // 读取按键的输入状态
  buttonState = digitalRead(buttonPin);
  // 判断当前的按键状态是否和之前有所变化
  if (buttonState != lastButtonState) {
    // 判断当前按键是否为按下状态,
    // 如果为按下状态,则记录按键次数的变量加一。
    if (buttonState == HIGH) {
      // 将记录按键次数的变量加一
      buttonPushCounter++;
      // 向串口调试终端打印字符串“on”,
      // 表示当前按键状态为按下接通状态,
      // 输出完成之后自动换行。
      Serial.println("on");
      // 向串口调试终端打印字符串
      // “number of button pushes: ”,此处没有换行。
      Serial.print("number of button pushes:  ");
      // 接着上一行尾部,打印记录按键次数变量的数值。
      Serial.println(buttonPushCounter);
    } else {
      // 向串口调试终端打印字符串“off”,
      // 表示当前按键状态为松开状态,也即断开状态。
      Serial.println("off");
    }
    // 为了避免信号互相干扰,
    // 此处将每次按键的变化时间间隔延迟50毫秒。
    delay(50);
  }
  // 将每次loop结束时最新的按键状态进行更新
  lastButtonState = buttonState;
  // 每点击4次,更新一次LED神灯状态。
  // 这里的百分号是求余数的意思,
  // 每次除以四,余数等于零说明按键点击的
  // 次数是四的整数倍,即此时更新LED神灯。
  if (buttonPushCounter % 4 == 0) {
    // 点亮LED神灯
    digitalWrite(ledPin, HIGH);
  } else {
    // 熄灭LED神灯
    digitalWrite(ledPin, LOW);
  }
}


«    2023年3月    »
12345
6789101112
13141516171819
20212223242526
2728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接
    • Z-BlogPHP
    • 订阅本站的 RSS 2.0 新闻聚合

    Powered By Z-BlogPHP 1.7.3

    Copyright iXiaoBai.net Rights Reserved. 吉ICP备18001369号-1 吉公网安备22010202001107