(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);
}
}
(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
代码实现:
//触摸按键单击、双击、长按的状态检测实验
/*实验现象:
① 触摸按键单击时,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: 【雕爷学编程】Arduino动手做(13)—TTP223B电容式触摸按键模块代码编程+仿真编程+图形编程的三合一测试
参考资料2: 「雕爷学编程」Arduino动手做(13)——触摸开关模块
参考资料3: Arduino程序设计(五)按键中断+按键状态检测