搜索
bottom↓
回复: 100

用M48做的触摸按键,20个按键,带I2C接口,有图有视频

  [复制链接]

出0入0汤圆

发表于 2011-12-29 15:02:31 | 显示全部楼层 |阅读模式
本人用ATMEGA48做了一个20个触摸按键的方案。
有图有真相。

原理图 (原文件名:M48TK20_1.jpg)


PCB图 (原文件名:M48TK20_2.jpg)


实物图正面 (原文件名:M48TK20_3.jpg)


实物图反面 (原文件名:M48TK20_4.jpg)

测试视频ourdev_708717KF7QGB.rar(文件大小:8.69M) (原文件名:M48TK20_5.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-12-29 15:04:28 | 显示全部楼层
简要原理:

  通过检测感应按键PAD的电容量变化来判断是否有触摸动作。当手指触摸PAD时,电容量增加,充放电时间变长。

  本方案中利用M48的20个双向IO口实现了20个触摸按键,而且所用原器件最少。其中R1~R20的10K电阻是消除干扰用的,如果采用软件算法,用数字滤波来消除干扰,这20个电阻也可以省略。这样就只需要10只1M的充放电电阻(R21~R30)就可以了。

  最基本的按键单元是两个PAD分别接M48的两个IO引脚,两个引脚之间用一个1M的电阻相连。如图:
  
  PB1(PAD1) O------/\/\/1M\/\/\------O (PAD2) PB2

  有3种方法检测PAD1的电容量变化:

方法1:检测PAD1的充电时间
  (1)初始化PB1输出低电平,PB2输出高电平,这时PAD1上的电量被放掉,PB1为低电平;
  (2)设置PB1高阻输入,同时记时,使能PB1引脚电平变化中断。这时PB2输出的高电平通过1M的电阻对PAD1充电;
  (3)充电到PAD1电平到MOS高电平的最低值时,PB1引脚电平变化中断,在中断里记下充电时间。

方法2:检测PAD1的放电时间
  (1)初始化PB1输出高电平,PB2输出低电平,这时PAD1充电,PB1为高电平;
  (2)设置PB1高阻输入,同时记时,使能PB1引脚电平变化中断。这时PAD1通过1M的电阻对PB2(地)放电;
  (3)放电到PAD1电平到MOS低电平的最高值时,PB1引脚电平变化中断,在中断里记下放电时间。

方法3:检测PAD1的充放电时间
  (1)初始化PB1输出低电平,PB2输出高电平,这时PAD1上的电量被放掉,PB1为低电平;
  (2)设置PB1高阻输入,同时记时,使能PB1引脚电平变化中断。这时PB2输出的高电平通过1M的电阻对PAD1充电;
  (3)充电到PAD1电平到MOS高电平的最低值时,PB1引脚电平变化中断。在中断里设置PB2输出低电平,这时PAD1通过1M的电阻对PB2放电;
  (4)放电到PAD1电平到MOS低电平的最高值时,PB1引脚电平变化中断。在中断里记下充放电的总时间。

  多次测量取滑动平均值(可以去掉最大、最小值后取平均值)来消除干扰。
  
  定时检测PAD1的充放电时间t0,t1,t2......tk,tk+1,所有数据的平均值作为参考值,最近几次采样值的平均值作为当前值,用来判断充放电时间的增减。当充放电时间的增量超过一个设定的门限值时就认为有按键动作。修改这个门限值可以改变按键的灵敏度。

  一个按键的检测过程就是这样的。其它按键同理。

  检测到按键后,通过I2C接口发送按键码。测试视频里只用了一个LED来指示按键动作,有键按下灯亮,按键释放灯灭。

出0入42汤圆

发表于 2011-12-29 15:06:29 | 显示全部楼层
厉害,怎么做到的?

出0入0汤圆

发表于 2011-12-29 16:07:20 | 显示全部楼层
好东西

出0入0汤圆

 楼主| 发表于 2012-1-6 20:06:19 | 显示全部楼层
好像感兴趣的人不多啊,回复的人这么少!
下面上传测试源代码,测试效果见视频。


//ICC-AVR application builder : 2011/12/1 20:30:09
// Target : m48
// Crystal: 8.0000Mhz

#include <iom48v.h>
#include <macros.h>

#define PSCL  PC5  //LED+
#define PSDA  PC4  //LED-

//   按键编号 引脚编号
#define P01   PC3  // 11
#define P02   PC2  // 10
#define P03   PC1  //  9
#define P04   PC0  //  8
#define P05   PD1  // 13
#define P06   PD0  // 12
#define P07   PB5  //  5  //SCK
#define P08   PB4  //  4  //MISO
#define P09   PD2  // 14
#define P10   PD3  // 15
#define P11   PB2  //  2
#define P12   PB3  //  3  //MOSI
#define P13   PD4  // 16
#define P14   PB6  //  6
#define P15   PB0  //  0
#define P16   PB1  //  1
#define P17   PB7  //  7
#define P18   PD5  // 17
#define P19   PD6  // 18
#define P20   PD7  // 19

#define on    1
#define off   0

//引脚编号=K[按键编号]
unsigned char K[21]={0,11,10,9,8,13,12,5,4,14,15,2,3,16,6,0,1,7,17,18,19};

void led(unsigned char on_off)
{
if(on_off)  PORTC &= ~BIT(PSDA);
else        PORTC |= BIT(PSDA);
}

void key_tst_prep(unsigned char k)
{
PORTB = 0xFF;
DDRB  = 0x00;
PORTC |= 0x6F;
DDRC  = 0x30;
PORTD = 0xFF;
DDRD  = 0x00;

PCMSK0 = 0x00; //pin change mask 0
PCMSK1 = 0x00; //pin change mask 1
PCMSK2 = 0x00; //pin change mask 2
PCIFR = 0x07; //clear pin change flag2...0
PCICR = 0x07; //pin change enable

if(k<8)
{
  PORTB &= ~(1<<k);
  DDRB |= (1<<k);
}
else if(k<12)
{
  k-=8;
  PORTC &= ~(1<<k);
  DDRC |= (1<<k);
}
else if(k<20)
{
  k-=12;
  PORTD &= ~(1<<k);
  DDRD |= (1<<k);
}
}

void key_tst_start(unsigned char k)
{
PCIFR = 0x07; //clear pin change flag2...0
if(k<8)
{
  PCMSK0 = (1<<k); //pin change mask 0
  DDRB &= ~(1<<k);
}
else if(k<12)
{
  k-=8;
  PCMSK1 = (1<<k); //pin change mask 1
  DDRC &= ~(1<<k);
}
else if(k<20)
{
  k-=12;
  PCMSK2 = (1<<k); //pin change mask 2
  DDRD &= ~(1<<k);
}
TCNT0 = 0x00;
}
//4,7,8,12,14,17,19,20
unsigned char KEYNUM=20,KF[21]={0};//按键标记 1按下 0未按
//按键编号               1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
unsigned char D[21]={80,26,26,26,36,26,26,60,55,26,26,26,60,26,40,26,26,40,26,40,40};//门限值

#pragma interrupt_handler key_tst:iv_PCINT0
#pragma interrupt_handler key_tst:iv_PCINT1
#pragma interrupt_handler key_tst:iv_PCINT2
void key_tst(void)
{
unsigned char i;
if(TCNT0>D[KEYNUM]) KF[KEYNUM]=on;
else KF[KEYNUM]=off;
for(i=1;i<21;i++)
{
   if(KF) {KF[0]=i; break;}
        else KF[0]=0;
}
led(KF[0]);
if(KEYNUM++>19) KEYNUM = 1;
}

//TIMER0 initialize - prescale:1
// WGM: Normal
// desired value: 0.125uSec
// actual value:  0.125uSec (0.0%)
void timer0_init(void)
{
TCCR0B = 0x00; //stop
TCNT0 = 0xFF; //set count
TCCR0A = 0x00;
TCCR0B = 0x02; //start timer
TIMSK0 = 0x00; //timer 0 interrupt sources
}

//TIMER2 initialize - prescale:32
// WGM: Normal
// desired value: 1mSec
// actual value:  1.000mSec (0.0%)
void timer2_init(void)
{
TCCR2B = 0x00; //stop
ASSR  = 0x00; //set async mode
TCNT2 = 0x00; //setup
OCR2A = 0x83;
TCCR2A = 0x00;
TCCR2B = 0x02; //start
TIMSK2 = 0x03; //timer 2 interrupt sources
}

#pragma interrupt_handler timer2_compa_isr:iv_TIM2_COMPA
void timer2_compa_isr(void)
{
key_tst_start(K[KEYNUM]);
}

#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF
void timer2_ovf_isr(void)
{
//TCNT2 = 0x06; //reload counter value
key_tst_prep(K[KEYNUM]);
}

//TWI initialize
// bit rate:1
void twi_init(void)
{
TWCR= 0X00; //disable twi
TWBR= 0x01; //set bit rate
TWSR= 0x01; //set prescale
TWAR= 0x00; //set slave address
TWCR= 0x44; //enable twi
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
key_tst_prep(K[KEYNUM]);
timer0_init();
timer2_init();
//twi_init();

MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EIMSK = 0x00;
PRR = 0x0F; //power controller
SEI(); //re-enable interrupts
//all peripherals are now initialized
}

//
void main(void)
{
init_devices();
}

出0入0汤圆

 楼主| 发表于 2012-1-7 23:42:20 | 显示全部楼层
楼上的测试程序门限值是手工设定的。

下面的程序加入了动态自动校准环境自适应功能,加入了抗干扰算法,效果超级好。

固件ourdev_711201Y6KHOB.rar(文件大小:2K) (原文件名:M48TouchKey20.rar)

加了一层硬纸板 (原文件名:TOUCHKEY20_6.JPG)

测试视频ourdev_711203VETM3P.rar(文件大小:9.93M) (原文件名:TOUCHKEY20_7.rar)

出0入0汤圆

发表于 2012-1-8 00:11:15 | 显示全部楼层
好强大!

出0入85汤圆

发表于 2012-1-8 00:20:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-8 00:48:22 | 显示全部楼层
学习

出0入0汤圆

发表于 2012-1-8 01:13:31 | 显示全部楼层
请问这样你能做到多少的低功耗?我用专用触摸芯片,静态是3uA,16键

出0入0汤圆

 楼主| 发表于 2012-1-8 12:22:03 | 显示全部楼层
回复【9楼】yoyobbs
请问这样你能做到多少的低功耗?我用专用触摸芯片,静态是3ua,16键
-----------------------------------------------------------------------

如果采用单键唤醒,静态功耗3uA以下是绝对可以做到的。

出0入0汤圆

发表于 2012-1-8 12:31:26 | 显示全部楼层
不错不顶不行啊!

出0入0汤圆

发表于 2012-1-8 12:37:02 | 显示全部楼层
收藏。原来有MEGA8做的按键。升级一下芯片。

出0入0汤圆

 楼主| 发表于 2012-1-17 18:38:57 | 显示全部楼层
这个方案的芯片换成 M8 同样可以,引脚电平变化用查询方式,检测多个充放电周期的总时间来提高分辨率。单键检测源程序如下:

#define counter4CheckKey  TCNT2
#define checkKeyTimeoutValue  200
#define numChargeDischargeCycle  6

//  按键编号 引脚编号
#define P01   (1<<PC3)  
#define P02   (1<<PC2)  
unsigned char checkPad01(void)
{
  unsigned char numCycle=0;
  counter4CheckKey=0;
  while(counter4CheckKey<checkKeyTimeoutValue) //设定按键检查超时时间
  {
    PORTC&=~(P01|P02); //PIN,LOAD输出低电平
    DDRC|=P01|P02;
    DDRC&=~P01; //PIN输入
    PORTC|=P02; //LOAD输出高电平
    while(!(PINC&P01)); //等充电结束
    PORTC|=P01; //PIN输出高电平
    DDRC|=P01;
    DDRC&=~P01; //PIN上拉输入
    PORTC&=~(P01|P02); //PIN输入,LOAD输出低电平
    while(PINC&P01); //等放电结束
    numCycle++; //充放电次数记数
    if(numCycle>=numChargeDischargeCycle) break;
  }
  return counter4CheckKey; //返回numChargeDischargeCycle次充放电时间
}

这个方案的优点是 LOAD 引脚复用,可以多做一个按键,做 N 个按键的话可以节省 N/2 个电阻。

出0入0汤圆

 楼主| 发表于 2012-1-17 18:48:35 | 显示全部楼层
楼上的方案适用于任意带双向 I/O 端口的 MCU 控制器。

出0入0汤圆

发表于 2012-1-17 19:26:44 | 显示全部楼层
不错,学习

出0入0汤圆

发表于 2012-1-17 19:49:44 | 显示全部楼层
实在给力呀

出330入1925汤圆

发表于 2012-1-17 20:15:59 | 显示全部楼层
mark!

出0入0汤圆

发表于 2012-1-17 20:38:53 | 显示全部楼层
STM8的板子和这个差不多的原理,但一直没搞清楚接线方式和布线的注意事项。希望楼主能不吝赐教。

出0入0汤圆

发表于 2012-1-17 20:46:59 | 显示全部楼层
Mark

出0入0汤圆

发表于 2012-1-20 20:06:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-20 20:22:54 | 显示全部楼层
mark  好东西

出0入0汤圆

发表于 2012-1-20 21:50:19 | 显示全部楼层
顶你!

出0入0汤圆

发表于 2012-1-20 21:58:06 | 显示全部楼层
mark

出0入12汤圆

发表于 2012-1-20 23:27:45 | 显示全部楼层
标一下

出0入0汤圆

发表于 2012-1-21 01:04:05 | 显示全部楼层
mark,学习

出0入0汤圆

发表于 2012-2-7 10:41:35 | 显示全部楼层
为何不用现成的QTOUCH技术??

出0入0汤圆

发表于 2012-5-29 23:15:11 | 显示全部楼层
楼主 能不能 出一块我 玩玩。。

出0入0汤圆

发表于 2012-6-19 07:47:34 | 显示全部楼层
关注灵敏度,请LZ把有触摸和无触摸的测量数据表发上来看看

出0入0汤圆

发表于 2012-6-19 08:09:44 来自手机 | 显示全部楼层
强力啊 帮顶

出0入0汤圆

发表于 2012-6-19 08:16:57 | 显示全部楼层
打个标记。楼主厉害

出0入0汤圆

发表于 2012-6-19 09:14:30 | 显示全部楼层
M48实现电容触摸按键

出0入0汤圆

发表于 2012-6-19 09:23:34 | 显示全部楼层
不错,帮顶。

出0入0汤圆

发表于 2012-6-19 09:55:46 | 显示全部楼层
MARK一下,看看

出0入0汤圆

发表于 2012-7-2 19:51:52 | 显示全部楼层
skyxjh 发表于 2012-1-7 23:42
楼上的测试程序门限值是手工设定的。

下面的程序加入了动态自动校准环境自适应功能,加入了抗干扰算法,效 ...

能发个代码来吗?

出0入0汤圆

 楼主| 发表于 2012-7-3 23:30:27 | 显示全部楼层
Tifosi_ 发表于 2012-7-2 19:51
能发个代码来吗?

典型的伸手党!
给你提供一个思路,代码自己写。
采样一段时间内的电容变化量作为按键按下和释放的判断标准;
多次测量取平均值来消除干扰;

出0入0汤圆

发表于 2012-7-4 09:49:27 | 显示全部楼层
skyxjh 发表于 2012-7-3 23:30
典型的伸手党!
给你提供一个思路,代码自己写。
采样一段时间内的电容变化量作为按键按下和释放的判断标 ...

   多谢了

出0入0汤圆

发表于 2012-7-4 10:16:01 | 显示全部楼层
强大 强大

出0入0汤圆

发表于 2012-7-4 11:32:22 | 显示全部楼层
这个 确实值得 大家去学习  好东西  电容触摸 我搞了 好久了  我们主要做电容触摸液晶的 段码的  这种方法 也适用于 液晶块状触摸 不错

出0入0汤圆

发表于 2012-11-14 09:32:30 | 显示全部楼层
看了好久这个原理讲的最直接。
讲理论的用库的不少,不过还是喜欢这种直接的。

出0入137汤圆

发表于 2012-11-14 10:06:23 | 显示全部楼层
M48实现电容触摸按键

出0入0汤圆

发表于 2012-11-14 11:07:21 | 显示全部楼层
PIC应用手册有详细的说明,原理就这样我在好多产品上都用的PIC

出0入0汤圆

发表于 2012-11-14 11:09:50 | 显示全部楼层
顶,不知道实际效果跟qtouch比有什么优点没?

出0入0汤圆

发表于 2012-11-14 11:48:48 | 显示全部楼层
好东西!学习了

出0入0汤圆

发表于 2012-11-16 10:24:10 | 显示全部楼层
学习了,抗干扰不知道怎么样

出0入10汤圆

发表于 2012-11-16 10:56:46 | 显示全部楼层
给力,顶

出0入0汤圆

发表于 2012-11-16 11:16:19 | 显示全部楼层
看看

出0入0汤圆

发表于 2012-11-16 14:40:49 | 显示全部楼层
marking.....

出0入0汤圆

发表于 2012-11-16 17:03:14 | 显示全部楼层
拜服拜服啊

出0入0汤圆

发表于 2012-12-10 11:06:43 | 显示全部楼层
按照楼主的思路用STM8S做了个,完全没效果,不知道原因出在哪里

出0入0汤圆

发表于 2012-12-10 11:08:34 | 显示全部楼层
难道是手指放上去电容值改变太小,用16M不分频,TIM2来测放手指跟没放手指,充电时间完全一样

出0入0汤圆

发表于 2012-12-10 11:15:48 | 显示全部楼层
for(i=20;i>0;i--)
                {
                        flag=0;                        //是否进入外部中断判断标志
                        TIM3_Cmd(DISABLE); //计时器无效
                        EXTI_DeInit(); //外中断无效,有哥们说这个起不到作用
                        GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); //PC5低电平输出
                        GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);//PC3低电平输出
                        TIM3_SetCounter(0x0000); //TIM3初始值0
                        GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_IN_FL_IT);//PC5输入悬浮带中断
                  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_RISE_ONLY); //开PC外中断上升沿
                        _asm("rim");  //开中断
                        TIM3_Cmd(ENABLE); //启动定时器
                        GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST);//PC3推挽输出
                        while(flag==0);
                        }
