摸我一下,Touch触摸按钮

温馨提示

第一节、简介

实物图:

首先是键的本身比较特殊,它是直接利用PCB制做的,上边再覆盖一层绝缘层而成。结构上,触片的周围和背面都是地线。
  当手触摸时,则会改变触片极与地之间的等效电容量,使之加大,通过电路检测这一变化就可以判断出来触片被触。

第二节、外设功能框图分析

原理图:

触摸按键需要芯片TTP223-BA6检测IC,才能产生按键的效果。

第三节、代码讲解

import java.io.IOException;

import tijos.framework.devicecenter.TiGPIO;
import tijos.framework.devicecenter.TiI2CMaster;
import tijos.framework.sensor.button.ITiButtonEventListener;
import tijos.framework.sensor.button.TiButton;
import tijos.framework.transducer.oled.TiOLED_UG2864;

/**
 * 监听类
 * 
 * @author tijos
 *
 */
class TouchListener implements ITiButtonEventListener {
    TiOLED_UG2864 _oled;

    // 构造
    public TouchListener(TiOLED_UG2864 oled) {
        this._oled = oled;
    }

    @Override
    public void onPressed(TiButton arg0) {
        try {
            // 屏幕实现
            this._oled.print(2, 0, "onPressed. ");
            // 终端打印
            System.out.println("onPressed. ");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onReleased(TiButton arg0) {
        try {
            // 屏幕实现
            this._oled.print(2, 0, "onReleased.");
            // 终端打印
            System.out.println("onReleased.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

/**
 * 摸我一下,Touch触摸按钮 
 * 
 * @author tijos
 *
 */
public class TouchMe {

    public static void main(String[] args) {

        try {
            // GPIO资源分配,GPIO0的PIN4脚
            TiGPIO gpio0 = TiGPIO.open(0, 4);
            // I2C主机总线资源分配,I2C PORT0
            TiI2CMaster i2cm0 = TiI2CMaster.open(0);
            // I2C主机总线资源与屏幕对象绑定,屏幕地址:0x3C           
            TiOLED_UG2864 oled = new TiOLED_UG2864(i2cm0, 0x3c);
            // GPIO总线资源与触摸按钮对象绑定,触发电平:高电平
            TiButton touch = new TiButton(gpio0, 4, true);  
            // 屏幕开启并清屏
            oled.turnOn();
            oled.clear();
            // 显示并打印标题
            oled.print(0, 0, "Touch me.");
            System.out.println("Touch me.");
            // 创建监听者,并传入屏幕实例
            TouchListener lc = new TouchListener(oled);
            // 设置触摸按键事件监听者
            touch.setEventListener(lc);

            while (true) {
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

第四节、实验现象

液晶屏会显示"Touch me."同时打印输出"Touch me.",摸下触摸按键液晶屏会显示"onPressed. "同时打印输出"onPressed. ",释放触摸按键液晶屏会显示"onReleased."同时打印输出"onReleased."。

第五节、参考资料

触摸按键详细介绍:https://baike.baidu.com/item/电容式触摸按键/18654527?fr=aladdin

芯片TTP223-BA6详细介绍:https://wenku.baidu.com/view/0450825fba68a98271fe910ef12d2af90342a853.html