# Ein Taster bei jedem Click anderen Befehle ausführen lassen

**URL:** <https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269>\
**Category:** Deutsch\
**Created:** [April 25, 2023, 7:09am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269 "2023-04-25T07:09:27Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![mini\_taigaaa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mini_taigaaa/32/956394_2.png) [@mini\_taigaaa](https://forum.arduino.cc/u/mini_taigaaa)\
**Post date:** [April 25, 2023, 7:09am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/1 "2023-04-25T07:09:27Z")

</div>

Hallo 😃

Ich arbeite zurzeit an meiner Projektarbeit für die Schule. Ich möchte einen Taster dazu bringen das wenn ich ihn zum 1. mal anclicke das mein Licht angeht. Beim 2. Mal anclicken soll das Licht (also die Led) etwas dunkler werden. Beim 3. und 4. mal soll es noch dunkler werden also von 100% auf 75% auf 50% auf 25% helligkeit. Beim 5. mal anclicken soll es wieder ausgehen.

ist es den überhaupt möglich eine Led so zu "dimmen" ?  
Und geht es das ich den Schalter so programmiere das er bei jedem click was anderes macht?

Kenne mich um ehrlich zu sein nicht so richtig damit aus. Hab auch versucht in meinem Arduino Heft was zu finden aber da steht nichts von so einem Programm.

---

<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:** [April 25, 2023, 7:10am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/2 "2023-04-25T07:10:08Z")

</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:** ![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:** [April 25, 2023, 7:14am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/4 "2023-04-25T07:14:35Z")

</div>

schau dir mal diese Beispiele in der IDE an:

State Change Detection  
Debounce

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [April 25, 2023, 7:16am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/5 "2023-04-25T07:16:19Z")

</div>

Hallo [mini\_taigaaa](https://forum.arduino.cc/u/mini_taigaaa)

Herzlich Willkommen im weltbesten Arduinoforum.

Poste am Besten deinen aktuellen Sketch, damit wir sehen können wie wir helfen können.

Ich wünsche einen geschmeidigen Tag und viel Spass beim Programmieren in C++.

---

<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:** [April 25, 2023, 7:40am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/6 "2023-04-25T07:40:00Z")

</div>

> [@mini\_taigaaa](#):
>
> ist es den überhaupt möglich eine Led so zu "dimmen" ?  
> Und geht es das ich den Schalter so programmiere das er bei jedem click was anderes macht?

Ja  
und  
Ja.

Wie weit ist Deine Erfahrung mit Tastern und LED?  
Auf welchem Controller soll das nachher funktionieren?

---

<div class="post-metadata">

**Author:** ![mini\_taigaaa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mini_taigaaa/32/956394_2.png) [@mini\_taigaaa](https://forum.arduino.cc/u/mini_taigaaa)\
**Post date:** [April 25, 2023, 8:54am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/8 "2023-04-25T08:54:37Z")

</div>

nicht wirklich weit, wir haben in der Schule nicht viel mit Arduino gearbeitet leider ☹

und auf arduino uno warscheinlich

---

<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:** [April 25, 2023, 8:58am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/9 "2023-04-25T08:58:44Z")

</div>

Wenn ich dir zeigen würde, wie das bei mir aussieht, bringt dich das vermutlich keinen Millimeter weiter.

Tipp:  
Die Sprache, welche du verwendest, nennt sich C++.  
C++ in der Variante C++11

---

<div class="post-metadata">

**Author:** ![michael\_x](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/michael_x/32/628623_2.png) [@michael\_x](https://forum.arduino.cc/u/michael_x)\
**Post date:** [April 25, 2023, 9:27am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/10 "2023-04-25T09:27:29Z")

</div>

> [@mini\_taigaaa](#):
>
> Hab auch versucht in meinem Arduino Heft was zu finden aber da steht nichts von so einem Programm.

Das Problem ist, dass es mehr Möglichkeiten gibt, etwas zu machen als in ein Heft passt.  
Das gilt sogar für das Internet mit den Millionen Beispielen, die du dort finden kannst.

Und für jede mögliche Funktion gibt es zig Varianten, _wie_ man es machen kann.  
@combie s Art zeichnet sich dadurch aus, dass man gar nichts sieht. Das nennt sich Kapselung, ist elegant, hilft dir aber nicht weiter.

1. "dimmen" ist schon der richtige Ausdruck, da solltest du viel finden.  
Leider geht beim Uno [analogWrite](https://www.arduino.cc/reference/de/language/functions/analog-io/analogwrite/) nicht mit der eingebauten LED, da müsstest du dich entscheiden, ob du einen anderen Pin, Vorwiderstand und LED nimmst, oder die eingebaute LED anders zum vermeintlich schwächer leuchten bringen willst.

2. "Bei jedem Click eine andere Funktion"  
Mach mal, dass bei "jedem Click" eine Zeile im SerialMonitor ausgegeben wird. Das ist schon schwierig. ( @noiasca's Tip "state change detection") Wenn das geht, kannst du ja bei jeder Ausgabe eine Zahl um eins hochzählend ausgeben.  
Dann bist du schon ziemlich nah dran.

---

<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:** [April 25, 2023, 9:47am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/11 "2023-04-25T09:47:20Z")

</div>

> [@michael\_x](#):
>
> @combie s Art zeichnet sich dadurch aus, dass man gar nichts sieht. Das nennt sich Kapselung, ist elegant, hilft dir aber nicht weiter.

Danke für die Blumen!  
Kapselung ist nicht der einzige Aspekt.  
Modularisierung, Wiederverwendung und Flachheit spielen auch eine Rolle.  
z.B. hat meine Variante nur ein if an der Oberfläche und keine Schleifen.

> [@mini\_taigaaa](#):
>
> Und geht es das ich den Schalter so programmiere das er bei jedem click was anderes macht?

Schalter sind doof. Die kann man nicht programmieren.  
Tipp:  
Du willst keine 5 verschiedenen Funktionen/Befehle. sondern 5 verschiedene Werte ausgeben.  
Es bietet sich ein Array an.

---

<div class="post-metadata">

**Author:** ![evil17](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/evil17/32/982215_2.png) [@evil17](https://forum.arduino.cc/u/evil17)\
**Post date:** [April 25, 2023, 11:36am UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/12 "2023-04-25T11:36:19Z")

</div>

```plaintext
const int ledPin = 9; // Pin, an dem die LED angeschlossen ist
const int buttonPin = 2; // Pin, an dem der Taster angeschlossen ist
int brightness = 0; // Variable zur Speicherung der Helligkeit
int buttonState = 0; // Variable zur Speicherung des aktuellen Tasterzustands
int lastButtonState = 0; // Variable zur Speicherung des vorherigen Tasterzustands

void setup() {
  pinMode(ledPin, OUTPUT); // Der Pin, an dem die LED angeschlossen ist, wird als Ausgang konfiguriert
  pinMode(buttonPin, INPUT); // Der Pin, an dem der Taster angeschlossen ist, wird als Eingang konfiguriert
}

void loop() {
  buttonState = digitalRead(buttonPin); // Lese den aktuellen Tasterzustand

  // Wenn der Taster gedrückt wird
  if (buttonState != lastButtonState && buttonState == HIGH) {
    brightness += 25; // Erhöhe die Helligkeit um 25%
    if (brightness > 100) {
      brightness = 0; // Wenn die maximale Helligkeit erreicht ist, setze sie auf 0 zurück
    }
    analogWrite(ledPin, (brightness / 100.0) * 255); // Setze die Helligkeit der LED entsprechend der aktuellen Variable
  }

  lastButtonState = buttonState; // Speichere den aktuellen Tasterzustand für den nächsten Durchlauf
  delay(50); // Warte kurz, um Fehlauslösungen durch Prellungen zu vermeiden
}

```

erstellt mit Chatgpt, getestet mit wokwi.

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [April 25, 2023, 12:06pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/13 "2023-04-25T12:06:52Z")

</div>

> [@evil17](#):
>
> Ungetestet

Warum ?

---

<div class="post-metadata">

**Author:** ![evil17](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/evil17/32/982215_2.png) [@evil17](https://forum.arduino.cc/u/evil17)\
**Post date:** [April 25, 2023, 12:20pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/14 "2023-04-25T12:20:11Z")

</div>

> [@paulpaulson](#):
>
> Warum

Weil ich mir den code den Anforderungen entsprechend generiert lassen habe, ihn mir durchgelesen habe, für gut befunden habe, aber aufgrund von Zeit/Hardwaremangel ihn nicht auf einem Arduino ausprobiert habe.

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [April 25, 2023, 12:41pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/15 "2023-04-25T12:41:18Z")

</div>

Entsorge das Bespiel.

Es funktioniert. Nachdem das Parameter für pinMode() angepaßt wurde.

Veröffentliche nur selbsterstellte und getestete Sketche.

---

<div class="post-metadata">

**Author:** ![evil17](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/evil17/32/982215_2.png) [@evil17](https://forum.arduino.cc/u/evil17)\
**Post date:** [April 25, 2023, 12:51pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/16 "2023-04-25T12:51:10Z")

</div>

und was genau funktioniert nicht?

habe das ganze in wokwi nachgebaut und da funktioniert es einwandfrei

---

<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:** [April 25, 2023, 1:01pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/17 "2023-04-25T13:01:27Z")

</div>

> [@paulpaulson](#):
>
> Veröffentliche nur selbsterstellte und getestete Sketche.

Es ist unanständig, Fremdcode als eigenen auszugeben.  
Auch wg. dem Urheberrecht.  
Mit Quellenangabe ist das schon anständiger.

Ich poste auch ungetesteten Code.  
Bei mir steht das auch dran, wenn ungetestet.

---

<div class="post-metadata">

**Author:** ![evil17](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/evil17/32/982215_2.png) [@evil17](https://forum.arduino.cc/u/evil17)\
**Post date:** [April 25, 2023, 1:01pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/18 "2023-04-25T13:01:38Z")

</div>

> [@paulpaulson](#):
>
> Es funktioniert. Nachdem das Parameter für pinMode() angepaßt wurde.

was soll da angepasst werden, da ist alles korrekt! So wie ich es gepostet habe funktioniert es.

---

<div class="post-metadata">

**Author:** ![evil17](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/evil17/32/982215_2.png) [@evil17](https://forum.arduino.cc/u/evil17)\
**Post date:** [April 25, 2023, 1:04pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/19 "2023-04-25T13:04:37Z")

</div>

> [@combie](#):
>
> Es ist unanständig, Fremdcode als eigenen auszugeben.  
> Auch wg. dem Urheberrecht.  
> Mit Quellenangabe ist das schon anständiger.

ja sorry bin noch nicht so lange im Forum aktiv, aber man lernt jeden Tag gern dazu. Habe mein Beispiel entsprechend ergänzt.

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [April 25, 2023, 1:09pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/20 "2023-04-25T13:09:10Z")

</div>

Mit Trash erzeugt von CHATGBT macht du dir im Forum keine Freunde.

---

<div class="post-metadata">

**Author:** ![evil17](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/evil17/32/982215_2.png) [@evil17](https://forum.arduino.cc/u/evil17)\
**Post date:** [April 25, 2023, 1:17pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/21 "2023-04-25T13:17:13Z")

</div>

Ich bin hier nicht auf einer Partnerbörse und bin deswegen nicht auf das finden von Freunden hier im Forum angewiesen. Damit kann ich also leben. Und das sich hier im Forum die Elite gleich auf den Schlips getreten fühlt wenn es nicht nach ihrem Kopf geht, dass ist mir auch schon aufgefallen.  
Aber anstatt hier alles schlecht zu reden, trage doch einfach mal was sinnvolles zum Thema bei und stelle meinen von mir gepostetetn (müll) code in den Schatten!  
Weil mit Sicherheit, kann man aus der einfachen Aufgabenstellung auch eine Wissenschaftliche Arbeit machen und dieses dann mit Doktortitel abschließen, aber ganz ehrlich sollte es selbst der (müll) code von Chatgpt in diesem fall völlig tun und man kann sich mehrere Stunden Zeitintensives programmieren sparen.  
Und am Ende (so meine Meinung) kommt es nicht drauf an wo der code herkommt, sondern das es funktioniert!

Aber ja um es zu perfektionieren, könnte man die LED im Setupbereich noch auf LOW setzen

---

<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:** [April 25, 2023, 1:54pm UTC](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269/22 "2023-04-25T13:54:20Z")

</div>

> [@evil17](#):
>
> in den Schatten!

Kein Problem!

```arduino
#include <Streaming.h> // die Lib findest du selber ;-)
Print &cout = Serial; // cout Emulation für "Arme"

// meine Libs: https://forum.arduino.cc/uploads/short-url/vdTvKr7F8mHxi2F1J2plss2IKrv.zip
#include <CombiePin.h>
#include <CombieTimer.h>
#include <CombieTools.h>

#include <CombieTypeMangling.h>
using namespace Combie::Millis;

using Counter = Combie::Tools::Counter<byte>;

Counter counter;

Combie::Pin::TasterGND<2> wahlTaster; // Taster zwischen Pin und GND(invertierend)
Combie::Timer::EntprellTimer wahlEntprell {20_ms};
Combie::Tools::FlankenErkennung wahlFlankenerkennung;

constexpr byte leuchte {11};
constexpr byte wahlMoeglichkeiten {5};
constexpr byte wahl[wahlMoeglichkeiten] {0,255,175,150,50}; // helligkeitsstufen

void setup() 
{
  Serial.begin(9600);
  cout << F("Start: ") << F( __FILE__ ) << endl;
  wahlTaster.initPullup();
  counter.onCount( [](Counter &counter)   
                   {
                     if(counter >= wahlMoeglichkeiten) counter.reStart();
                     analogWrite(leuchte,wahl[counter]);
                     cout << "Auswahl: " << counter << " Value: " << wahl[counter] << endl;
                   }
                 );
}

void loop() 
{
  counter = wahlFlankenerkennung = wahlEntprell = wahlTaster;
}

```

[Next page](https://forum.arduino.cc/t/ein-taster-bei-jedem-click-anderen-befehle-ausfuhren-lassen/1119269.md?page=2)