中断子程序如下:
#ifdef _COSMIC_
@far @interrupt void EXTI_PORTC_IRQHandler(void)
#else /* _RAISONANCE_ */
void EXTI_PORTC_IRQHandler(void) interrupt 5
#endif /* _COSMIC_ */
{

  _asm("sim");//关中断
        TIM3_Cmd(DISABLE);//停TIM3计时
        value=value*2/3+ TIM3_GetCounter()/3;//软件滤波
        flag=1;
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
}

出0入0汤圆

发表于 2012-12-10 11:17:16 | 显示全部楼层
放手指跟不放手指定时器的值都为142左右

出0入0汤圆

发表于 2012-12-10 13:04:32 | 显示全部楼层
好东西

出0入0汤圆

发表于 2012-12-11 12:39:57 | 显示全部楼层
好东西,值得学习

出0入0汤圆

发表于 2012-12-11 12:42:55 | 显示全部楼层
好东西,挺有意思的

出0入0汤圆

发表于 2012-12-11 12:57:13 | 显示全部楼层
mark 电容触摸

出0入4汤圆

发表于 2012-12-13 17:10:39 | 显示全部楼层
不错,想知道实际的效果?

出0入4汤圆

发表于 2012-12-13 17:14:49 | 显示全部楼层
不错,想知道实际的效果如何?

