Suchcode

Lektion 98-5: Licht dimmen, wenn eine Taste gedrückt wird, mit Arduino

Lektion 98-5: Licht dimmen, wenn eine Taste gedrückt wird, mit Arduino

In dieser Lektion wirst du ein Licht bauen, das auf Befehl ausblendet: Drücke einen Taster, und die LED startet mit voller Helligkeit und dimmt dann sanft bis zum Aus herunter. Dies ist eines der nützlichsten Anfängermuster in Arduino, weil es einen digitalen Eingang (den Taster) mit einem PWM-Analogausgang (der LED-Helligkeit) kombiniert und dir beibringt, wie du die Geschwindigkeit und Sanftheit einer Änderung steuerst, anstatt etwas nur ein- und auszuschalten.

LED mit Widerstand auf Steckbrett, verbunden mit Arduino und einem Taster
LED mit Widerstand auf Steckbrett, verbunden mit Arduino und einem Taster

Ausblenden auf Anfrage kommt überall in echten Produkten vor. Hier sind ein paar praktische Möglichkeiten, wie du das hier Gelernte nutzen kannst:

  • Sanft-Aus-Anzeigeleuchten — statt dass eine Lampe abrupt ausgeht, dimmt sie sanft herunter, wenn du einen Taster drückst, was auf Geräten und 3D-gedruckten Gehäusen viel hochwertiger aussieht.
  • Schlaf- / Standby-Modus — drücke einen Taster, und eine helle Status-LED blendet auf Schwarz ab, damit sie dich nachts nicht stört, während die Schaltung weiterhin mit Strom versorgt wird.
  • „Fade to black"-Bühnen- oder Modellbeleuchtung — ein einziger Taster löst ein sanftes Dimmen eines LED-Streifens oder Panels aus, statt eines abrupten Abschaltens.
  • Batteriesparendes Feedback — ein kurzer Tastendruck gibt dir einen hellen Bestätigungsblitz, der verblasst, sodass die LED nur für kurze Zeit voll leuchtet.
  • Interaktive Kunst und Requisiten — ein „Ausatmungs"-Effekt, der durch Berührung ausgelöst wird, ideal für Cosplay, Dioramen oder Museumsdisplays.

Die Kernidee ist einfach: Der Taster sagt dem Arduino „jetzt mit dem Ausblenden beginnen", und der Arduino fährt die LED-Helligkeit in kleinen Schritten von 255 (voll) auf 0 (aus) herunter. Weil die Schritte klein sind und schnell erfolgen, sieht dein Auge ein sanftes Ausblenden statt eines Sprungs.

Wenn du noch nie eine LED ausgeblendet hast, wird die zugrunde liegende Helligkeitssteuerung in Lektion 98-4: Eine LED mit Arduino ausblenden: Helligkeitssteuerung behandelt. Diese Lektion baut direkt auf dieser Grundlage auf, indem sie einen Taster als Auslöser hinzufügt.

Hardware und Komponenten

330_ohm_resistor
330_ohm_resistor

Dies ist ein sehr kostengünstiger Aufbau — alles hier ist Standard-Starterkit-Material:

  • Arduino-Board (Uno, Nano, Mega oder ein beliebiges kompatibles Board)
  • Eine LED (5 mm oder 3 mm, beliebige Farbe)
  • Ein Taster (momentan, 4-poliger Tasttyp funktioniert gut)
  • Ein Widerstand für die LED — irgendwo zwischen 200 Ω und 1000 Ω (die klassischen 220 Ω oder 330 Ω sind perfekt)
  • Steckbrett und DuPont-Jumperkabel
  • USB-Kabel zum Programmieren (und eine Batterie oder ein 5 V-Adapter, wenn du es ohne Kabel betreiben möchtest)

Ein kurzer Hinweis zum LED-Widerstand: Eine LED benötigt ungefähr 2 V über sich und etwa 10 mA Strom. Bei einer 5 V-Versorgung muss der Widerstand die restlichen 3 V abfallen lassen, sodass das Ohmsche Gesetz etwa 300 Ω ergibt. Alles von 300 Ω bis 1000 Ω funktioniert — höhere Werte machen die LED nur dunkler. Ein Widerstand ist nicht optional; ohne ihn zieht die LED viel zu viel Strom und brennt durch.

