Hallo Leute,
ich habe hier etwas probiert wo ich grad etwas hänge....
Ich baue einen Touch-Taster mit der CapSense-Bibliothek, der von unten in eine solide Acryl-Platte eingelassen wird - so weit so gut (das funktioniert recht gut).
Den "Taster" möchte ich aber entprellen - und er soll im Betrieb sauber zwischen "Aus" (rote LED) und "An" (grüne LED) schalten und nicht bei jedem Fingerwackler hin-und-her-zappen. (im Grunde also schon entprellen).
Mein Problem ist bei ////Hier ist das Problem!///// - wie übergebe ich den Event richtig, der durch den Schwellwert 49 ausgelöst wird? Der Wert 1 den ich an TasterState übergebe ist falsch, weil ich da meine Modulo- Logik negiere. Aber wie übergebe ich das denn sonst richtig? Ich komm da grad nicht weiter. Kann mir jemand bitte einen Tipp geben, wie ich das lösen kann?
Nette Grüße
Thomas
#include <CapSense.h>
/* CapitiveSense Library Demo Sketch
* Original: Paul Badger 2008
*/
int ledPin;
int touchWert = 0;
int tasterState = 0;
int old_tasterState = 0;
int zaehler = 0;
CapSense cs = CapSense(8,4); // 1.8 M R zw. pins 4 u. 8, pin 4 ist sensor pin
void setup()
{
ledPin = 13;
// redPin =
// greenPin =
cs.set_CS_AutocaL_Millis(10000); // Autocal alle 10sec
Serial.begin(9600);
}
void loop()
{
long start = millis();
long touch = cs.capSense(40);
if (touch >=49) { /////Hier ist das Problem! /////////
touchWert = 1;
tasterState = touchWert; //Abfrage Taster
if(old_tasterState != tasterState){//ist vorheriger Wert ungleich aktuellem?
if(tasterState == HIGH){
zaehler++; //Zähler inkrementieren
}
}
old_tasterState = tasterState; //speichern des aktuellem Satus
if(zaehler%2 == 0) //ist Zähler eine gerade Zahl?
digitalWrite(ledPin,HIGH);
else
digitalWrite(ledPin,LOW);
}
Serial.print(millis() - start); // gibt millis der Messung aus
Serial.print("\t");
Serial.println(touch); // gibt Sensorwert aus
delay(800); // reduziert den Traffic auf dem Seriellen port
}