0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用按键控制LED灯

CHANBAEK 来源:鱼香ROS 作者:小鱼 2023-07-03 10:53 次阅读

你好,我是爱吃鱼香ROS的小鱼。上一节完成了LED灯的控制,本节我们学习下如何使用按键。

教程所使用硬件平台为MicroROS学习板V1.0.0,可点击阅读原文购买及查看详情

图片

一、 按键检测原理

图片

上面的原理图就是我们MicroROS开发板的BOOT按键的原理图,该按键的位置在板子的左下角。

图片

简单的看下原理图可知

  • BOOT按下时,1,2就被连通了,此时ESP_IO2就连接到了GND上,也就是连接到GNDESP_IO2的电平被拉低了。
  • BOOT没有按下时,ESP_IO0通过R10连接到了3.3VESP_IO2引脚上的电压就被拉高了。

二、 使用按键控制LED灯(无自锁)

新建example03_key工程,在main.cpp输入代码。

/**
 * @file main.cpp
 * @author fishros@foxmail.com
 * @brief 使用按键控制LED灯,按着开,松开关
 * @version 0.1
 * @date 2022-12-19
 *
 * @copyright Copyright (c) 2022
 *
 */
#include < Arduino.h >

void setup()
{
  Serial.begin(115200);
  pinMode(0, INPUT);  // 设置2号引脚模式为OUTPUT模式
  pinMode(2, OUTPUT); // 设置2号引脚模式为OUTPUT模式
}

void loop()
{
  
  if (digitalRead(0) == LOW)
  {
    Serial.println("LED ON");
    digitalWrite(2, LOW); // 低电平,打开LED灯
  }
  else
  {

    Serial.println("LED OFF");
    digitalWrite(2, HIGH); // 高电平,关闭LED灯
  }
}

接着将代码编译烧录到开发板上,按下按键,查看LED灯。

三、使用按键控制LED(自锁开关)

所谓自锁,就是按下开,再按一下关,看一下代码实现

/**
 * @file main.cpp
 * @author fishros@foxmail.com
 * @brief 使用按键控制LED灯,按着开,松开关,自锁开关
 * @version 0.1
 * @date 2022-12-19
 *
 * @copyright Copyright (c) 2022
 *
 */
#include < Arduino.h >

bool status = false;

void setup()
{
  Serial.begin(115200);
  pinMode(0, INPUT);  // 设置2号引脚模式为OUTPUT模式
  pinMode(2, OUTPUT); // 设置2号引脚模式为OUTPUT模式
}

void loop()
{
  // 自锁开关
  if (digitalRead(0) == LOW)
  {
    delay(50); // 休眠50ms再次判断,防止误触
    if (digitalRead(0) == LOW)
    {
      status = !status;
      while (digitalRead(0) == LOW) // 死循环等待放开按键
        ;
    }
  }

  if (status == true)
  {
    digitalWrite(2, LOW); // 低电平,打开LED灯
  }
  else
  {

    digitalWrite(2, HIGH); // 低电平,打开LED灯
  }

  /*
  // 按着开,松开关
  if (digitalRead(0) == LOW)
  {
    Serial.println("LED ON");
    digitalWrite(2, LOW); // 低电平,打开LED灯
  }
  else
  {

    Serial.println("LED OFF");
    digitalWrite(2, HIGH); // 高电平,关闭LED灯
  }
  */
}

这里稍微复杂一些,当按键按下时我们需要休眠50ms,防止误触,接着反置状态,等待按键松开。

将代码下载到开发板,按下按键,测试一下。

四、总结

本节我们通过学习按键的使用,掌握了GPIO的输入,下一节我们将尝试进阶使用ADC,测量电池的电。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 原理图
    +关注

    关注

    1268

    文章

    6180

    浏览量

    225677
  • led灯
    +关注

    关注

    22

    文章

    1554

    浏览量

    107030
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57338
  • Boot
    +关注

    关注

    0

    文章

    142

    浏览量

    35244
  • ROS
    ROS
    +关注

    关注

    1

    文章

    271

    浏览量

    16680
收藏 人收藏

    评论

    相关推荐

    STM32按键控制LED的亮灭

    使用一个按键控制LED的亮灭,按键按下时LED亮起,按键松开时LED熄灭。通过
    的头像 发表于 12-11 14:19 2021次阅读
    STM32<b class='flag-5'>按键控制</b><b class='flag-5'>LED</b>的亮灭

    STM32——按键控制LED(仿真+源码)精选资料推荐

    今天小编又在野火上学习了按键控制LED,在这儿做个笔记顺便分享大家,嘻嘻!直接上仿真图:
    发表于 08-24 07:59

    利用按键控制LED的亮灭

    STM32F4工程--IO口--按键控制点灯程序(库函数) ----芯片:STM32F429IGT6本文章介绍使用STM32F4单片机,利用按键控制LED的亮灭,通过
    发表于 08-24 07:18

    如何使用HAL库函数实现按键控制LED

    如何使用HAL库函数实现按键控制LED
    发表于 11-16 06:25

    如何利用STM32实现按键控制LED

    如何利用STM32实现按键控制LED
    发表于 11-25 06:28

    STM32单片机是如何实现按键控制LED设计的

    STM32单片机是如何实现按键控制LED设计的?求大神解答
    发表于 11-25 06:50

    如何利用Stduino通过按键控制LED亮灭

    2020/01/06 星期一作者:Astilbe问题:如何利用Stduino通过按键控制LED亮灭。我们已经学习过怎么点亮一颗LED,那
    发表于 01-05 07:52

    独立按键按键控制led学习过程记录

    蓝桥杯单片机学习过程记录(二)独立按键按键控制led按键控制流水灯按键控制
    发表于 01-06 08:16

    Stduino Nano按键控制LED

    关键词:stm32 小蓝板 STM32F103C8T6 Stduino IDE Stduino Nano 按键控制LED通过Stduino IDE 开发STM32小蓝板,按键控制板载
    发表于 01-10 07:35

    如何通过按键控制LED和蜂鸣器?

    如何通过按键控制LED和蜂鸣器?什么叫上\下拉电阻呢?Static有哪些用途?
    发表于 01-18 07:41

    非中断方式实现按键控制LED

    //非中断方式实现按键控制LED/*1:全部熄灭2:按下按键SW1不超过一秒后松开LED
    发表于 01-24 07:04

    如何实现按键控制LED

    编程的要点是什么?如何实现按键控制LED
    发表于 01-26 08:04

    按键控制LED灯排

    基于51单片机仿真实现按键控制LED灯排的亮灭,压缩包中有程序和电路图。
    发表于 07-04 15:25 2次下载

    基于stm32的按键控制led亮灭

    基于stm32的按键控制led亮灭资料文件分享
    发表于 09-21 15:50 32次下载

    如何用按键控制不同的LED流转模式?

    实现的任务就是用LCD做一个菜单,用按键控制不同的LED流转模式。
    发表于 07-26 16:53 488次阅读
    如何用<b class='flag-5'>按键控制</b>不同的<b class='flag-5'>LED</b>流转模式?