查看: 1172|回复: 1

[入门教程] Arduino + 按键开关实现简单的计数器

[复制链接]
Arduino + 按键开关实现简单的计数器
本实验用以下材料,简单实现一个按键次数的计数器,统计按键被按下的次数,现实在串口输出栏。
所用材料:
Arduino UNO电路板(1块)
面包板(1块)
10k电阻(1个)
按键开关(1个)
面包线(3根)
按照下图方式将元件和Arduino连接起来。
截图201811251127007697.png
在 Arduino IDE 中新建一个代码文件,输入下面的代码。代码的功能看注释就好了。
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

// 定义按键的针脚号为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);

  }

}




然后上传代码到 Arduino,并打开串口调试窗口(放大镜图标)。
效果就是,当你每次按下或松开按键开关,都会打印相应的字符串,来显示当前的按键状态。而与此同时,Arduino UNO上的LED,也会在你每按四次按键更新一次状态。





gada888  版主

发表于 2018-12-23 20:14:07

顶一个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail