搜索
bottom↓
回复: 26

现在按键一按就几个灯一起亮,这样怎么办呢?

[复制链接]
(358367719)

出0入0汤圆

发表于 2009-6-18 23:41:55 | 显示全部楼层 |阅读模式
如题,我不知道我的通道是否有错,用的是tinny88,和IAR5.20的新版本,希望各位帮我看一下,哪有问题,主程序如下:
__task void main( void )
{
  /* initialise host app, pins, watchdog, etc */
   init_system();
   /* enable sensor 0: a rotor on channels 0..3 sensor 0 */
   qt_enable_rotor( CHANNEL_0, CHANNEL_3, NO_AKS_GROUP, 16u, HYST_6_25, RES_8_BIT, 3u  );  

   /* enable sensors 1..4: keys on channels 4..7 respectively */
   qt_enable_key( CHANNEL_4, AKS_GROUP_1, 10u, HYST_6_25 );   //sensor 1
   qt_enable_key( CHANNEL_5, AKS_GROUP_2, 10u, HYST_6_25 );   //sensor 2
   qt_enable_key( CHANNEL_6, AKS_GROUP_3, 10u, HYST_6_25 );   //sensor 3
   qt_enable_key( CHANNEL_7, AKS_GROUP_4, 10u, HYST_6_25 );   //sensor 4



   
   
   /* initialise touch sensing */
   qt_init_sensing();
   
   /* configure timer ISR to fire regularly */
   init_timer_isr();

   
   
   /* configure the debug data reported to the PC */
   board_info.qt_max_num_rotors_sliders_board_id = ( ( QT_MAX_NUM_ROTORS_SLIDERS << 4 ) | EVK2080B );
    board_info.qt_num_channels = QT_NUM_CHANNELS;
  
   sensor_config[0] = SENSOR_CONFIG( CHANNEL_0, CHANNEL_3, SENSOR_TYPE_ROTOR );         
   sensor_config[1] = SENSOR_CONFIG( CHANNEL_4, CHANNEL_4, SENSOR_TYPE_KEY );
   sensor_config[2] = SENSOR_CONFIG( CHANNEL_5, CHANNEL_5, SENSOR_TYPE_KEY );
   sensor_config[3] = SENSOR_CONFIG( CHANNEL_6, CHANNEL_6, SENSOR_TYPE_KEY );
   sensor_config[4] = SENSOR_CONFIG( CHANNEL_7, CHANNEL_7, SENSOR_TYPE_KEY );
   sensor_config[5] = SENSOR_CONFIG( CHANNEL_0, CHANNEL_0, SENSOR_TYPE_UNASSIGNED );
   sensor_config[6] = SENSOR_CONFIG( CHANNEL_0, CHANNEL_0, SENSOR_TYPE_UNASSIGNED );
   sensor_config[7] = SENSOR_CONFIG( CHANNEL_0, CHANNEL_0, SENSOR_TYPE_UNASSIGNED );

   /* enable interrupts */
   __enable_interrupt();
   /* loop forever */
  for( ; ; )
   {  
      /* test flag: is it time to measure touch? */
      if( time_to_measure_touch )
      {
         /* clear flag: it's time to measure touch */
      time_to_measure_touch = 0u;

         /* measure touch sensors */
         qt_measure_sensors( current_time_ms );
         
         /* report debug data to host */
         report_debug_data();
      }
      
      
      /*检测key4.1*/
         if (qt_touch_status.sensor_states & CHANNEL_4)
          {
           PORTD_Bit4 = 1;
          }
  
         else
          {
           PORTD_Bit4 = 0;
          }
      /*检测key3.1*/
         if (qt_touch_status.sensor_states & CHANNEL_5)
          {
           PORTA_Bit2 = 1;
          }
  
         else
          {
           PORTA_Bit2 = 0;
          }
       /*检测key2.1*/
      if (qt_touch_status.sensor_states & CHANNEL_6)
          {
           PORTD_Bit5 = 1;
          }
  
         else
          {
           PORTD_Bit5 = 0;
          }
      /*检测key1.1*/
           if (qt_touch_status.sensor_states & CHANNEL_7)
          {
           PORTB_Bit7 = 1;
          }
  
         else
          {
           PORTB_Bit7 = 0;
          }
   }
   
}
(358314517)

出0入0汤圆

 楼主| 发表于 2009-6-19 14:28:37 | 显示全部楼层
怎么没有人呢?帮忙看看,我是新手,不懂呀!!各位帮帮忙啊!
(358289810)

出0入0汤圆