出0入0汤圆

发表于 2012-12-13 17:44:39 | 显示全部楼层
其实楼主的原理已经讲的很清楚啦,再就是要注意layout!

出0入0汤圆

发表于 2013-1-9 16:09:06 | 显示全部楼层
mark,不错.

出0入0汤圆

 楼主| 发表于 2013-1-16 12:43:09 | 显示全部楼层
shenbk 发表于 2012-12-10 11:06
按照楼主的思路用STM8S做了个,完全没效果,不知道原因出在哪里

你可以用14楼的方案试一下,用16位的计数器,先排除进中断可能出现的问题。

出0入0汤圆

发表于 2013-1-16 14:57:20 | 显示全部楼层
这么复杂的检测方法是不是特别耗费系统资源?运行起来是不是会造成很差的用户体验?要是用户使用起来觉得不好使,那这个方案就是再巧妙也是没用的。这个分布电容如何才能做到稳定呢?我的意思是(1).为了让这个分布电容能够稳定检测出来,需要在哪些方面注意并特别设计。(2)如何验证这个方案是不是可行,请用计算分析方法而不是做用户使用调查得出分析结果。例如你通过计算可以知道这种电路在某种环境湿度下就不能正常工作了。

出0入0汤圆

发表于 2013-1-16 17:56:11 | 显示全部楼层
能抗扰不

