新闻中心

EEPW首页 > 物联网与传感器 > 设计应用 > 电容触摸传感的理论框架

电容触摸传感的理论框架

——
作者:Thomas Perme 微芯科技公司 应用工程师时间:2009-07-20来源:电子产品世界收藏

确定是否大于最小门限值
指示按下/未按下

本文引用地址:http://www.eepw.com.cn/article/96399.htm

代码示例1给出了实现该百分比表决方案的关键步骤的指令。它假定已经设置了完整的扫描系统,现在在代码中只需要实现表决系统。 

第一个代码块从步骤3 开始,对两个数组pctarray[]和indxarray[]进行排序。pctarray数组中包含前面刚执行的每次扫描中每个的值。indxarray每一次都必须复位。indxarray关联一个索引(指示与哪个关联)——对应于pctarray中的每个百分比值。在步骤4的排序过程中,该索引记录pctarray中的每个读数对应于哪个传感器。(关于更形象化的说明,请参见与本文关联的演示幻灯片)。

按从最高到最低进行排序之后,下一个代码块执行步骤6和7。pctarray[0]值是受影响程度最高的读数,而indxarray[0]是传感器的索引。然后,可以执行简单的检查,确定值是高于还是低于可接受的门限值。如果按键被按下,则可以根据indxarray[0]值确定它是哪一个传感器。如果值被视为“关闭”,则说明没有任何按键被按下(因为该按键是受影响程度最高的按键)。所有的按键都应在应用级别指示为“关闭”。
代码示例1:

if (INDEX == 3) {
 // 如果扫描结束

 IndxArray[0] = 0; // 复位IndxArray
 IndxArray[1] = 1;
 IndxArray[2] = 2;
 IndxArray[3] = 3;

 // 从大到小对PctArray和IndxArray进行排序
 // .. 基于PctArray
 for (i=0; i<NUM_BTTNS-1; i++) {
  for (j=0; j<((NUM_BTTNS-1)-i); j++) { 
   if (PctArray[j] < PctArray[j+1]) {
        temp = PctArray[j];         // 存储第j个元素
           PctArray[j] = PctArray[j+1];       // 移动第j+1个元素
    PctArray[j+1] = temp;        // 移动原先的第j个元素  

    temp = IndxArray[j];        // 以类似方式对索引数组进行排序
    IndxArray[j] = IndxArray[j+1];      // 对应于百分比数组
    IndxArray[j+1] = temp;
   }
  }
 }
}



评论


相关推荐

技术专区

关闭