電容觸摸傳感的理論框架
確定是否大于最小門(mén)限值
指示按下/未按下
代碼示例1給出了實(shí)現該百分比表決方案的關(guān)鍵步驟的指令。它假定已經(jīng)設置了完整的掃描系統,現在在代碼中只需要實(shí)現表決系統。
第一個(gè)代碼塊從步驟3 開(kāi)始,對兩個(gè)數組pctarray[]和indxarray[]進(jìn)行排序。pctarray數組中包含前面剛執行的每次掃描中每個(gè)傳感器的值。indxarray每一次都必須復位。indxarray關(guān)聯(lián)一個(gè)索引(指示與哪個(gè)傳感器關(guān)聯(lián))——對應于pctarray中的每個(gè)百分比值。在步驟4的排序過(guò)程中,該索引記錄pctarray中的每個(gè)傳感器讀數對應于哪個(gè)傳感器。(關(guān)于更形象化的說(shuō)明,請參見(jiàn)與本文關(guān)聯(lián)的演示幻燈片)。
按從最高到最低進(jìn)行排序之后,下一個(gè)代碼塊執行步驟6和7。pctarray[0]值是受影響程度最高的讀數,而indxarray[0]是傳感器的索引。然后,可以執行簡(jiǎn)單的檢查,確定值是高于還是低于可接受的門(mén)限值。如果按鍵被按下,則可以根據indxarray[0]值確定它是哪一個(gè)傳感器。如果值被視為“關(guān)閉”,則說(shuō)明沒(méi)有任何按鍵被按下(因為該按鍵是受影響程度最高的按鍵)。所有的按鍵都應在應用級別指示為“關(guān)閉”。
代碼示例1:
if (INDEX == 3) {
// 如果掃描結束
IndxArray[0] = 0; // 復位IndxArray
IndxArray[1] = 1;
IndxArray[2] = 2;
IndxArray[3] = 3;
// 從大到小對PctArray和IndxArray進(jìn)行排序
// .. 基于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個(gè)元素
PctArray[j] = PctArray[j+1]; // 移動(dòng)第j+1個(gè)元素
PctArray[j+1] = temp; // 移動(dòng)原先的第j個(gè)元素
temp = IndxArray[j]; // 以類(lèi)似方式對索引數組進(jìn)行排序
IndxArray[j] = IndxArray[j+1]; // 對應于百分比數組
IndxArray[j+1] = temp;
}
}
}
}
評論