Arduino按键点灯教程
以下是一个简单的教程,介绍如何使用Arduino识别按键并控制LED灯的亮灭
-
1. 软件需求:
- 按键短按时翻转红灯,长按1s后翻转绿灯。
-
2.所需材料:
- Arduino开发板(如Arduino Uno)
- 两个LED灯,一个红色,一个绿色
- 两个220欧姆电阻和一个10k欧姆电阻
- 一个机械按键
- 面包板
- 杜邦线若干
-
3.电路连接图
-
4.步骤:
- 打开Arduino开发环境,并连接Arduino到计算机
- 编写代码,代码如下
// 引入Arduino库
#include <Arduino.h>
// 定义按键引脚和LED引脚
#define BUTTON_PIN 2
#define RED_LED_PIN 3
#define GREEN_LED_PIN 4
// 定义按键状态和相关参数
int buttonState = HIGH; // 按键状态(默认未按下)
int lastButtonState = HIGH; // 上一次按键状态
bool buttonIsPress = false;
unsigned long buttonStartTime = 0;
unsigned long buttonPressTime = 0; // 按键按下时间
unsigned long buttonReleaseTime = 0; // 按键松开时间
unsigned long debounceDelay = 20; // 消抖延迟时间
unsigned long longPressDuration = 1000; // 长按时间
// 定义LED状态
bool redLedState = false; // 红灯状态
bool greenLedState = false; // 绿灯状态
void setup() {
// 设置按键引脚为输入模式
pinMode(BUTTON_PIN, INPUT);
// 设置LED引脚为输出模式
pinMode(RED_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
}
void loop() {
// 读取按键状态
int reading = digitalRead(BUTTON_PIN);
// 检测按键状态是否发生变化
if (reading != lastButtonState) {
buttonStartTime = millis();
}
// 处理按键消抖
if ((millis() - buttonStartTime) > debounceDelay) {
// 如果按键状态稳定
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
// 按键被按下
buttonIsPress = true;
buttonPressTime = millis();
}
if (buttonState == HIGH) {
// 按键被松开
buttonIsPress = false;
buttonReleaseTime = millis();
if ((buttonReleaseTime - buttonPressTime) < longPressDuration) {
redLedState = !redLedState; // 翻转红灯状态
digitalWrite(RED_LED_PIN, redLedState);
}
}
}
}
if (buttonIsPress == true) {
if ((millis() - buttonPressTime) >= longPressDuration) {
buttonIsPress = false;
greenLedState = !greenLedState; // 翻转绿灯状态
digitalWrite(GREEN_LED_PIN, greenLedState);
}
}
// 更新上一次的按键状态
lastButtonState = reading;
}
- 5.上传代码:
- 将Arduino开发板连接到计算机上后
- 编译验证代码后,下载到Arduino
- 6.查看结果:
- 短按一下按键,观察到红灯亮,再短按一下按键,红灯灭;如果长按按键1s以上,观察到绿灯亮,松开再长按1s以上,绿灯灭。
这就是Arduino识别按键后控制LED灯的简单教程。你可以根据需要自行修改代码,以实现更多有趣的功能。希望对你有所帮助!
arduino按键点亮LED