zoukankan      html  css  js  c++  java
  • 【雕爷学编程】Arduino动手做(80)---4路TTP224触摸模块

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验八十:4路TTP224电容式触摸模块 人体数字触摸传感器

    TTP224
    是一款使用电容式感应原理设计的触摸IC,其稳定的感应方式可以应用到各种不同电子类产品,面板介质可以是完全绝源的材料,专为取代传统的机械结构开关或普通按键而设计,提供4个触摸输入端口及4个直接输出端口。

    TTP224特点
    ƒ 1、工作电压 2.4V~5.5V;
    ƒ 2、可以由外部Option选择是否启用内部稳压电路功能;
    ƒ 3、工作电流@VDD=3V无负载时: 低功耗模式下典型值2.5uA ,快速模式下典型值9uA ;
    ƒ 4、@VDD=3V时,在快速模式下KEY最快响应时间为100mS,低功耗模式下为200mS;
    ƒ 5、各KEY灵敏度可以由外部电容进行调节(0~50pF);
    ƒ 6、提供LPMB端口选择快速模式或低功耗模式;
    ƒ 7、提供直接输出模式,触发模式,开漏输出, CMOS高电平有效或低电平有效输出, 经由TOG/AHLB/OD端口选择;
    ƒ 8、提供两个无二极管保护的输出端口TPQ0D,TPQ2D仅限于低电平有效;
    ƒ 9、提供MOT1, MOT0端口选择最大输出时间:120秒/64秒/16秒/无穷大;
    ƒ 10、上电后约有0.5秒的系统稳定时间,在此期间内不要触摸Touch PAD,且触摸功能无效;
    ƒ 11、有自动校准功能,当无按键被触摸时,系统重新校准周期约为4.0秒。

    4路TTP224电容式触摸模块 人体数字触摸传感器
    1、板载TTP224电容式4键触摸感应IC
    2、板载4路电平状态指示灯
    3、工作电压:2.4V-5.5V
    4、模块可以设置输出模式、键输出模式、最长输出时间和快速/低功耗选择
    5、PCB板子尺寸:35(mm)x29(mm)

    | 模块电原理图

    /*
    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验八十三: 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);
    }

    `/*
    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验八十: 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(mtrue){
    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;}
    }`

    实验场景图

    /*
    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验八十: 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;
    }

    实验开源仿真编程(Linkboy V4.2)

  • 相关阅读:
    TCP粘包,产生的原因以及解决方案
    php判断变量是否为正整数
    php函数trim中文编码问题解决
    win10设置开机自动启动vagrant虚拟机
    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    git push 时 fatal: Unable to create 'D:/phpStudy/WWW/green_tree/.git/index.lock': File exists.解决办法
    git push 提示 Everything up-to-date
    Allowed memory size of 134217728 bytes exhausted (tried to allocate 2 bytes)
    访问远程mysql数据库,出现报错,显示“1130
    改变网页选中文本的颜色
  • 原文地址:https://www.cnblogs.com/eagler8/p/14667463.html
Copyright © 2011-2022 走看看