/************************************************************************************************* PROGRAMMINFO ************************************************************************************************** Funktion: ESP32 Touch Pin fuer interne LED (2) als Schalter ************************************************************************************************** Version: 06.10.2022 ************************************************************************************************** Board: ESP32 UNO ************************************************************************************************** Libraries: https://github.com/espressif/arduino-esp32/tree/master/libraries C:\Users\User\Documents\Arduino D:\gittemp\Arduino II\A156_Wetterdaten_V3 ************************************************************************************************** C++ Arduino IDE V1.8.19 ************************************************************************************************** Einstellungen: https://dl.espressif.com/dl/package_esp32_index.json http://dan.drown.org/stm32duino/package_STM32duino_index.json http://arduino.esp8266.com/stable/package_esp8266com_index.json ************************************************************************************************* Hinweis: Beruehhrungssensor 1 ist GPIO 0. Es ist jedoch nicht als Pin auf dem ESP32-Entwicklungsboard Version mit 30 GPIOs verfuegbar. GPIO 0 ist auf der Version mit 36 Pins verfuegbar. Bei dem V1 Board gibt es ein Problem mit der Touch-Pin-Zuweisung in Arduino IDE. GPIO 33 wird in der Zuordnung mit GPIO 32 ausgetauscht. Dies bedeutet, dass wenn, GPIO 32 verwendet wird, T8 im Code verwendet werden muss. Wenn GPIO33 verwendet wird, muss mann T9 verwenden. */ // LED und Touch-Pin const int touchPin = 4; const int ledPin = 2; bool geschaltet = false; // geschaltet dient zur Speicherung des Schaltzustandes int empfindlichkeit = 500; // empfindlichkeit speichert wie oft der Taster abgefragt wird // Wird der Touch-Pin dauerhaft betaetigt, schalet die LED ein/aus // Ggf. den Schwellenwert aendern const int threshold = 20; // Variable zum Speichern des Touch-Pin-Werts int touchValue; void setup(){ Serial.begin(115200); delay(1000); // Seriellen Monitor aufrufen // Initialisiere den LED-Pin als Ausgang: pinMode (ledPin, OUTPUT); } void loop(){ // Lese den Status des Touch-Tastenwertes: touchValue = touchRead(touchPin); Serial.print(touchValue); // Überprüfe, ob der touchValue unter dem Schwellenwert liegt // Wenn dies der Fall ist, setze den ledPin auf HIGH if(touchValue < threshold){ // LED einschalten if (digitalRead(touchPin) == LOW) // Abfrage ob der Taster gedrueckt ist { if (geschaltet == false) { // Abfrage ob der logische Schalter aus ist geschaltet = true; // sollte er aus sein, setzen wir geschaltet auf true } else { geschaltet = false; // sollte er an sein, setzen wir geschaltet auf false } } if (geschaltet == true) { // sollte der Schalter an sein, schalten wir die LED ein digitalWrite(ledPin, HIGH); } if (geschaltet == false) { // sollte der Schalter aus sein, schalten wir die LED aus digitalWrite(ledPin, LOW); } delay(empfindlichkeit); } }