出0入0汤圆

发表于 2013-3-18 13:30:35 | 显示全部楼层
markmarkmark

出0入0汤圆

发表于 2013-3-18 14:14:00 | 显示全部楼层
3ua的功耗,做不到吧

出0入0汤圆

发表于 2013-3-18 17:13:40 | 显示全部楼层
讲得很明了,试下效果

出0入0汤圆

发表于 2013-3-20 12:38:57 | 显示全部楼层
这几天试验一下。

出0入0汤圆

发表于 2013-3-21 11:46:59 | 显示全部楼层
很不错的思路!
恭喜了!
可惜没有时间和精力来做一个试试。

出0入0汤圆

发表于 2013-3-21 11:49:33 | 显示全部楼层
MARK一下,看看

出0入0汤圆

发表于 2013-7-27 07:59:45 | 显示全部楼层
赞,很强大

出0入0汤圆

发表于 2013-7-27 13:50:49 | 显示全部楼层
LZ能否介绍下克服干扰的经验,我用BS83B12A-3时感觉干扰大,加了软件去干扰好了不少,但有时还会有。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入8汤圆

发表于 2013-7-27 18:51:16 | 显示全部楼层
标记一下、很厉害

出0入0汤圆

 楼主| 发表于 2013-7-27 23:59:28 | 显示全部楼层
sonyericsson 发表于 2013-7-27 13:50
LZ能否介绍下克服干扰的经验,我用BS83B12A-3时感觉干扰大,加了软件去干扰好了不少,但有时还会有。 ...

你这个干扰可能主要来自发光二极管,原理图上看出你已经采取了措施,加了电容,软件上注意避开二极管通断时测量按键状态,多次测量去掉最大最小值后取平均值来消除干扰。

出0入0汤圆

 楼主| 发表于 2013-7-28 00:07:28 | 显示全部楼层
加上动态校准,只检测上升沿,两次测量的差值大于阈值就认为有按键按下。不用关心标准电容值。

出0入0汤圆

发表于 2013-8-2 16:00:19 | 显示全部楼层
很不错的东东哦,不知道实抗干扰能力怎么样,穿透能力怎么样

出0入0汤圆

发表于 2013-11-24 22:13:38 | 显示全部楼层
厉害!!先收藏了

出0入0汤圆

发表于 2013-11-25 11:10:25 | 显示全部楼层
试下先!!

出0入0汤圆

发表于 2013-12-3 10:18:05 | 显示全部楼层
非常清楚。效果需要自测

出0入0汤圆

发表于 2013-12-3 11:07:47 | 显示全部楼层
真不错
按键值是主动传给主MCU吗?

出0入0汤圆

发表于 2013-12-3 11:22:07 | 显示全部楼层
厉害 。。。。以后用的上      

出0入0汤圆

发表于 2013-12-3 21:20:24 | 显示全部楼层
mark!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2013-12-4 10:08:52 | 显示全部楼层
mark  触摸按键

出0入0汤圆

发表于 2013-12-4 10:49:35 | 显示全部楼层
楼主好人

出0入0汤圆

发表于 2013-12-4 13:27:05 | 显示全部楼层
是个不错的思路,不一定只用在按键的应用上

出0入0汤圆

发表于 2013-12-4 13:37:46 | 显示全部楼层
留一个爪,以后再看。

出0入0汤圆

发表于 2013-12-7 17:10:05 | 显示全部楼层
mark思路不错

出0入0汤圆

发表于 2013-12-7 17:26:40 | 显示全部楼层
电容变化??这个也行 ?

出0入0汤圆

发表于 2014-9-17 16:26:19 | 显示全部楼层
触摸按键是PCB的铺铜呀。。

出0入0汤圆

发表于 2014-9-17 16:44:00 | 显示全部楼层
特来学习一下,我们也准备用这方式

出0入0汤圆

发表于 2014-9-30 18:57:04 | 显示全部楼层
顶你楼主QQ是多少,能发个吗,谢谢!

出0入0汤圆

发表于 2014-9-30 19:03:00 | 显示全部楼层
要是隔一层玻璃或一张纸还能实现触摸吗?

出0入0汤圆

发表于 2014-10-1 05:43:55 | 显示全部楼层
特来学习一下,我们也准备用这方式。

出0入0汤圆

发表于 2014-10-1 08:33:34 | 显示全部楼层
好的,谢谢分享

出150入0汤圆

发表于 2014-10-1 09:46:39 | 显示全部楼层
板子画那么大

出0入0汤圆

发表于 2014-10-1 10:17:37 | 显示全部楼层
这个不错。

出0入0汤圆

发表于 2014-10-11 10:28:28 | 显示全部楼层
这个不错

出0入0汤圆

发表于 2014-10-13 07:52:04 | 显示全部楼层
厉害,怎么做到的?

出0入0汤圆

 楼主| 发表于 2015-3-30 21:32:58 | 显示全部楼层
kelian 发表于 2014-9-30 19:03
要是隔一层玻璃或一张纸还能实现触摸吗?

第二个视频里就有隔着一张纸的效果。

出0入0汤圆

发表于 2016-4-15 15:40:06 | 显示全部楼层
太厉害了,学习后仿制。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-12 18:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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