Verdrahtungsanleitung

Arduino-Schaltplan für LED mit einem Taster
Arduino-Schaltplan für LED mit einem Taster
Arduino-Verdrahtung für LED mit einem Taster
Arduino-Verdrahtung für LED mit einem Taster

Die Verdrahtung ist absichtlich minimal. Die Anode der LED (das längere Bein) wird über den Widerstand mit Digitalpin 3 verbunden, und ihre Kathode (das kürzere Bein, mit der flachen Seite am Gehäuse) geht an Masse. Der Taster wird zwischen Digitalpin 2 und Masse angeschlossen — kein externer Pull-up-Widerstand ist nötig, weil der Code den internen Pull-up des Arduino aktiviert.

Achte auf die Polarität der LED: Die flache Seite des Kunststoffgehäuses und das kürzere Bein markieren die Kathode (negativ). Wenn du sie verkehrt herum einsteckst, leuchtet die LED einfach nicht — es entsteht kein Schaden, dreh sie einfach um.

Beim Taster: Wenn du einen 4-poligen Tastschalter verwendest, denke daran, dass die Pins intern paarweise verbunden sind: Zwei der vier Pins sind immer miteinander verbunden. Verwende ein Multimeter im Durchgangsmodus, um ein Paar zu finden, das beim Drücken piept, und verwende dann einen Pin von jeder Seite. Eine Seite geht an Pin 2, die andere an Masse.

Code-Erklärung

Der Sketch ist kurz, und fast alles, was du ändern möchtest, befindet sich in einer Handvoll Zeilen am Anfang. Hier sind die vom Benutzer konfigurierbaren Teile:

const int pushButtonPin = 2;//der Pin, an den der Drucktastenschalter angeschlossen ist
const int LEDPin = 3;//der Pin, an den die LED angeschlossen ist
const int fadeAmount = 10;    // um wie viele Punkte die LED gedimmt werden soll
const int fadeSpeed = 5;//Dimmzeit in Millisekunden. Je kleiner der Wert, desto schneller das Dimmen

pushButtonPin und LEDPin teilen dem Arduino einfach mit, an welche Pins du die Komponenten angeschlossen hast. Wenn du den Taster an Pin 4 oder die LED an Pin 9 (einen PWM-fähigen Pin) verschiebst, ändere einfach diese beiden Zahlen entsprechend deiner Verkabelung. Beachte, dass der LED-Pin PWM unterstützen muss — bei einem Uno sind das die Pins 3, 5, 6, 9, 10 oder 11 — denn zum Dimmen ist analogWrite() erforderlich.

fadeAmount steuert, wie groß jeder Helligkeitsschritt ist. Die Helligkeit reicht von 0 bis 255, ein fadeAmount von 10 bedeutet also, dass die LED in etwa 25 Schritten gedimmt wird. Eine größere Zahl macht das Dimmen grober und schneller; eine kleinere Zahl macht es gleichmäßiger und langsamer.

fadeSpeed ist die Verzögerung in Millisekunden zwischen den einzelnen Schritten. Dies ist der wichtigste Parameter dafür, wie sich der Effekt anfühlt. Ein Wert von 5 ms ergibt ein schnelles, knackiges Dimmen; ein Wert von 30 ms oder mehr ergibt ein langsames, genüssliches Dimmen. Zusammen mit fadeAmount kannst du mit diesen beiden Werten das Dimmen genau auf den gewünschten Charakter abstimmen.

Es gibt außerdem eine interne Variable, die es wert ist, gekannt zu werden:

int brightness = 255;    // wie hell die LED ist
int pushButtonStatus = 0; // Tastenwert von Pin 2

brightness beginnt bei 255, was bedeutet, dass die LED bei jedem Tastendruck mit voller Helligkeit startet. Wenn du möchtest, dass das Dimmen von einem dunkleren Punkt aus beginnt — sagen wir, halbe Helligkeit — ändere dies auf 128.

Die Logik selbst funktioniert so: Die Schleife liest den Taster. Wenn er gedrückt ist (LOW, wegen des internen Pull-ups), läuft eine while-Schleife, solange brightness über null liegt. Innerhalb dieser Schleife schreibt der Arduino die aktuelle Helligkeit auf die LED, subtrahiert fadeAmount, wartet fadeSpeed Millisekunden und wiederholt das Ganze. Wenn der Taster nicht gedrückt ist, wird die LED einfach auf 0 geschrieben und bleibt aus.