发表于 2009-6-19 21:20:24 | 显示全部楼层
if ((qt_touch_status.sensor_states & CHANNEL_4) 中不能用CHANNEL_4,而应该把它改成0x01,其它的应该为0x02,0x04,0x08。还有,如果你希望4个键之间不互相干扰,应该在enable_key函数中把它们设置为相同的group。希望对你有帮助。
(358250476)

出0入0汤圆

 楼主| 发表于 2009-6-20 08:15:58 | 显示全部楼层
非常感谢,我试试
(358157856)

出0入0汤圆

 楼主| 发表于 2009-6-21 09:59:38 | 显示全部楼层
还是不行呀!换成01、02、04、08之后,跟原来一样,那个对于通道的管脚,需要设置吗?我用的是PB0-PB3四个口,需要设置他们的输入输出吗?
(358152071)

出0入0汤圆

发表于 2009-6-21 11:36:03 | 显示全部楼层
让我再想想啊
1、如果你没有用到滑条,只是4个按键,那么这句话可以删掉qt_enable_rotor( CHANNEL_0, CHANNEL_3, NO_AKS_GROUP, 16u, HYST_6_25, RES_8_BIT, 3u  );  

2、在删掉了上面的那句话后,把 qt_enable_key( CHANNEL_4, AKS_GROUP_1, 10u, HYST_6_25 );  里的CHANNEL_4改成CHANNEL_0,其它三组类似地改成CHANNEL_1~CHANNEL_3

3然后在确认楼上我说的“01、02、04、08”改动已经实施。

输入输出不用设置。按照例子程序的默认设置就可以。我用了这个库,只带了一个按键,没有问题的。多多交流吧,我也是才接触这个玩艺没多久,现在还在被灵敏度的问题困扰着,呵呵。

希望有帮助。
(358147576)

出0入0汤圆

 楼主| 发表于 2009-6-21 12:50:58 | 显示全部楼层
谢谢,十分感谢,基本解决了,还有一点小干扰,我再调调。
(358135748)

出0入0汤圆

发表于 2009-6-21 16:08:06 | 显示全部楼层
你的灵敏度咋样?我想达到手还没碰到板子就能检测到的结果,但一直很不理想。我想用这个做个类似接近开关的东西。
(358131883)

出0入0汤圆

 楼主| 发表于 2009-6-21 17:12:31 | 显示全部楼层
这个不知道,我这个就是四个按键,按上灯亮就行了,论坛里不是说,可以调节qt_enable_key( CHANNEL_4, AKS_GROUP_1, 10u, HYST_6_25 );   这个语句中10u的大小来进行吗?你试试吧
(358130390)

出0入0汤圆

 楼主| 发表于 2009-6-21 17:37:24 | 显示全部楼层
你有没有这种情况,就是正面不怎么好用,但是反面很敏感。
(358122486)

出0入0汤圆

发表于 2009-6-21 19:49:08 | 显示全部楼层
程序我没有细看,不知道有没有软件抗干扰。
(358107197)

出0入296汤圆

发表于 2009-6-22 00:03:57 | 显示全部楼层
把门限的10改为30或40看看。
(358073904)

出0入0汤圆

 楼主| 发表于 2009-6-22 09:18:50 | 显示全部楼层
那个门限是越大越敏感吗?
(358072253)

出0入0汤圆

 楼主| 发表于 2009-6-22 09:46:21 | 显示全部楼层
调试这个,是通过调试current_time_ms 的大小,来完成吗?
(358071665)

出0入0汤圆

发表于 2009-6-22 09:56:09 | 显示全部楼层
那个threshold是越大越敏感啊?!,我的样板已经封到了机器里,拿不出来了。tingsi,你能试一下看看吗?要不我从10调到2都没什么变化呢。我的正反面区别不是太大,都是手指碰上才能有反应。
(358071368)

出0入0汤圆

 楼主| 发表于 2009-6-22 10:01:06 | 显示全部楼层
不能呀!我也就是问问,我从10调到30后,根本就没有反应了,还有你的current_time_ms是多大呀?这个有什么用呀?
(358069430)

出0入0汤圆

 楼主| 发表于 2009-6-22 10:33:24 | 显示全部楼层
我试了一下,调到3基本上就可以提前触发了
(358068089)

出0入0汤圆

发表于 2009-6-22 10:55:45 | 显示全部楼层
谢谢,看来不同板子对threshold的要求还是不一样的,我可能要重新layout一下了。
current_time_ms感觉是库函数里用来校准漂移用的,也就是说,一段时间后,它要根据环境(温度?湿度?电场?)的变化重新校准检测中的一些参数什么的。这个值不需要很准确,我感觉。
(358060758)

出0入296汤圆

发表于 2009-6-22 12:57:56 | 显示全部楼层
current_time_ms一定要填写当前的客观毫秒数……别乱填写……这是整个系统的时间标尺……
(358050101)

出0入0汤圆

发表于 2009-6-22 15:55:33 | 显示全部楼层
哦,那还是如实赋值吧
(358047758)

出0入0汤圆

 楼主| 发表于 2009-6-22 16:34:36 | 显示全部楼层
谢谢各位的指导,current_time_ms我赋的是感应电容高脉冲的时间与中断的时间,可以自动更新的,效果还不错,应该是这样的吧
(358032401)

出0入296汤圆

发表于 2009-6-22 20:50:33 | 显示全部楼层
【20楼】 tingsi  
    给一个一直累加的毫秒计数器就可以了……和你说的XXXX时间,貌似米太大关系……
(357984402)

出0入0汤圆

 楼主| 发表于 2009-6-23 10:10:32 | 显示全部楼层
又有一个问题了,我用的是PB0到PB3四个口,我要控制8个按键,所以我用跳线进行了选择,分别把每四个键连在了PD0和PD1上,这样能实现八个键分别控制八个灯亮,而不互相干扰吗?
(357981813)

出0入0汤圆

 楼主| 发表于 2009-6-23 10:53:41 | 显示全部楼层
各位大哥,帮帮忙呀!
(349571949)

出0入0汤圆

发表于 2009-9-28 18:58:05 | 显示全部楼层
我感觉QTouch2.0的滑条和滚轮的库有bug,至少对于部分芯片是这样的,整体而言,处理得也不甚严谨。
(349519267)

出0入0汤圆

发表于 2009-9-29 09:36:07 | 显示全部楼层
现在出QTouchLib3.0了,不知道有没大大改进,可以在哪下载到??
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-10-26 18:17

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

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