$ pio init -b digispark-tiny
Last active
October 26, 2019 05:50
-
-
Save likeablob/bd12bfd7ab88421076bbf17480741a2d to your computer and use it in GitHub Desktop.
Implement Capacitive Touch Sensor (C-T Method) with Digispark
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Arduino.h> | |
#define PIN_CP_HS 0 | |
#define PIN_CP_LS 1 | |
void blink(uint16_t ms) { | |
analogWrite(4, 10); | |
delay(ms); | |
analogWrite(4, 0); | |
delay(ms); | |
} | |
void setup() { | |
pinMode(PIN_CP_HS, OUTPUT); | |
pinMode(PIN_CP_LS, OUTPUT); | |
pinMode(4, OUTPUT); | |
blink(200); | |
} | |
void loop() { | |
// reset | |
pinMode(PIN_CP_LS, OUTPUT); | |
pinMode(PIN_CP_HS, OUTPUT); | |
digitalWrite(PIN_CP_LS, LOW); | |
digitalWrite(PIN_CP_HS, LOW); | |
delay(1); | |
uint16_t counter = 0; | |
while(true) { | |
// charge | |
pinMode(PIN_CP_LS, INPUT); | |
digitalWrite(PIN_CP_LS, LOW); | |
digitalWrite(PIN_CP_HS, HIGH); | |
pinMode(PIN_CP_HS, OUTPUT); | |
// transfer | |
pinMode(PIN_CP_HS, INPUT); | |
digitalWrite(PIN_CP_HS, LOW); | |
pinMode(PIN_CP_LS, OUTPUT); | |
digitalWrite(PIN_CP_LS, LOW); | |
counter++; | |
if(digitalRead(PIN_CP_HS)) { | |
if(counter < 30) { // Adjust as you need | |
blink(counter * 10); | |
} | |
break; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Arduino.h> | |
#define PIN_CP_HS 0 | |
#define PIN_CP_LS 2 | |
#define PIN_ALERT 4 | |
#define PIN_LED 1 | |
void setup() { | |
pinMode(PIN_CP_HS, OUTPUT); | |
pinMode(PIN_CP_LS, OUTPUT); | |
pinMode(PIN_ALERT, OUTPUT); | |
pinMode(PIN_LED, OUTPUT); | |
digitalWrite(PIN_LED, HIGH); | |
delay(200); | |
digitalWrite(PIN_LED, LOW); | |
} | |
int8_t detected = 0; | |
void loop() { | |
// reset | |
pinMode(PIN_CP_LS, OUTPUT); | |
pinMode(PIN_CP_HS, OUTPUT); | |
digitalWrite(PIN_CP_LS, LOW); | |
digitalWrite(PIN_CP_HS, LOW); | |
delayMicroseconds(10); | |
uint16_t counter = 0; | |
while(true) { | |
// charge | |
pinMode(PIN_CP_LS, INPUT); | |
digitalWrite(PIN_CP_LS, LOW); | |
digitalWrite(PIN_CP_HS, HIGH); | |
pinMode(PIN_CP_HS, OUTPUT); | |
// transfer | |
pinMode(PIN_CP_HS, INPUT); | |
digitalWrite(PIN_CP_HS, LOW); | |
pinMode(PIN_CP_LS, OUTPUT); | |
digitalWrite(PIN_CP_LS, LOW); | |
counter++; | |
if(digitalRead(PIN_CP_HS)) { | |
if(counter < 500) { | |
detected++; | |
} else { | |
detected--; | |
} | |
if(detected >= 5) { | |
detected = 0; | |
digitalWrite(PIN_ALERT, HIGH); | |
digitalWrite(PIN_LED, HIGH); | |
} else if(detected <= -5) { | |
detected = 0; | |
digitalWrite(PIN_ALERT, LOW); | |
digitalWrite(PIN_LED, LOW); | |
} | |
break; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment