【Arduino学习】04.按键点灯实验

数字 I / O 端口的含义是 INPUT 和 OUTPUT 接口,在以前的 LED 灯实验中,我们只使用 GPIO 的OUTPUT 功能。 现在让我们尝试在 Arduino 中使用 I / O 的 INPUT 功能,即该功能是在本实验中从外部设备读取输出值。 我们使用按键和 LED 灯来完成使用 INPUT 和 OUTPUT 作为组合的实验。

软件代码:

int led_out = 11 ;  //GPIO 11  LED pin
int keypad_pin = 7; //GPIO 7 key pin
int value;
void setup()
{
    pinMode(led_out,OUTPUT);    		   // init led pin output
    pinMode(keypad_pin,INPUT);          // init key pin input
}
void loop()
{
        value = digitalRead(keypad_pin);    // read key pad pin vaule
        if( value == LOW )
        {
            digitalWrite(led_out,LOW);      // if key value is down  turn on LED
        }
        else
        {
            digitalWrite(led_out,HIGH);     // if key value is down  turn off LED
        }
}

程序原理:
当按下按钮时, IO7 号接口读到高电平,它将 IO11 号输出高电平,这可以使灯亮。 当没有按下按钮时, IO7 号接口读为低电平时, IO11 号输出低电平,此时指示灯熄灭。

原理图+实验连接图:

按下,灯亮
不按,灯灭
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 OneButton.h 库可以很方便地实现按键的长按和短按功能。下面是一个简单的示例代码,演示了如何使用该库来检测按键的状态: ```C++ #include <OneButton.h> // 定义按键引脚 #define BUTTON_PIN 2 // 创建一个 OneButton 对象 OneButton button(BUTTON_PIN, true); void setup() { // 初始化串口 Serial.begin(9600); // 设置按键长按和短按的时间阈值(单位为毫秒) button.setClickTicks(100); button.setPressTicks(1000); // 绑定按键短按和长按的回调函数 button.attachClick(clickHandler); button.attachLongPressStart(longPressStartHandler); button.attachLongPressStop(longPressStopHandler); } void loop() { // 处理按键事件 button.tick(); } // 按键短按的回调函数 void clickHandler() { Serial.println("Short press detected."); } // 按键长按开始的回调函数 void longPressStartHandler() { Serial.println("Long press started."); } // 按键长按结束的回调函数 void longPressStopHandler() { Serial.println("Long press stopped."); } ``` 在上面的代码中,我们首先定义了按键的引脚。然后创建了一个 OneButton 的对象,并设置了按键长按和短按的时间阈值。接着,我们绑定了按键短按和长按的回调函数,这些函数将在相应的事件发生时被调用。最后,在主循环中调用 `button.tick()` 处理按键事件即可。 需要注意的是,`OneButton.h` 库使用了 `attachInterrupt()` 函数来检测按键状态,因此在使用该库时需要根据实际情况选择正确的引脚。同时,由于 Arduino 的 `loop()` 函数是一个无限循环,因此需要使用 `button.tick()` 来驱动按键事件的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值