Ein wichtiges Detail: Der interne Pull-up bewirkt, dass der Pin HIGH liest, wenn der Taster nicht gedrückt ist, und LOW, wenn er gedrückt ist. Deshalb prüft der Code auf LOW, um einen Tastendruck zu erkennen. Wenn du jemals auf einen externen Pull-down-Widerstand umsteigst, müsstest du diesen Vergleich auf HIGH ändern.

Live-Projekt und Demonstration

Sobald der Code hochgeladen ist, ist das Verhalten unmittelbar und zufriedenstellend. Drücke den Taster, und die LED springt auf volle Helligkeit und dimmt dann sichtbar über einen von dir kontrollierten Zeitraum bis auf null herunter. Lass den Taster los, und die LED erlischt; drücke erneut, und das Dimmen beginnt wieder bei voller Helligkeit.

Im Video wird das Dimmen mit verschiedenen Einstellungen demonstriert, damit du den Unterschied hören und sehen kannst. Mit fadeAmount = 20 ist das Dimmen schnell und grob — es erreicht null in einer Handvoll sichtbarer Schritte. Mit fadeAmount = 10 wird es deutlich gleichmäßiger, und mit fadeAmount = 3 dauert das Dimmen merklich länger und wirkt fast kontinuierlich. Der Wert fadeSpeed hat einen ebenso dramatischen Effekt: Bei 1 ms erfolgt das Dimmen fast augenblicklich, während größere Werte es in die Länge ziehen.

Probiere dieses Experiment: Setze fadeAmount = 5 und fadeSpeed = 30. Du erhältst ein langsames, sanftes Dimmen, das wie ein Licht aussieht, das einschläft. Setze dann fadeAmount = 50 und fadeSpeed = 1 für einen harten, schnellen Schnitt. Keines von beiden ist „falsch" — es geht einzig um die Stimmung, die du erzeugen möchtest.

Das Umschaltverhalten desselben Tasters wird separat behandelt in Lektion 98-3: Wie man eine Toggle-LED mit einem Drucktaster und Arduino ein- und ausschaltet, und die einfachere Version zum Einschalten per Tastendruck findest du in Lektion 98-2: Wie man eine LED mit einem Drucktaster und Arduino ein- und ausschaltet.

Da das Dimmen durch einen Momentkontakt ausgelöst wird, eignet sich dieselbe Schaltung auch hervorragend zum Ansteuern eines Relais oder MOSFETs anstelle einer LED — du könntest eine 12 V-Lampe dimmen, den Sanftanlauf eines Motors oder das Aufwärmen eines Heizelements. Der Taster ist nur der Auslöser; was du dimmst, bleibt dir überlassen.

Verwandte Projekte aus diesem Video

Kapitel

  • [00:00] Überblick über die 10 LED-Projekte
  • [01:00] Einführung in den Arduino-Schritt-für-Schritt-Kurs
  • [02:29] LED-Grundlagen: Symbole, Polarität und Strom
  • [03:49] Berechnung des LED-Widerstands mit dem Ohmschen Gesetz
  • [05:53] Projekt 1: Eine LED ein- und ausschalten
  • [12:43] Projekt 2: LED mit Drucktaster
  • [17:13] Projekt 3: LED mit Drucktaster umschalten
  • [20:12] Projekt 4: Eine LED dimmen
  • [23:20] Projekt 5: Eine LED mit einem Drucktaster dimmen
  • [27:32] Projekt 6: Wipp-LED
  • [30:47] Projekt 7: Lauflicht
  • [36:41] Projekt 8: Lauflicht mit Drucktaster
  • [42:25] Projekt 9: LED-Spannungspegelmesser
  • [49:25] Projekt 10: Arduino-Ampel

Bilder

Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
LED mit Widerstand auf Steckbrett, verbunden mit Arduino mit einem Drucktaster
LED mit Widerstand auf Steckbrett, verbunden mit Arduino mit einem Drucktaster
937-Lessson 98-LED-5: Arduino code to fade the LED when push button is pressed
Sprache: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Dateien📁

Arduino-Bibliotheken (zip)

|||Benutzerhandbuch