Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Franzis Adventskalender für Arduino – Tag 7

Posted on 7. Dezember 202214. Dezember 2022 by Stefan Draeger

In diesem Beitrag möchte ich mit dir das siebente Türchen des Franzis Adventskalender für Arduino öffnen.

Franzis Adventskalender für Arduino - Tag 7
Franzis Adventskalender für Arduino – Tag 7

Wenn wir nun das Türchen öffnen, finden wir einen 10 kOhm Widerstand.

Inhalt des siebenten Türchens im Franzis Adventskalender für den Arduino

Farbcodierung der Widerstände

Auf dem Widerstand findest du Ringe in unterschiedliche Farben.

230 Ohm Widerstand mit 5% Toleranz
230 Ohm Widerstand mit 5% Toleranz

Wenn du mal einen Widerstand hast und den Wert ermitteln möchtest, so muss man lediglich anhand der Ringfarbe und einer Tabelle dieses ermitteln ODER man nutzt ein Online-Tool wo du einfach die Farben der Ringe wählst. So ein Online-Tool habe ich dir unter https://draeger-it.blog/widerstandsrechner/ bereitgestellt.

Schaltungen – Taster mit PullUp / PullDown Widerstand

Am gestrigen Tag habe ich erwähnt, dass man einen Taster mit einem PullUp oder PullDown Widerstand an den Mikrocontroller anschließen kann.

Der einzige Unterschied zwischen diesen beiden Schaltungen ist das Signal, welches hinterher ausgewertet wird. Bei einer Schaltung mit einem PullUp Widerstand wird das Betätigen des Tasters einen Wechsel von HIGH auf LOW bewirken und bei PullDown von LOW auf HIGH.

Schaltung - Pullup & Pulldown Widerstand
Schaltung – Pullup & Pulldown Widerstand

Die beiden möglichen Schaltungen habe ich dir bereits in separaten Beiträgen gezeigt.

  • Arduino Lektion #105: Taster mit Pull Up Widerstand
  • Arduino Lektion 33: Taster mit Pull Down Widerstand

Hier möchte ich auf die Schaltung mit einem PullDown Widerstand eingehen. Um diese Schaltung aufzubauen, müssen wir den einen Pin vom Taster mit 5 V verbinden und den anderen mit 10 kOhm Widerstand, welcher wiederum mit GND (der Minusleitung) verbunden wird. Zwischen dem Taster und dem Widerstand schließen wir nun unseren Draht an, welcher zum digitalen Pin D7 geht.

Wenn wir den Code von gestern verwenden, dann müssen wir 2 kleine Änderungen ausführen, zunächst ändern wir den Pin von D2 auf D7, und beim Aufruf der Funktion „pinMode(taster, INPUT_PULLUP);“ schreiben wir „pinMode(taster, INPUT);“ (quasi ohne „_PULLUP“) denn wir haben ja nun einen eigenen kleinen 10 kOhm Widerstand in der Schaltung.

Durchschalten der LEDs

Wollen wir nun ein kleines Programm schreiben, bei welchem wir beim Betätigen des Tasters immer eine andere LED aktivieren.

Wenn wir jedoch einfach nur das Event des Tasters abfragen, dann würden wir nachfolgendes Ergebnis erhalten.

Das ganze nennt sich prellen und bedeutet kurz das, dass Signal mehrfach erkannt wird.

Prellen eines Tasters

Wenn wir das Signal des Tasters bzw. die Änderung des Zustands des Pins, an welchen der Taster angeschlossen ist, reagieren wollen und so bestimmte LEDs aktivieren wollen. So kommt es vor, dass mehrere Signale / Zustandsänderungen erkannt werden, das liegt daran, dass wir einfach zu langsam sind, den Taster loszulassen bzw. der Mikrocontroller mit seinen 16 MHz deutlich zu schnell ist.

Um diesen Taster nun zu entprellen, gibt es eine sehr gute Bibliothek, welche wir einbinden und verwenden können oder wir erweitern unseren Code um ein paar Zeilen.

// Taster am digitalen Pin D7 angeschlossen
#define taster 7

#define ledRot 3
#define ledGelb 6
#define ledGruen 8

int activeLED = -1;

int leds[] = { ledRot, ledGelb, ledGruen };

long lastAction = 0L;
const int DELAY_BETWEEN_ACTIONS = 500;

void setup() {
  // Definieren das der Pin der LED als Ausgang dient.
  pinMode(taster, INPUT);

  pinMode(ledRot, OUTPUT);
  pinMode(ledGelb, OUTPUT);
  pinMode(ledGruen, OUTPUT);
}

void loop() {
  // Wenn der Taster betätigt wird, ist der Pin auf HIGH geschaltet.
  if (digitalRead(taster) == 1) {
    // Wenn der letzte Zeitpunkt der Ausführung plus dem Zeitlichenabstand zwischen zwei Ausführungen
    // kleiner als der aktuelle Zeitstempel in Millisekunden ist, dann...
    if ((lastAction + DELAY_BETWEEN_ACTIONS) < millis()) {
      // speichern des aktuellen Zeitstempels in Millisekunden
      lastAction = millis();
      // deaktivieren der zuletzt aktivierten LED
      digitalWrite(leds[activeLED], LOW);

      // Wir haben 3 LEDs in der Schaltung, das Array beginnt mit dem Index 0 
      // somit ist der maximale Index 2, wenn dieser erreicht ist, dann soll 
      // wieder von vorne begonnen werden.
      if (activeLED == 2) {
        activeLED = -1;
      }

      // den Index für die aktuelle LED um eins erhöhen
      activeLED = activeLED + 1;
      // aktivieren der LED
      digitalWrite(leds[activeLED], HIGH);

    }
  }
}

Wenn wir den Code nun auf den Mikrocontroller überspielen, dann können wir mit dem Taster durch die LEDs steppen.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}