Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define send_pin 12
- #define float_pin 14
- #define NONE 0
- #define PRESS 1
- #define HOLD 2
- #define RELEASE 3
- uint8_t count = 0;
- uint8_t decount = 0;
- uint8_t stat = NONE;
- uint8_t last_stat = NONE;
- long timer = 0;
- #define DEBUG_CAPSENSE 1
- void setup(){
- Serial.begin(115200);
- pinMode(float_pin,INPUT);
- pinMode(send_pin,OUTPUT);
- analogWrite(send_pin, 512); //I don't know if this is the right value
- Serial.println("Start");
- }
- void loop(){
- Serial.print(CapSense(float_pin, send_pin, 3, 2500, 1));
- delay(50);
- }
- uint8_t CapSense(uint8_t receive_p, uint8_t send_p, uint8_t thresold, uint8_t holdtime, boolean holdrepeat) {
- boolean Read = digitalRead(receive_p);
- if(DEBUG_CAPSENSE){
- if(millis()%300==0) Serial.println("Capsense\tstat\tDRead\tcount\tdecount");
- Serial.print(stat);
- Serial.print("\t");
- Serial.print(digitalRead(float_pin));
- Serial.print("\t");
- //Serial.print(CapSense(float_pin, send_pin, 3, 2500, 1));
- //Serial.print("\t");
- Serial.print(count);
- Serial.print("\t");
- Serial.print(decount);
- Serial.print("\t");
- Serial.println(timer);
- }
- if(Read){// && stat == NONE){
- count++;
- decount = 0;
- }else count=0;
- if(!Read && (stat == PRESS || stat == HOLD)){
- decount++;
- }
- if(count >= thresold && stat == NONE){
- count = 0;
- decount = 0;
- stat = PRESS;
- timer = millis();
- return PRESS;
- }
- if(stat == PRESS && millis()-timer >= holdtime){
- stat = HOLD;
- return HOLD;
- }
- if(stat == RELEASE){
- stat = NONE;
- return NONE;
- }
- if(decount >= 15){
- decount = 0;
- stat = RELEASE;
- return RELEASE;
- }
- if(stat == HOLD && holdrepeat){
- return HOLD;
- }
- return NONE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement