# Ich brauche einen einfachen Code für einen an/aus schalter

**URL:** <https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086>\
**Category:** Deutsch\
**Created:** [December 5, 2025, 8:20am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086 "2025-12-05T08:20:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![suessenwtmaus](https://avatars.discourse-cdn.com/v4/letter/s/eb8c5e/32.png) [@suessenwtmaus](https://forum.arduino.cc/u/suessenwtmaus)\
**Post date:** [December 5, 2025, 8:20am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/1 "2025-12-05T08:20:46Z")

</div>

Hallo, ich bin relativ neu bei Arduino und brauche einen Code für einen an aus Schalter mithilfe eines Tasters :) Es wäre super wenn der Code so einfach wie möglich wäre, danke im Voraus ;)

---

<div class="post-metadata">

**Author:** ![UKHeliBob](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ukhelibob/32/215663_2.png) [@UKHeliBob](https://forum.arduino.cc/u/UKHeliBob)\
**Post date:** [December 5, 2025, 8:26am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/2 "2025-12-05T08:26:43Z")

</div>

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

---

<div class="post-metadata">

**Author:** ![HotSystems](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/hotsystems/32/219785_2.png) [@HotSystems](https://forum.arduino.cc/u/HotSystems)\
**Post date:** [December 5, 2025, 9:24am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/3 "2025-12-05T09:24:56Z")

</div>

Hallo,  
reichen dir die Tipps in der IDE nicht aus ?  
Da findest du sicher etwas einfaches.

---

<div class="post-metadata">

**Author:** ![wno158](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/wno158/32/1014607_2.png) [@wno158](https://forum.arduino.cc/u/wno158)\
**Post date:** [December 5, 2025, 9:51am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/4 "2025-12-05T09:51:01Z")

</div>

Es kann so einfach sein:

 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/b/5/7/b57747aa913ede8f301f2fab1c802993a2cb8ae0.png)

> **Noch einfacher**
>
> Es ginge noch einfacher (ohne den externen Pull-Up-Widerstand), wenn man nach GND schaltet und `INPUT_PULLUP` verwendet. Die Logik des Tasters kehrt sich dann um:
> 
> ```arduino
> 
> constexpr byte buttonPin {2};
> constexpr byte ledPin {13};
> 
> bool buttonState = 0;
> 
> void setup() {
> pinMode(ledPin, OUTPUT);
> pinMode(buttonPin, INPUT_PULLUP);
> }
> 
> void loop() {
> buttonState = digitalRead(buttonPin);
> 
> if (!buttonState) {
> digitalWrite(ledPin, HIGH);
> } else {
> digitalWrite(ledPin, LOW);
> }
> }
> 
> ```

---

<div class="post-metadata">

**Author:** ![fony](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/fony/32/936882_2.png) [@fony](https://forum.arduino.cc/u/fony)\
**Post date:** [December 5, 2025, 9:54am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/5 "2025-12-05T09:54:44Z")

</div>

Wirklich?

---

<div class="post-metadata">

**Author:** ![fony](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/fony/32/936882_2.png) [@fony](https://forum.arduino.cc/u/fony)\
**Post date:** [December 5, 2025, 9:57am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/6 "2025-12-05T09:57:12Z")

</div>

versuche hier mit

```arduino
/* switch

   Each time the input pin goes from LOW to HIGH (e.g. because of a push-button
   press), the output pin is toggled from LOW to HIGH or HIGH to LOW. There's
   a minimum delay between toggles to debounce the circuit (i.e. to ignore
   noise).

   David A. Mellis
   21 November 2006
*/

int inPin = 8; // the number of the input pin
int outPin = 13; // the number of the output pin

int state = HIGH; // the current state of the output pin
int reading; // the current reading from the input pin
int previous = LOW; // the previous reading from the input pin

// the follow variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
unsigned long time = 0; // the last time the output pin was toggled
unsigned long debounce = 200UL; // the debounce time, increase if the output flickers

void setup()
{
  pinMode(inPin, INPUT);
  pinMode(outPin, OUTPUT);
}

void loop()
{
  reading = digitalRead(inPin);

  // if the input just went from LOW and HIGH and we've waited long enough
  // to ignore any noise on the circuit, toggle the output pin and remember
  // the time
  if (reading == HIGH && previous == LOW && millis() - time > debounce)
  {
    if (state == HIGH)
      state = LOW;
    else
      state = HIGH;

    time = millis();
  }

  digitalWrite(outPin, state);

  previous = reading;
}

```

---

<div class="post-metadata">

**Author:** ![derGeppi](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/dergeppi/32/249283_2.png) [@derGeppi](https://forum.arduino.cc/u/derGeppi)\
**Post date:** [December 5, 2025, 10:12am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/7 "2025-12-05T10:12:49Z")

</div>

> [@wno158](#):
>
> Es kann so einfach sein

Aber ist das nicht "Taster als Taster" statt "Taster als Schalter"?

Dann käme nämlich noch zusätzlich eine Abfrage rein:

```arduino
constexpr byte buttonPin {2};
constexpr byte ledPin {13};

bool buttonState = 0;
bool lastbuttonState = 0;
bool ledState = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  buttonState = digitalRead(buttonPin); // aktuellen buttonPin-Status auslesen

  if ((buttonState == LOW) && (lastbuttonState == HIGH)) { // Tastendruck detektiert (vorher nicht gedrückt, jetzt gedrückt)
    ledState = !ledState; // led-Status umschalten: AN <=> AUS
    digitalWrite(ledPin, ledState);
  }
  lastbuttonState = buttonState; // buttonPin-Status für nächsten Durchlauf aktualisieren
}

```

..danach sollte man bestimmt noch den Taster entprellen, aber soll ja erstmal so einfach wie möglich sein 😇

EDIT: Ah.. hat @fony bereits schon alles umgesetzt 😉

---

<div class="post-metadata">

**Author:** ![fony](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/fony/32/936882_2.png) [@fony](https://forum.arduino.cc/u/fony)\
**Post date:** [December 5, 2025, 10:19am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/8 "2025-12-05T10:19:43Z")

</div>

> [@derGeppi](#):
>
> danach sollte man bestimmt noch den Taster entprellen

Deshalb habe meins gelöscht.

---

<div class="post-metadata">

**Author:** ![Franz54](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/franz54/32/238811_2.png) [@Franz54](https://forum.arduino.cc/u/Franz54)\
**Post date:** [December 5, 2025, 10:52am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/10 "2025-12-05T10:52:29Z")

</div>

Ich mache es gerne so. Da hat man entweder mit jedem Tastendruck ein oder aus, oder wenn man auf der Taste bleibt, hat man einen Wechel ein/aus alle 300ms. Ja, kann man kürzer fassen, aber den Code versteht man auch als Anfänger gut. Der ist für zwei Taster.

Im Serial Monitor sieht du was es macht.

```arduino
// 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 Taster02 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;
//===============================================================================================
//===================================== 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);
  //--------------------------------------------------------------------
}
//===============================================================================================
//================================ 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("Taste 1 ");
      Serial.println(Tastenmerker01);
      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("Taste 2 ");
      Serial.println(Tastenmerker02);
      Sekundenablauf02 = milliablauf; // Die 300ms neu starten
    }
  }
}
//=======================Loop Ende=============================================================

```

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [December 5, 2025, 10:55am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/11 "2025-12-05T10:55:06Z")

</div>

> [@suessenwtmaus](#):
>
> Es wäre super wenn der Code so einfach wie möglich wäre

```arduino
// Forensketch
// https://forum.arduino.cc/

const uint8_t pin {2};
const uint32_t debounceTime = 50;
uint32_t pressTime;
bool pressState = HIGH;
bool switchState = LOW;

void setup()
{
  Serial.begin(115200);
  Serial.println(F("\r\nStart...\r\n"));
  pinMode(pin, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()

{
  checkBtn();
  digitalWrite(LED_BUILTIN, switchState);
}

void checkBtn()
{
  if (digitalRead(pin) == LOW) // Taste gedrückt?
  {
    if (pressState == HIGH) // war vorher nicht gedrückt
    {
      pressTime = millis(); // Merken wann Taste ausgelöst wurde
      pressState = LOW; // Merken dass Taste gedrückt
      switchState = !switchState; // Neuen Status setzen
    }
  }
  else if (pressState == LOW) // Taste nicht gedrückt und vorher gedrückt
  {
    if (millis() - pressTime > debounceTime) // debounce abgelaufen
    {
      pressState = HIGH; // Merker löschen
    }
  }
}

```

etwas nicht ganz so einfach, aber skalierbarer:

```arduino
// Forensketch
// https://forum.arduino.cc/

#include <Streaming.h> // https://github.com/janelia-arduino/Streaming

constexpr uint8_t buttonPin {2};
constexpr bool AUS {LOW};
constexpr bool isPressed {LOW};

struct BTN
{
  const uint8_t pin;
  const uint32_t debounceTime;
  uint32_t pressTime;
  bool pressState;
  bool state;
};

BTN btn {buttonPin, 50, 0, AUS, !isPressed};

void setup()
{
  Serial.begin(115200);
  Serial << (F("\r\nStart...\r\n")) << endl;
  pinMode(btn.pin, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()

{
  checkBtn();
  digitalWrite(LED_BUILTIN, btn.state);
}

void checkBtn()
{
  if (digitalRead(btn.pin) == isPressed) // Taste gedrückt?
  {
    if (btn.pressState == !isPressed) // war vorher nicht gedrückt
    {
      btn.pressTime = millis(); // Merken wann Taste ausgelöst wurde
      btn.pressState = isPressed; // Merken dass Taste gedrückt
      btn.state = !btn.state; // Neuen Status setzen
    }
  }
  else if (btn.pressState == isPressed) // Taste nicht gedrückt und vorher gedrückt
  {
    if (millis() - btn.pressTime > btn.debounceTime) // debounce abgelaufen
    {
      btn.pressState = !isPressed; // Merker löschen
    }
  }
}

```

Da Du nicht schreibst für welchen Controller, gibt es eine Kontrolle über die ONBoard-LED, soweit der Controller eine hat...

---

<div class="post-metadata">

**Author:** ![wno158](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/wno158/32/1014607_2.png) [@wno158](https://forum.arduino.cc/u/wno158)\
**Post date:** [December 5, 2025, 11:04am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/12 "2025-12-05T11:04:47Z")

</div>

> [@derGeppi](#):
>
> Aber ist das nicht "Taster als Taster" statt "Taster als Schalter"?

Ja, das stimmt. Habe "Schalter" überlesen.

---

<div class="post-metadata">

**Author:** ![Franz54](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/franz54/32/238811_2.png) [@Franz54](https://forum.arduino.cc/u/Franz54)\
**Post date:** [December 5, 2025, 11:30am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/13 "2025-12-05T11:30:42Z")

</div>

Habe es jetzt mal noch um die Relaisausgänge zum Schalten erweitert.

```arduino
// 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 = 0;
//-----------------------AusgangPIN 26-------------------------------------
const byte Ausgang02 = 26; // Pin 26 ist für das Relais02
byte Ausgangsstatus02 = 0;
//=============================================================================
//===================================== 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);
      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);
      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============================================

```

---

<div class="post-metadata">

**Author:** ![noiasca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/noiasca/32/1126910_2.png) [@noiasca](https://forum.arduino.cc/u/noiasca)\
**Post date:** [December 5, 2025, 12:20pm UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/14 "2025-12-05T12:20:48Z")

</div>

> [@suessenwtmaus](#):
>
> Hallo, ich bin relativ neu bei Arduino und brauche einen Code für einen an aus Schalter mithilfe eines Tasters :) Es wäre super wenn der Code so einfach wie möglich wäre, danke im Voraus ;)

es wäre für uns wesentlich leichter wenn du beschreiben würdest, was du aktuell an Code hast und was du gern anders haben möchtest.

Z.B. gibts in der Arduino IDE ein fix und fertiges Beispiel -  
[Debounce on a Pushbutton | Arduino Documentation](https://docs.arduino.cc/built-in-examples/digital/Debounce/)

Hast du das ausprobiert? - wenn nicht nachholen!  
Was hast du festgestellt?  
Was soll anders sein?

---

<div class="post-metadata">

**Author:** ![Kai-R](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/kai-r/32/801182_2.png) [@Kai-R](https://forum.arduino.cc/u/Kai-R)\
**Post date:** [December 5, 2025, 6:44pm UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/15 "2025-12-05T18:44:44Z")

</div>

Ein einfaches Programm - Taster als Schalter:

```arduino
#include "Button_SL.hpp"

class Switch {
public:
  Switch(uint8_t pin) : pin {pin} {}
  void begin() { pinMode(pin, OUTPUT); }

  uint8_t toggle() {
    isOn = !digitalRead(pin);
    digitalWrite(pin, isOn);
    return isOn;
  }

private:
  const uint8_t pin;
  uint8_t isOn;
};

Btn::ButtonSL btn {4};
Switch mySwitch {5};

void printSwitchState(uint8_t value) {
  const char* strSwitchState[] {"Aus", "Ein"};
  Serial.print(F("Schalter "));
  Serial.println(strSwitchState[(value > 0)]); // Falls value >= 1 ist, den Wert auf = 1 setzen.
}

void setup() {
  Serial.begin(115200);
  btn.begin();
  mySwitch.begin();
  printSwitchState(false);
}

void loop() {
  if (btn.tick() != Btn::ButtonState::notPressed) { printSwitchState(mySwitch.toggle()); }
}

```

> **[schalter.ino - Wokwi ESP32, STM32, Arduino Simulator](https://wokwi.com/projects/449522312385445889)**
>
> Run IoT and embedded projects in your browser: ESP32, STM32, Arduino, Pi Pico, and more. No installation required!

---

<div class="post-metadata">

**Author:** ![fony](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/fony/32/936882_2.png) [@fony](https://forum.arduino.cc/u/fony)\
**Post date:** [December 5, 2025, 7:29pm UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/16 "2025-12-05T19:29:24Z")

</div>

Na ja, ob das so einfach für ein Anfänger ist, dazu muss man noch suchen die button\_sl.hpp.  
Und verstehen was das ganze soll.

---

<div class="post-metadata">

**Author:** ![Kai-R](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/kai-r/32/801182_2.png) [@Kai-R](https://forum.arduino.cc/u/Kai-R)\
**Post date:** [December 5, 2025, 7:38pm UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/17 "2025-12-05T19:38:18Z")

</div>

Die gibt es als Arduino Bibliothek. Also warum das ganze Debounce wieder neu programmieren? Wenn jemand die Moba Tools für nen Servo nimmt, wird das ja auch nicht als zu „kompliziert“ deklariert. Deren Button Routinen könnten natürlich auch verwendet werden oder eine von den X anderen Button Bibliotheken.

Und für einen einfachen Schalter muss man nicht mehr wissen als in dem Programm zu sehen ist.

---

<div class="post-metadata">

**Author:** ![noiasca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/noiasca/32/1126910_2.png) [@noiasca](https://forum.arduino.cc/u/noiasca)\
**Post date:** [December 5, 2025, 7:46pm UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/18 "2025-12-05T19:46:16Z")

</div>

also ich bin davon überzeugt, dass wenn die Anforderung "kurz" sein soll, man besser mit einer Library das ganze probiert.

- Eine LED, ein Button,
- im Setup je ein .begin() aufrufen,
- im loop die LED umschalten wenn der Button gedrückt wurde.

```arduino
/*
  debounce a button
  toggle a LED
  
  by noiasca
  2025-12-05
*/
#include <Noiasca_led.h> // download library from http://werner.rothschopf.net/microcontroller/202202_tools_led_en.htm
#include <utility/Noiasca_discrete.h> // use the discrete pins on the Arduino/Microcontroller
#include <Noiasca_button.h> // download library from http://werner.rothschopf.net/microcontroller/202202_tools_led_en.htm

OnOffPin led{13}; // create simple on/off pin object
Button button {A0}; // active LOW: button connects pin with GND

void setup() {
  led.begin(); // start the pin
  button.begin(); // start the button
}

void loop() {
  if (button.wasPressed()) { // fire if button was pressed
    led.toggle();
  }
}
//
```

in einer Zeile machts dann combie mit seinen Tools.

---

<div class="post-metadata">

**Author:** ![combie](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/combie/32/217369_2.png) [@combie](https://forum.arduino.cc/u/combie)\
**Post date:** [December 5, 2025, 9:49pm UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/19 "2025-12-05T21:49:32Z")

</div>

> [@noiasca](#):
>
> in einer Zeile machts dann combie mit seinen Tools.

Natürlich!  
Dafür wurden sie erfunden.  
Wie auch ein Hammer seinen Job macht, wenn er richtig angewendet wird.

---

<div class="post-metadata">

**Author:** ![Rintin](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/rintin/32/1013044_2.png) [@Rintin](https://forum.arduino.cc/u/Rintin)\
**Post date:** [December 6, 2025, 5:05am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/20 "2025-12-06T05:05:47Z")

</div>

Ob @suessenwtmaus nochmal wiederkommt?

---

<div class="post-metadata">

**Author:** ![Franz54](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/franz54/32/238811_2.png) [@Franz54](https://forum.arduino.cc/u/Franz54)\
**Post date:** [December 6, 2025, 10:35am UTC](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086/21 "2025-12-06T10:35:36Z")

</div>

Hier habe ich mal noch einen Tastenpiep dazu gehängt. Dass die Umschaltung mit Ton bestätigt wird.

```cpp
/*
##################################
Taster als Schalter benutzen
vom 06.12.2025
##################################
*/

// 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; //Auf 1 wenn eine LOW Aktive Relaisplatine gesteuert wird
//-----------------------AusgangPIN 26-----------------------------------------
const byte Ausgang02 = 26; // Pin 26 ist für das Relais02
byte Ausgangsstatus02 = 1; //Auf 1 wenn eine LOW Aktive Relaisplatine gesteuert wird
//----------------------Tasten Ton einrichten----------------------------------
const byte Tonpin = 7;
int Tonfrequenz = 800;
int Zeit = 100;
//=============================================================================
//===================================== 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============================================

```

[Next page](https://forum.arduino.cc/t/ich-brauche-einen-einfachen-code-fur-einen-an-aus-schalter/1418086.md?page=2)
