ocrobot:alpha:kitone:tutorial12
Button State Change Detection (监测按键状态改变)
如果你的按键工作后,通常你会需要基于按键按下多少次来做出反应。为了达到这个目的,你需要知道什么时候按键被打开或者关闭了,并且知道按键被按下的次数,这就是状态监测。
ALPHA MEGA328-U核心
硬件
搭建电路
- ALPHA MEGA328-U模块插入并行扩展板1号槽位。
- ALPHA 微动开关模块插入并行扩展版2号槽位。
- USB线连接计算机与ALPHA MEGA328-U。
代码
/* State change detection (edge detection) 通常你不需要一直知道数字输入的状态,但是你需要哪个时候知道输入状态改变了。 这个例子显示了怎么检测按键状态的改变 */ const int buttonPin = 15; // 按键连接的引脚 const int ledPin = 2; // LED连接的引脚 int buttonPushCounter = 0; // 按键按下次数的计数器 int buttonState = 0; // 当前按键状态 int lastButtonState = 0; // 前一次按键状态 void setup() { pinMode(buttonPin, INPUT); // 初始化按键为输入: pinMode(ledPin, OUTPUT); // 初始化LED为输出: Serial.begin(9600); // 初始化串口通讯: } void loop() { buttonState = digitalRead(buttonPin); // 读取按键输入: if (buttonState != lastButtonState) { // 比较两次按键状态 if (buttonState == HIGH) { // 如果状态改变了增加计数器 // 如果当前的状态是high,按键就从关到开 buttonPushCounter = buttonPushCounter + 1; Serial.println("on"); Serial.print("number of button pushes: "); Serial.println(buttonPushCounter); } else { Serial.println("off"); //如果当前的状态是low,按键就从开到关 } } lastButtonState = buttonState; // 保存当前的状态到上一次 if (buttonPushCounter % 4 == 0) { // 通过取模功能,每按4次键就点亮LED digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
ocrobot/alpha/kitone/tutorial12.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1