Add proejct 4, for ADC and capacitive touch sensors
This commit is contained in:
46
04-adc/04-adc.ino
Normal file
46
04-adc/04-adc.ino
Normal file
@@ -0,0 +1,46 @@
|
||||
#define PIN_ANALOG_IN 1
|
||||
#define ADC_PRECISION 12
|
||||
#define ADC_MAX (double)(1 << ADC_PRECISION)
|
||||
#define ADC_VOLTAGE 3.3
|
||||
#define PIN_LED_TOUCH 21
|
||||
#define TOUCH_PRESS_MIN 132000
|
||||
#define TOUCH_PRESS_RELEASE 65535
|
||||
#define PIN_LED_FADE 19
|
||||
int touchProcessed = 0;
|
||||
int ledState = 0;
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(115200);
|
||||
pinMode(PIN_LED_TOUCH, OUTPUT);
|
||||
ledcAttach(PIN_LED_FADE, 1000, 12);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
int adcvalue = analogRead(PIN_ANALOG_IN);
|
||||
double voltage = adcvalue / ADC_MAX * ADC_VOLTAGE;
|
||||
Serial.printf("ADC value : %d\tVoltage: %.2fV\r\n", adcvalue, voltage);
|
||||
Serial.printf("Touch value: %d \r\n", touchRead(T14));
|
||||
|
||||
if ( touchRead(T14) > TOUCH_PRESS_MIN ) {
|
||||
if ( touchProcessed == 0 ) {
|
||||
touchProcessed = 1;
|
||||
if ( ledState == 0 ) {
|
||||
digitalWrite(PIN_LED_TOUCH, HIGH);
|
||||
ledState = 1;
|
||||
} else {
|
||||
digitalWrite(PIN_LED_TOUCH, LOW);
|
||||
ledState = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( touchRead(T14) < TOUCH_PRESS_RELEASE ) {
|
||||
if ( touchProcessed == 1 ) {
|
||||
touchProcessed = 0;
|
||||
}
|
||||
}
|
||||
ledcWrite(PIN_LED_FADE, analogRead(PIN_ANALOG_IN));
|
||||
delay(200);
|
||||
}
|
||||
Reference in New Issue
Block a user