Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】108种传感器系列实验(83)—— 4路TTP224触摸模块

[复制链接]
 楼主| 发表于 2019-8-5 17:04 | 显示全部楼层
1、板载TTP224电容式4键触摸感应IC
2、板载4路电平状态指示灯
3、工作电压:2.4V-5.5V
4、模块可以设置输出模式、键输出模式、最长输出时间和快速/低功耗选择
5、PCB板子尺寸:35(mm)x29(mm)
04 (1).jpg

 楼主| 发表于 2019-8-5 18:11 | 显示全部楼层
模块电原理图

07.jpg

08.jpg
 楼主| 发表于 2019-8-5 18:54 | 显示全部楼层
09 (1).jpg
 楼主| 发表于 2019-8-5 19:17 | 显示全部楼层
[mw_shl_code=arduino,true]/*
  【Arduino】66种传感器模块系列实验(81)
实验八十三: 4路TTP224电容式触摸模块 人体数字触摸传感器
对应按键输出数字
*/

int i;

void setup()
{

for(i=4; i<=7; i++)
{
pinMode(i, INPUT);

}
Serial.begin(9600);
}

void loop()
{
for(i=4; i<=7; i++)
{
if(digitalRead(i) == HIGH)
{
Serial.println(i-3);
}
}
delay(100);
}
[/mw_shl_code]
 楼主| 发表于 2019-8-5 19:32 | 显示全部楼层
10.jpg
 楼主| 发表于 2019-8-5 19:43 | 显示全部楼层
[mw_shl_code=arduino,true]/*
  【Arduino】66种传感器模块系列实验(81)
实验八十三: 4路TTP224电容式触摸模块 人体数字触摸传感器
程序之二,稳定性很好,不易误触发
模块上的1,2,3,4对应于单片机上的7,6,5,4
其中引入了布尔型M,主要是为了实现,在按下到松开这个过程中,
仅输出一次高电平,即输出语句只输出一句,来避免一直输出。
*/

#include <Arduino.h>

int i;
boolean m=true;
void setup()
{
  Serial.begin(9600);
  
}

void loop()
{  
     if(m==true){
        for(i=0;i<5;i++){
        if(digitalRead(8-i)==1){
          delay(50);
            if(digitalRead(8-i)==1){
              Serial.print("hello ");
              Serial.print(i);
              Serial.println(" ---");
              m=false;
            }
          }
        }
     }
     
      if(digitalRead(4)==0 && digitalRead(5)==0 && digitalRead(6)==0 && digitalRead(7)==0)
      {m=true;}
}

[/mw_shl_code]
 楼主| 发表于 2019-8-5 19:47 | 显示全部楼层
12.jpg
 楼主| 发表于 2019-8-5 20:31 | 显示全部楼层
13.jpg
 楼主| 发表于 2019-8-5 20:40 | 显示全部楼层
[mw_shl_code=arduino,true]/*
  【Arduino】66种传感器模块系列实验(81)
实验八十三: 4路TTP224电容式触摸模块 人体数字触摸传感器
程序之三,使用4路触控模块的其中3个开关,当作LED灯的开关、调亮和调暗控制界面
*/

const byte LED_PIN = 5;    // LED灯的接脚
const byte PWR_LED = 13;   // 电源指示灯的接脚

bool powerOn = false;   // LED电源是否开启,默认“否”
bool btnStatus;         // 按钮状态
int pwmVal = 0;         // 电源输出值

// 宣告触键的自订结构类型
typedef struct {
  byte pin;         // 按键的接脚编号
  bool lastStatus;  // 上次的状态
} key;

// 宣告电源键的接脚和默认状态
key powerKey = { 10, LOW };

// 宣告“调亮”键的接脚和默认状态
key upKey = { 11, LOW };

// 宣告“调暗”键的接脚和默认状态
key downKey = { 12, LOW };

void setup() {
  Serial.begin(9600);
  pinMode(powerKey.pin, INPUT);
  pinMode(upKey.pin, INPUT);
  pinMode(downKey.pin, INPUT);
  pinMode(LED_PIN, OUTPUT);
  pinMode(PWR_LED, OUTPUT);
}

void loop() {
  // 读取电源键的状态
  btnStatus = digitalRead(powerKey.pin);

  // 如果电源键的讯号从低电位变成高电位…
  if (btnStatus && powerKey.lastStatus == LOW) {
    powerOn = !powerOn;  // 反相电源状态
    digitalWrite(PWR_LED, powerOn);

    if (powerOn) {  // 若powerOn为true…
      // 依照pwmVal的值点亮LED
      analogWrite(LED_PIN, pwmVal);
    } else {
     // 关闭LED灯
     digitalWrite(LED_PIN, LOW);
    }
  }
  // 纪录这次的电源键讯号状态
  powerKey.lastStatus = btnStatus;

  // 读取“调亮”键的状态
  btnStatus = digitalRead(upKey.pin);
   
  // 若“有开启电源”且“此按键讯号是高电位”且“前次讯号是低电位”
  if (powerOn && btnStatus && upKey.lastStatus == LOW) {
    // 增加亮度值,每次增加10,不能超过255。
    if ((pwmVal+10) <= 255) { pwmVal += 10;
    Serial.println(pwmVal);
    analogWrite(LED_PIN, pwmVal); } }
    upKey.lastStatus = btnStatus; // 读取“调暗”键的状态
    btnStatus = digitalRead(downKey.pin);
    if (powerOn && btnStatus && downKey.lastStatus == LOW) { // 减少亮度值,最低值为0
      if ((pwmVal-10) >= 0) {
    }
      pwmVal -= 10;
      Serial.println(pwmVal);
      analogWrite(LED_PIN, pwmVal);
    }
  downKey.lastStatus = btnStatus;
}[/mw_shl_code]
 楼主| 发表于 2019-8-5 20:44 | 显示全部楼层
15.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2022-12-7 00:16 , Processed in 0.072148 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表