Вчера вечером дописав несколько строк с manu_245 все заработало с сенсором )
PHP код:
/* 4-Way Button:  Click, Double-Click, Press+Hold, and Press+Long-Hold Test Sketch

By Jeff Saltzman
Oct. 13, 2009

To keep a physical interface as simple as possible, this sketch demonstrates generating four output events from a single push-button.
1) Click:  rapid press and release
2) Double-Click:  two clicks in quick succession
3) Press and Hold:  holding the button down
4) Long Press and Hold:  holding the button for a long time 
*/

#include <CapacitiveSensor.h>

CapacitiveSensor   Sensor1 CapacitiveSensor(4,2);
#define buttonPin 19        // analog input pin to use as a digital input
#define ledPin1 18          // digital output pin for LED 1
#define ledPin2 17          // digital output pin for LED 2
#define ledPin3 16          // digital output pin for LED 3
#define ledPin4 15          // digital output pin for LED 4


// LED variables
boolean ledVal1 false;    // state of LED 1
boolean ledVal2 false;    // state of LED 2
boolean ledVal3 false;    // state of LED 3
boolean ledVal4 false;    // state of LED 4

// Button timing variables
int debounce 20;          // ms debounce period to prevent flickering when pressing or releasing the button
int DCgap 250;            // 
int holdTime 1000;        // ms hold period: how long to wait for press+hold event
int longHoldTime 3000;    // ms long hold period: how long to wait for press+hold event



boolean flag=false;
int checkButton();   

 
    
// Button variables
boolean buttonVal HIGH;   // value read from button
boolean buttonLast HIGH;  // buffered value of the button's previous state
boolean DCwaiting false;  // whether we're waiting for a double click (down)
boolean DConUp false;     // whether to register a double click on next release, or whether to wait and click
boolean singleOK true;    // whether it's OK to do a single click
long downTime = -1;         // time the button was pressed down
long upTime = -1;           // time the button was released
boolean ignoreUp false;   // whether to ignore the button release because the click+hold was triggered
boolean waitForUp false;        // when held, whether to wait for the up event
boolean holdEventPast false;    // whether or not the hold event happened already
boolean longHoldEventPast false;// whether or not the long hold event happened already


//=================================================

void setup() {
  
  
Serial.begin(115200);
  
    
// Set button input pin
    
pinMode(buttonPinINPUT);
    
digitalWrite(buttonPinHIGH );
    
// Set LED output pins
    
pinMode(ledPin1OUTPUT);
    
digitalWrite(ledPin1ledVal1);
    
pinMode(ledPin2OUTPUT);
    
digitalWrite(ledPin2ledVal2);
    
pinMode(ledPin3OUTPUT);    
    
digitalWrite(ledPin3ledVal3);
    
pinMode(ledPin4OUTPUT);    
    
digitalWrite(ledPin4ledVal4);
    


}


void loop()                      
{  
    
 
   
   
   
int b checkButton();
    
    if (
== 1clickEvent();
    if (
== 2doubleClickEvent();
    if (
== 3holdEvent();
    if (
== 4longHoldEvent();
  }
    
// Get button event and act accordingly
    
  
int checkButton()
    {  
    
int event 0;
    
    
long temp1 =  Sensor1.capacitiveSensor(30);
    
Serial.println(temp1);
    if(
temp1>1000)
    
{
  
buttonVal=0;
}
else 
buttonVal=1;

   
    
    
// Button pressed down
    
if (buttonVal == LOW && buttonLast == HIGH && (millis() - upTime) > debounce )
    {
        
downTime millis();
        
ignoreUp false;
        
waitForUp false;
        
singleOK true;
        
holdEventPast false;
        
longHoldEventPast false;
        if ((
millis()-upTime) < DCgap && DConUp == false && DCwaiting == true )  DConUp true;
        else  
DConUp false;
        
DCwaiting false;
    }
    
// Button released
    
else if (buttonVal == HIGH && buttonLast == LOW && (millis() - downTime ) > debounce)
    {        
        if (
not ignoreUp)
        {
            
upTime millis();
            if (
DConUp == falseDCwaiting true;
            else
            {
                
event 2;
                
DConUp false;
                
DCwaiting false;
                
singleOK false;
            }
        }
    }
    
// Test for normal click event: DCgap expired
    
if ( buttonVal == HIGH && (millis()-upTime) >= DCgap && DCwaiting == true && DConUp == false && singleOK == true && event != )
    {
        
event 1;
        
DCwaiting false;
    }
    
// Test for hold
    
if (buttonVal == LOW && (millis() - downTime) >= holdTime ) {
        
// Trigger "normal" hold
        
if (not holdEventPast)
        {
            
event 3;
            
waitForUp true;
            
ignoreUp true;
            
DConUp false;
            
DCwaiting false;
            
//downTime = millis();
            
holdEventPast true;
        }
        
// Trigger "long" hold
        
if ((millis() - downTime) >= longHoldTime)
        {
            if (
not longHoldEventPast)
            {
                
event 4;
                
longHoldEventPast true;
            }
        }
    }
    
buttonLast buttonVal;
    return 
event;

  }





//=================================================
// Events to trigger

 
void clickEvent()

 {
    
ledVal1 = !ledVal1;
    
digitalWrite(ledPin1ledVal1);
}
void doubleClickEvent() {
    
ledVal2 = !ledVal2;
    
digitalWrite(ledPin2ledVal2);
}
void holdEvent() {
    
ledVal3 = !ledVal3;
    
digitalWrite(ledPin3ledVal3);
}
void longHoldEvent() {
    
ledVal4 = !ledVal4;
    
digitalWrite(ledPin4ledVal4);
    
    
     
Serial.println (buttonVal);