找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7260|回复: 4
打印 上一主题 下一主题
收起左侧

Arduino学习17-连接TTP229B电容触摸模块

[复制链接]
跳转到指定楼层
楼主
新买一个TTP229B的16键触摸模块,黑心淘宝居然没给对PDF也没有借鉴的驱动代码,于是去官网下载了个pdf看时序图模仿了一个。
先上pdf文件 TTP229-BSF_V1.1_EN.pdf (326.25 KB, 下载次数: 37)
这个是TTP-229B(SSOP-28)的PDF,来自官网
http://www.tontek.com.tw/031-1-1.asp?p3id=20141007154716

硬件部分:
首先看文档调好跳线,其中1脚对应TP0,2脚对应TP1如此类推,把1/2/3/4/5跳线跳上,即TP0-TP4均为低电平0
含义如下:
TP0=0,TP1=0:SDA高电平激活

TP2=0:16按键全使用
TP3=0,TP4=0:所有按键Multi Key,即可以同时按下所有按键。


下面是跳好跳线的图片


一定要把模块的1-5跳线跳好,否则下面代码不能正常读取。


两个代码,一个是单独读一个按键,一个一次读完所有按键


一个是单独读一个按键

  1.     int SCLPin = A5, SDOPin = A4;   //SCL接A5,SDO接A4,非IIC,可以随意移动引脚接法
  2.     boolean h = 0, oldh = 0;
  3.     void setup()
  4.     {
  5.       Serial.begin(9600);
  6.       pinMode(SCLPin , OUTPUT);   //时钟端输出
  7.     }
  8.      
  9.     boolean ttp229single(int pin)
  10.     {
  11.       boolean DATA = 0;
  12.       pinMode(SDOPin , OUTPUT);
  13.       digitalWrite(SDOPin, HIGH);
  14.       delayMicroseconds(93);    //DV时间93us
  15.       digitalWrite(SDOPin, LOW);
  16.       delayMicroseconds(10);    //Tw时间10us
  17.       pinMode(SDOPin , INPUT);
  18.       for (int i = 0; i < 16; i++)
  19.       {
  20.         digitalWrite(SCLPin, HIGH);
  21.         digitalWrite(SCLPin, LOW);
  22.         if (i == pin-1)
  23.         {
  24.           DATA = digitalRead(SDOPin);    //读取数据
  25.         }
  26.       }
  27.       delay(2);    //Tout时间2ms
  28.       return DATA;
  29.     }
  30.      
  31.     void loop()
  32.     {
  33.       h = ttp229single(3);    //本例读了写着3数字的触摸键(TP2)
  34.      
  35.       if (h != oldh)    //数据改变的时候输出h
  36.       {
  37.         Serial.println(h);
  38.         oldh = h;
  39.         delay(40);      //满足pdf的T_resp(for 16-KEYS)时间32ms
  40.       }
  41.     }
复制代码

一个一次读完所有按键

  1.     int SCLPin = A5, SDOPin = A4;
  2.     unsigned int h = 0, oldh = 0;
  3.     void setup()
  4.     {
  5.       Serial.begin(9600);
  6.       pinMode(SCLPin , OUTPUT);   //时钟端输出
  7.     }
  8.      
  9.     unsigned int ttp229()     //一次读完TTP229所有按键
  10.     {
  11.       unsigned int DATA = 0;
  12.       pinMode(SDOPin , OUTPUT);
  13.       digitalWrite(SDOPin, HIGH);
  14.       delayMicroseconds(93);
  15.       digitalWrite(SDOPin, LOW);
  16.       delayMicroseconds(10);
  17.       pinMode(SDOPin , INPUT);
  18.       for (int i = 0; i < 16; i++)
  19.       {
  20.         digitalWrite(SCLPin, HIGH);
  21.         digitalWrite(SCLPin, LOW);
  22.         DATA |= digitalRead(SDOPin) << i;
  23.       }
  24.       delay(2);
  25.       return DATA&0xFFFF;
  26.     }
  27.      
  28.     void loop()
  29.     {
  30.       h = ttp229();
  31.       if (h != oldh)
  32.       {
  33.         Serial.println(h, BIN);
  34.         oldh = h;
  35.         delay(40);
  36.       }
  37.     }
复制代码




进阶阅读:代码与时序图关系简述

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:93720 发表于 2016-7-24 09:23 | 只看该作者
你好,你有51单片机的程序没
回复

使用道具 举报

板凳
ID:408738 发表于 2018-10-12 21:09 | 只看该作者
很不错的资料,学习下!
回复

使用道具 举报

地板
ID:304286 发表于 2018-11-15 00:09 | 只看该作者

很不错的资料,学习下
回复

使用道具 举报

5#
ID:622857 发表于 2019-10-12 14:13 | 只看该作者
你好,我买的同款键盘,可恶的那个宝卖家连原理图都没有,请问你有吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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