Quantcast
Channel: MSP430 Technical Forums
Viewing all articles
Browse latest Browse all 2077

Setting Threshhold for touch buttons?

$
0
0

Hello,

 

I have made a led panel control using the M430G2452 chip. I use the standard software as in the Touch examples CapTouchButton software, only with 10 buttons connected, on pin P1_4 to P1_7 and P2_0 to P2_5. Some work perfect, and very stable, but some just give a touch event now and then, random, some very few, some very often. Changing the M430G2452 chip for another one changes the behaviour.

 

Is there a possibility to make this Button touch more stable, like increasing the Threshold. Somehow I cannot read and set this threshold in my software, it only seems to work with proximity bottuns. Any suggestuions are very very welcome. Software below (I know, I am a amateur, I am an electronic engineer, and the electronics side is very good :)

 

-------------------------------------------------------

 

#include <CapTouch.h>

#define ONOFFB P2_2
#define POWER1B P2_3
#define POWER2B P2_4
#define POWER3B P2_1
#define POWER4B P2_5
#define POWER5B P2_0
#define POWER6B P1_6
#define POWER7B P1_5
#define POWER8B P1_7
#define POWER9B P1_4

#define PWMOUT P1_2
#define LEDOUT P1_3

int Function = 0;
int Light = 0;

CapTouch ONOFF = CapTouch(ONOFFB, TOUCH_BUTTON);
CapTouch POWER1 = CapTouch(POWER1B, TOUCH_BUTTON);
CapTouch POWER2 = CapTouch(POWER2B, TOUCH_BUTTON);
CapTouch POWER3 = CapTouch(POWER3B, TOUCH_BUTTON);
CapTouch POWER4 = CapTouch(POWER4B, TOUCH_BUTTON);
CapTouch POWER5 = CapTouch(POWER5B, TOUCH_BUTTON);
CapTouch POWER6 = CapTouch(POWER6B, TOUCH_BUTTON);
CapTouch POWER7 = CapTouch(POWER7B, TOUCH_BUTTON);
CapTouch POWER8 = CapTouch(POWER8B, TOUCH_BUTTON);
CapTouch POWER9 = CapTouch(POWER9B, TOUCH_BUTTON);

void setup() {
  pinMode(PWMOUT, OUTPUT);
  pinMode(LEDOUT, OUTPUT);
}

void loop() {
 
    analogWrite(PWMOUT, 0);
    digitalWrite(LEDOUT, LOW);
    
    do {
      Function = 0;
      
      if (ONOFF.isTouched()){delay(20); if (ONOFF.isTouched()){Function = 1;}}
      if (POWER1.isTouched()){delay(20); if (POWER1.isTouched()){Function = 3;}}
      if (POWER2.isTouched()){delay(20); if (POWER2.isTouched()){Function = 4;}}
      if (POWER3.isTouched()){delay(20); if (POWER3.isTouched()){Function = 5;}}
      if (POWER4.isTouched()){delay(20); if (POWER4.isTouched()){Function = 6;}}
      if (POWER5.isTouched()){delay(20); if (POWER5.isTouched()){Function = 7;}}
      if (POWER6.isTouched()){delay(20); if (POWER6.isTouched()){Function = 8;}}
      if (POWER7.isTouched()){delay(20); if (POWER7.isTouched()){Function = 9;}}
      if (POWER8.isTouched()){delay(20); if (POWER8.isTouched()){Function = 10;}}
      if (POWER9.isTouched()){delay(20); if (POWER9.isTouched()){Function = 11;}}
      
      Light = analogRead(A0);
      if (Light < 400) {digitalWrite(LEDOUT, LOW);}
      if (Light > 600) {digitalWrite(LEDOUT, HIGH);}

      if (Function != 0) {
        digitalWrite(PWMOUT, HIGH);
        delay(1);
        digitalWrite(PWMOUT, LOW);
        delay(1);
        digitalWrite(PWMOUT, HIGH);
        delay(1);
        digitalWrite(PWMOUT, LOW);
        delay(1);
        digitalWrite(PWMOUT, HIGH);
        delay(Function);
        digitalWrite(PWMOUT, LOW);
        }
      else {delay(10);}                                  // Niet te snel toetsen uitlezen, ongeveer zelfde tijd also klok pulsen
      
      }
    while (Function < 1000);                             // Altijd loopen
}
 


Viewing all articles
Browse latest Browse all 2077

Trending Articles