Code: Alles auswählen
/*
##################################
Taster als Schalter benutzen
mit Piepton zur Bestätigung.
vom 06.12.2025
##################################
*/
//==============================================================================
//============================ Deklarationen ===================================
//==============================================================================
// Baudrate fuer Serial Schnittstelle
const int baudSerial = 9600;
//-----------------------Taster01-----------------------------------------------
// const byte ist im Programm Constant und byte ist fuer Werte 0-255
const byte Taster01 = 15; // Pin 15 wird Constant als Taster01 bezeichnet
byte Tasterstatus01 = 0; // Zum Abfragen des Tatsenpins
byte Tastenmerker01 = 0; // Zum Merken des aktuellen Tatsenstatus
unsigned long Sekundenablauf01 = 0; // Tastenabfrage von Taster01 300ms aussetzen
const unsigned long Pausezeit01 = 300;
//-----------------------Taster02-----------------------------------------------
const byte Taster02 = 16; // Pin16 wird Constant als Taster02 bezeichnet
byte Tasterstatus02 = 0;
byte Tastenmerker02 = 0;
unsigned long Sekundenablauf02 = 0; // Tastenabfrage von Taster02 300ms aussetzen
const unsigned long Pausezeit02 = 300;
//-----------------------------------------------------------------------------
unsigned long milliablauf = 0;
//-----------------------AusgangPIN 25-----------------------------------------
const byte Ausgang01 = 25; // Pin 25 ist für das Relais01
byte Ausgangsstatus01 = 1;
//-----------------------AusgangPIN 26-----------------------------------------
const byte Ausgang02 = 26; // Pin 26 ist für das Relais02
byte Ausgangsstatus02 = 1;
//----------------------Tasten Ton einrichten----------------------------------
const byte Tonpin = 7;
int Tonfrequenz = 800;
int Zeit = 50;
//=============================================================================
//===================================== SETUP =============================
//=============================================================================
void setup() {
// Serial Schnittstelle starten
Serial.begin(baudSerial);
//-----------Taster einrichten-----------------------------------------------
// Pin 15 fuer Taster01 wird intern auf plus gelegt. Mit GND ueber Taste aktivieren
pinMode(Taster01, INPUT_PULLUP);
// Pin 16 fuer Taster02 wird intern auf plus gelegt. Mit GND ueber Taste aktivieren
pinMode(Taster02, INPUT_PULLUP);
//-----------Relaisausgänge einrichten---------------------------------------
Ausgangsstatus01 = 1; // Status auf HIGH
digitalWrite (Ausgang01, Ausgangsstatus01); // Dass Relaisausgang beim Start "aus" ist
pinMode(Ausgang01, OUTPUT); // Pin 25 (Ausgang01) ist als Ausgang aktiviert
Ausgangsstatus02 = 1; // Status auf HIGH
digitalWrite (Ausgang02, Ausgangsstatus02); // Dass Relaisausgang beim Start "aus" ist
pinMode(Ausgang02, OUTPUT); // Pin 26 (Ausgang02) ist als Ausgang aktiviert
}
//============================================================================
//================================ LOOP ===============================
//============================================================================
void loop() {
milliablauf = millis();
//-----------Taster01 abfragen----------------------------------------------
if (milliablauf - Sekundenablauf01 >= Pausezeit01) { // 200msec abgelaufen?
Tasterstatus01 = digitalRead(Taster01); // Pin von Taster01 abfragen
if (Tasterstatus01 == LOW) { // Ist Taster01 gedrueckt?
Tastenmerker01 = !Tastenmerker01; // Merken dass Taster01 gedrueckt wurde
Serial.print(F("Taste 1 "));
Serial.println(Tastenmerker01);
tone(Tonpin, Tonfrequenz, Zeit); // Kurzer Bestätigungspiep bei tastendruck
Sekundenablauf01 = milliablauf; // Die 300ms neu starten
}
}
//-----------Taster02 abfragen----------------------------------------------
if (milliablauf - Sekundenablauf02 >= Pausezeit02) { // 200msec abgelaufen?
Tasterstatus02 = digitalRead(Taster02); // Pin von Taster02 abfragen
if (Tasterstatus02 == LOW) { // Ist Taster02 gedrueckt?
Tastenmerker02 = !Tastenmerker02; // Merken dass Taster02 gedrueckt wurde
Serial.print(F("Taste 2 "));
Serial.println(Tastenmerker02);
tone(Tonpin, Tonfrequenz, Zeit); // Kurzer Bestätigungspiep bei tastendruck
Sekundenablauf02 = milliablauf; // Die 300ms neu starten
}
}
//----------- Ausgänge nach Schalterstellung schalten ----------------------
Ausgangsstatus01 = !Tastenmerker01; //Signal umkehren, da die Relais LowAktiv sind
digitalWrite (Ausgang01, Ausgangsstatus01); //Signal ausgeben zum Relais
Ausgangsstatus02 = !Tastenmerker02;
digitalWrite (Ausgang02, Ausgangsstatus02);
}
//=======================Loop Ende============================================
