• Arduino程序设计(十三)触摸按键实验(TTP223)



    前言

    • 本文介绍触摸按键控制LED的原理及实验,主要内容有:
    • 1、介绍TTP223触摸按键模块;
    • 2、触摸按键控制LED;
    • 3、触摸按键状态检测。

    一、TTP223触摸按键模块

    • 1、模块介绍:
    • 该模块是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块。常态下,模块输出低电平,模式为低功耗模式;当用手指触摸相应位置时,模块会输出高电平,模式切换为快速模式;当持续12秒没有触摸时,模式又切换为低功耗模式。可以将模块安装在非金属材料如塑料、玻璃的表面,另外将薄薄的纸片(非金属)覆盖在模块的表面,只要触摸的位置正确,即可做成隐藏在墙壁、桌面等地方的按键。该模块可以让你免除常规按压型按键的烦恼。
    • 2、模块特性:
      在这里插入图片描述
    • 3、模块参数:
      在这里插入图片描述

    二、触摸按键控制LED

    • (1)本实验采用Arduino UNO R3开发板及自主搭建电路的方式,实现预设功能。

    • (2)触摸按键控制LED的电路图,如下图所示:
      在这里插入图片描述

    • (3)实现功能:触摸按键控制LED灯,触摸时,LED点亮,不触摸时,LED熄灭。

    代码实现:

    //TTP223电容式触摸按键实验
    //触摸按键控制LED灯,触摸时,LED点亮,不触摸,LED熄灭
    //机械按键需要消抖,触摸按键灵敏度高不需要消抖
    
    #define TOUCH 7
    #define LED 13
    
    bool TOUCH_state = 0;
    
    void setup()
    {
      pinMode(TOUCH, INPUT);
      pinMode(LED, OUTPUT);
      digitalWrite(LED, LOW);
    }
    
    void loop()
    {
      TOUCH_state = digitalRead(TOUCH);
      
      if (TOUCH_state == 1)
      {
        digitalWrite(LED, HIGH);
      }
      else
      {
        digitalWrite(LED, LOW);
      }
    }
    
    • 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
    • (4)实现现象:

    • ① 不触摸时
      在这里插入图片描述

    • ② 触摸时
      在这里插入图片描述

    注意:图中红色箭头位置为D13引脚对应的LED灯。

    二、触摸按键状态检测

    • (1)本实验采用Arduino UNO R3开发板及自主搭建电路的方式,实现预设功能。

    • (2)触摸按键状态检测的电路图,如下图所示:
      在这里插入图片描述

    • (3)实现功能:

    • ① 触摸按键单击时,LED亮100ms后熄灭(闪烁一次),串口打印"singleclick";

    • ② 触摸按键双击时,LED亮300ms,熄灭300ms,然后,LED亮300ms,熄灭300ms(闪烁两次),串口打印"doubleclick";

    • ③ 触摸按键长按时,第一次长按,LED常亮,串口打印"longclick"和"start",第二次长按,LED熄灭,串口打印"longclick"和"end"。

    • (4)注意:编译代码前,需要下载安装OneButton库文件,并在程序中添加 #include 和 #include 两个头文件 。

    代码实现:

    //触摸按键单击、双击、长按的状态检测实验
    /*实验现象:
     ① 触摸按键单击时,LED亮100ms后熄灭(闪烁一次),串口打印"singleclick";
     ② 触摸按键双击时,LED亮300ms,熄灭300ms,然后,LED亮300ms,熄灭300ms(闪烁两次),串口打印"doubleclick";
     ③ 触摸按键长按时,第一次长按,LED常亮,串口打印"longclick"和"start",第二次长按,LED熄灭,串口打印"longclick"和"end"。
     */
     
    #include 
    #include 
    
    #define PIN_INPUT 7
    #define PIN_LED 13
    
    OneButton button(PIN_INPUT, false);
    
    //单击
    void click()
    {
      Serial.println("singleclick");
      for (size_t i = 0; i < 2; i++)
      {
        digitalWrite(PIN_LED, !digitalRead(PIN_LED));
        delay(100);
      }
    }
    
    //双击
    void doubleclick()
    {
      Serial.println("doubleclick");
      for (size_t i = 0; i < 4; i++)
      {
        digitalWrite(PIN_LED, !digitalRead(PIN_LED));
        delay(300);
      }
    }
    
    //长按
    void longclick()
    {
      Serial.println("longclick");
      digitalWrite(PIN_LED, !digitalRead(PIN_LED));
      if (digitalRead(PIN_LED))
        Serial.println("start");
      else
        Serial.println("end");
    }
    
    void setup()
    {
      Serial.begin(115200);//打开串口
      pinMode(PIN_LED, OUTPUT);//设置LED引脚为输出模式
      button.attachClick(click);//关联单击事件
      button.attachDoubleClick(doubleclick);//关联双击事件
      button.attachLongPressStart(longclick);//关联长按事件
    }
    void loop()
    {
      button.tick();//按键扫描
      delay(10);
    }
    
    
    • 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
    • (5)实现现象(部分显示):
      在这里插入图片描述
    • 说明
    • 1、上图为第一次长按后,串口打印"longclick"和"start",同时D13对应的LED点亮;
    • 2、图中红色箭头对应的分别是串口打印界面和D13引脚连接的LED灯。

    参考资料1: 【雕爷学编程】Arduino动手做(13)—TTP223B电容式触摸按键模块代码编程+仿真编程+图形编程的三合一测试
    参考资料2: 「雕爷学编程」Arduino动手做(13)——触摸开关模块
    参考资料3: Arduino程序设计(五)按键中断+按键状态检测

  • 相关阅读:
    04_BFC
    母婴类目电商平台数据分析
    解读RSAC 2022 | 深度学习是不是应该深度应用到网络安全?
    从初级程序员到CEO,汤鹏与时代碰撞出的那些“火花”
    java-net-php-python-ssm电影推荐网站计算机毕业设计程序
    markdown语法
    关于限制项限制不住的问题
    Hive数据库动态分区和静态分区插入区别
    后端非法字符检验的注解
    pyppeteer框架基本语法备忘录
  • 原文地址:https://blog.csdn.net/weixin_44887565/article/details/133167515