From d710d92afee959f8da3549003aee834889343485 Mon Sep 17 00:00:00 2001 From: Dominic Reich Date: Wed, 15 Jan 2025 20:25:04 +0100 Subject: [PATCH] Initial commit Should work just fine. Program was tested at the site, some code cleanup was done and some comments were added. --- LICENSE | 20 +++++++++++++ README.md | 8 ++++++ tuerkontrolle.ino | 73 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 tuerkontrolle.ino diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7fec299 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +Copyright 2025 Dominic Reich + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the “Software”), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..7af8411 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Türkontrolle + +This program will "convert" switches that press "buttons" for a +second or longer into a switch that only presses a button for +200ms long. + +This was required for an bluetooth switch that did not like +external switches pressing longer that neccessary. diff --git a/tuerkontrolle.ino b/tuerkontrolle.ino new file mode 100644 index 0000000..8f1b802 --- /dev/null +++ b/tuerkontrolle.ino @@ -0,0 +1,73 @@ +/******************************************************************************* + * Türkontrolle + * + * 2025-01-15 Reich D. + * + * Eingänge werden gegen GND gezogen + * PIN GND + * ├─ PIN 7 : AUF, PIN 3 wird auf 5V gesetzt (Relais 1 wird angezogen) + * └─ PIN 8 : ZU, PIN 4 wird auf 5V gesetzt (Relais 2 wird angezogen) + * + * Die Relaisplatine wird konstant mit 12V versorgt (und auch der Arduino). + * Die Eingänge IN1 und IN2 werden vom Arduino jeweils nach Abfrage der + * Eingänge auf 5V gesetzt. Das jeweilige Relais schaltet den Bluetooth- + * schalter für 200ms. Danach wird 5 Sekunden gewartet, damit der Bluetooth- + * schalter nicht unnötig "gedrückt" wird. + * + */ + +// Eingänge +const int BUTTON_AUF_PIN = 7; +const int BUTTON_ZU_PIN = 8; +// Ausgänge +const int RELAY_AUF_PIN = 3; +const int RELAY_ZU_PIN = 4; + +// Standardwerte +const int BEGIN_DELAY = 100; +const int BUTTON_DELAY = 200; +const int DELAY = 4900; +const int BAUD = 9600; + +// Wir geben das Kompilierdatum auf der seriellen Schnittstelle beim Programmstart +// aus. Damit kann man später besser einschätzen, welche Programmversion auf dem +// Mikroprozessor läuft. +const char compile_date[] = __DATE__ " " __TIME__; + +void setup() { + Serial.begin(BAUD); + delay(1000); + Serial.print("Compiled on "); + Serial.println(compile_date); + pinMode(BUTTON_AUF_PIN, INPUT_PULLUP); + pinMode(BUTTON_ZU_PIN, INPUT_PULLUP); + pinMode(RELAY_AUF_PIN, OUTPUT); + pinMode(RELAY_ZU_PIN, OUTPUT); +} + +void loop() { + // 100ms warten damit wir keine falsche Eingabe an den + // Eingängen erhalten + delay(BEGIN_DELAY); + + // Abfrage, ob ein "Knopf" gedrückt ist (am Türcodeschloss) + int buttonAufState = digitalRead(BUTTON_AUF_PIN); + int buttonZuState = digitalRead(BUTTON_ZU_PIN); + + if(buttonZuState == LOW) { + Serial.println("SCHLIESSEN AKTIVIERT"); + digitalWrite(RELAY_ZU_PIN, HIGH); + delay(BUTTON_DELAY); + digitalWrite(RELAY_ZU_PIN, LOW); + Serial.println("SCHLIESSEN BEENDET - warte 5 Sekunden"); + delay(DELAY); + } else + if(buttonAufState == LOW) { + Serial.println("OEFFNEN AKTIVIERT"); + digitalWrite(RELAY_AUF_PIN, HIGH); + delay(BUTTON_DELAY); + digitalWrite(RELAY_AUF_PIN, LOW); + Serial.println("OEFFNEN BEENDET - warte 5 Sekunden"); + delay(DELAY); + } +}