Arduino筆記(69):TTP224電容觸控控制LED燈

觸控的應用非常普遍,從手機到電燈、飲水機開關等,都是觸控方式的應用。一般在販售電子零件的商店,可看到幾種不同的電容觸控模組,有單鍵、4鍵、8鍵及16鍵等,我買了一個 4鍵的模組TTP224來試看看他的應用。

TTP224 是一款 4鍵的電容式觸控模組,透過觸摸檢測 IC (TTP224) 來感測該位置是否有被觸摸。我們可以將 TTP224 模組安裝在非金屬材料如塑料、玻璃的表面,另外將薄薄的紙片(非金屬)覆蓋在模組的表面,只要觸摸的位置正確,即可做成隱藏在牆壁、桌面等地方的按鍵。當手指觸摸到相對位置時,模組會輸出高電位。

我試著用3個按鍵控制3個LED燈,觸碰開關時,LED燈亮,手一放開就會熄滅。按鍵4是開關的功能,按一下全開,再按一下全關。我們就來試試如何透過電容式的觸控作為 LED 燈的開關。


[TTP224電容觸控]

  • 板載TTP224電容式4鍵觸摸感應IC
  • 板載4路電平狀態指示燈
  • 工作電壓:2.4V-5.5V
  • 模組可以設置輸出模式、鍵輸出模式、最長輸出時間和快速/低功耗選擇
  • PCB板子尺寸:35(mm)x29(mm)

[材料]

• Arduino Uno x 1
• TP224 電容觸控模組  x 1
• LED 紅, 綠 各 1 個
• 220K 電阻 x 3
• 連接線 x n條


[接線與電路圖]

ArduinoTTP224 capacitive touch panel
5V (VCC)VCC
GNDGND
Pin 2OUT 1
Pin 3OUT 2
Pin 4OUT 3
Pin 5OUT 4


[程式]

boolean b4=false; // LED 狀態

void setup() {
    Serial.begin(9600);
    
    // LED
    pinMode(9, OUTPUT);    // LED 1
    pinMode(10, OUTPUT);   // LED 2
    pinMode(11, OUTPUT);   // LED 3

    // 按鍵
    pinMode(2, INPUT);    // 按鍵 1   
    pinMode(3, INPUT);    // 按鍵 2  
    pinMode(4, INPUT);    // 按鍵 3   
    pinMode(5, INPUT);    // 按鍵 4               
}

void loop() {

    // 按鍵 1
    if(digitalRead(2)){
      Serial.println("Button 1 Touched "); 
      digitalWrite(9, HIGH); // LED 亮   
      delay(200);
    }
    else{
      digitalWrite(9, LOW);  // LED 熄滅
    }

    // 按鍵 2 
    if(digitalRead(3)){
      Serial.println("Button 2 Touched "); 
      digitalWrite(10, HIGH); // LED 亮
      delay(200); 
    }
    else{
      digitalWrite(10, LOW);  // LED 熄滅
    }   

    // 按鍵 3 
    if(digitalRead(4)){
      Serial.println("Button 3 Touched "); 
      digitalWrite(11, HIGH); // LED 亮       
      delay(200); 
    }
    else{
      digitalWrite(11, LOW);  // LED 熄滅
    }     

   // 按鍵4
    if(digitalRead(5)){
      Serial.println("Button 4 Touched ");
      b4=!b4;      // 改變開關狀態
      delay(300);
    }

    if (b4) {  // LED 全亮
       digitalWrite(9, HIGH);  
       digitalWrite(10, HIGH);   
       digitalWrite(11, HIGH);  
    }
    else{    // LED 熄滅 
       digitalWrite(9, LOW);
       digitalWrite(10, LOW);
       digitalWrite(11, LOW);
    }
}

[實作結果]


Post a Comment

較新的 較舊