Zum Inhalt springen

Digitale Elektronik und Mikrocontroller – Digitale Eingänge und Ausgänge programmieren

Aus MOOCsWiki Staging
Die Druckversion wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.
aiMOOC-Siegel aiMOOC

Digitale Elektronik und Mikrocontroller – Digitale Eingänge und Ausgänge programmieren

QR-Code



Digitale Elektronik und Mikrocontroller – Digitale Eingänge und Ausgänge programmieren


Einleitung

In diesem Lernkurs programmierst Du digitale Eingänge und Ausgänge eines Mikrocontrollers. Im Mittelpunkt stehen Signale, definierte Startzustände und ein sicherer Ausbildungsaufbau. Du arbeitest bevorzugt mit einer berührungssicheren Simulation oder einem geeigneten Schulungsmodell mit Schutzkleinspannung.

Sicherheitsregel: Reale Elektroarbeiten dürfen nur von entsprechend qualifizierten und beauftragten Personen im Rahmen der geltenden betrieblichen Regeln durchgeführt werden. Dieser Kurs erteilt keine Arbeitsfreigabe. Quizresultate sind niemals eine Freigabe für reale Elektroarbeiten.


Ausbildungsfall

Du arbeitest in einer Ausbildungswerkstatt an einem Modell einer Förderanlage. Ein Taster meldet eine Bedienanforderung an den Mikrocontroller. Eine LED zeigt den Betriebszustand an. Die LED ist nur eine Anzeige und keine sicherheitsgerichtete Schutzeinrichtung.

Auftrag: Beim Einschalten soll die Anzeige sicher AUS sein. Wird der Taster gedrückt, soll die LED EIN sein. Wird der Taster losgelassen, soll die LED AUS sein.


Lernziele

Nach dem Kurs kannst Du digitale Pegel unterscheiden, einen Eingang mit definiertem Ruhepegel beschalten, einen Ausgang mit definiertem Startzustand initialisieren, `pinMode()`, `digitalRead()` und `digitalWrite()` anwenden, einfache Signaldiagramme lesen und Dein Programm in einer sicheren Simulation prüfen.


Kurze Lerneinheiten


Lerneinheit 1: Digital bedeutet zwei Zustände

Ein digitaler Eingang unterscheidet zwei logische Zustände: LOW und HIGH. Welche Spannungsbereiche tatsächlich als LOW oder HIGH erkannt werden, hängt vom verwendeten Mikrocontroller ab. Deshalb darfst Du logische Zustände nicht mit beliebigen Spannungen gleichsetzen.

Merksatz: HIGH und LOW sind logische Zustände. Die zugehörigen elektrischen Grenzwerte stehen im Datenblatt des Bausteins.


Lerneinheit 2: Der Mikrocontroller und seine digitalen Pins

Beim Arduino Uno mit ATmega328P werden mehrere Pins als digitale Ein- oder Ausgänge verwendet. Die Richtung legst Du im Programm fest.

Wichtig: Ein Pin ist nicht automatisch ein belastbarer Leistungsausgang. Aktoren mit höherem Strombedarf benötigen geeignete Treiberstufen. In diesem Kurs verwendest Du nur die simulierte beziehungsweise schulungsgeeignete LED-Schaltung.


Lerneinheit 3: Ausgang programmieren

Ein digitaler Ausgang wird mit `pinMode(pin, OUTPUT)` als Ausgang konfiguriert. Danach setzt `digitalWrite(pin, HIGH)` oder `digitalWrite(pin, LOW)` den logischen Ausgangszustand.

Beispiel für einen definierten AUS-Startzustand:

const byte LED_PIN = 8;

void setup() {
  digitalWrite(LED_PIN, LOW);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
}

Beim ATmega328P werden die I/O-Register beim Reset auf definierte Anfangswerte gesetzt. Trotzdem soll die Anwendung den gewünschten Betriebszustand explizit initialisieren. So wird die Absicht des Programms eindeutig und besser überprüfbar.


Lerneinheit 4: Eingang programmieren

Ein digitaler Eingang liest mit `digitalRead(pin)` den logischen Zustand eines Pins ein.

Ein unbeschalteter Eingang kann einen undefinierten Pegel annehmen. Deshalb brauchst Du einen definierten Ruhepegel. Eine verbreitete Lösung ist ein Pull-up-Widerstand.

Mit Arduino kannst Du den internen Pull-up verwenden:

const byte TASTER_PIN = 2;

void setup() {
  pinMode(TASTER_PIN, INPUT_PULLUP);
}

Bei dieser Schaltung gilt häufig: Taster offen → HIGH, Taster gedrückt → LOW. Das Signal ist also aktiv LOW.


Lerneinheit 5: Eingang und Ausgang verbinden

Jetzt wird der Ausbildungsfall programmiert.

const byte TASTER_PIN = 2;
const byte LED_PIN = 8;

void setup() {
  digitalWrite(LED_PIN, LOW);
  pinMode(LED_PIN, OUTPUT);
  pinMode(TASTER_PIN, INPUT_PULLUP);
}

void loop() {
  bool gedrueckt = digitalRead(TASTER_PIN) == LOW;
  digitalWrite(LED_PIN, gedrueckt ? HIGH : LOW);
}

Begründung: Der Ausgang wird auf AUS vorbereitet. Der Eingang erhält mit `INPUT_PULLUP` einen definierten Ruhepegel. Erst danach wird der Zustand zyklisch gelesen und die Anzeige entsprechend gesetzt.


Lerneinheit 6: Signaldiagramm lesen

Das folgende vereinfachte Signaldiagramm zeigt die Logik des Ausbildungsfalls:

Zeitabschnitt Eingang Taster Bedeutung Ausgang LED
Start HIGH nicht gedrückt LOW
Betätigung LOW gedrückt HIGH
Loslassen HIGH nicht gedrückt LOW

Prüffrage: Warum wird die LED bei LOW am Eingang eingeschaltet? Weil der Eingang mit Pull-up beschaltet ist und der Taster beim Drücken den Eingang auf LOW zieht.


Lerneinheit 7: Berührungssicher simulieren

Nutze für die Übungen bevorzugt eine Simulation. Wokwi stellt einen Arduino-Uno-Simulator mit GPIO, Tastern, LEDs und weiteren Bauteilen bereit.

Wokwi Arduino-Simulator öffnen

Übe dort zuerst nur mit virtueller Hardware. Ändere anschließend gezielt Startzustände und Eingangsbeschaltung und beobachte das Verhalten.

Keine Freigabe durch Simulation oder Quiz: Eine richtige Simulation, ein bestandener Test oder ein Quizresultat berechtigt nicht zu Arbeiten an realen elektrischen Anlagen.


Lerneinheit 8: Video zur Wiederholung

Das folgende Video zeigt die Grundfunktionen `digitalRead()` und `digitalWrite()` an einem Arduino. Verwende es zur Wiederholung und gleiche Details mit der offiziellen Arduino-Dokumentation ab.


Gestufte Hilfen


Hilfe 1: Orientierung

Frage Dich zuerst: Welcher Pin ist Eingang, welcher Pin ist Ausgang? Welcher Zustand soll unmittelbar nach dem Start gelten?


Hilfe 2: Eingang

Bei `INPUT_PULLUP` ist der Eingang im Ruhezustand HIGH. Ein Taster gegen GND erzeugt beim Drücken LOW.


Hilfe 3: Ausgang

Wenn die LED beim Start AUS sein soll, definiere den Ausgangszustand LOW, bevor der reguläre Programmablauf beginnt.


Hilfe 4: Fehlersuche

Prüfe nacheinander Pin-Nummern, Pin-Richtungen, Pull-up-Konfiguration, aktive LOW-Logik und den tatsächlichen Zustand im Simulator. Ändere immer nur eine Sache gleichzeitig.


Aufgaben mit begründetem Feedback


Basisaufgabe

Aufgabe: Markiere im Programm, wo Eingang, Ausgang und Startzustand festgelegt werden.

Feedback: Richtig ist, dass `pinMode(TASTER_PIN, INPUT_PULLUP)` den Eingang festlegt, `pinMode(LED_PIN, OUTPUT)` den Ausgang festlegt und `digitalWrite(LED_PIN, LOW)` den gewünschten AUS-Startzustand vorbereitet. Die Zuordnung ist wichtig, weil Richtung und Startzustand getrennte Eigenschaften sind.


Anwendungsaufgabe

Aufgabe: Ändere die Simulation so, dass die LED im Ruhezustand EIN und beim Tastendruck AUS ist.

Feedback: Eine mögliche Lösung ist, die Ausgangslogik umzudrehen. Der Eingang bleibt aktiv LOW. Entscheidend ist, dass Du Eingangsbedeutung und Ausgangswirkung getrennt analysierst.


Transferaufgabe

Aufgabe: Eine Maschine besitzt zwei nicht sicherheitsgerichtete Meldetaster. Die Anzeige soll EIN sein, wenn mindestens einer der beiden Taster gedrückt wird. Entwirf die Programmlogik zuerst als Wahrheitstabelle und programmiere sie danach in der Simulation.

Feedback: Du brauchst eine ODER-Verknüpfung der beiden logischen Bedienanforderungen. Bei `INPUT_PULLUP` musst Du zunächst aus LOW jeweils die Bedeutung „gedrückt“ bilden. Die Transferleistung besteht darin, elektrische Pegel, Signalbedeutung und boolesche Logik sauber zu trennen.


Interaktive Aufgaben


Quiz: Teste Dein Wissen

Welche Funktion legt einen Arduino-Pin als Ausgang fest? (pinMode mit OUTPUT) (!digitalRead mit HIGH) (!delay mit OUTPUT) (!analogRead mit LOW)




Welche Funktion liest einen digitalen Eingang? (digitalRead) (!digitalWrite) (!pinMode) (!delay)




Was bewirkt INPUT_PULLUP typischerweise? (Einen definierten HIGH Ruhepegel am Eingang) (!Einen analogen Ausgang) (!Eine höhere Prozessortaktfrequenz) (!Eine galvanische Trennung)




Welcher Pegel bedeutet bei einem Taster gegen GND mit INPUT_PULLUP häufig gedrückt? (LOW) (!HIGH) (!PWM) (!FLOAT)




Warum ist ein definierter Startzustand wichtig? (Damit das Ausgangsverhalten nach dem Start eindeutig ist) (!Damit der Mikrocontroller mehr Speicher erhält) (!Damit jeder Eingang analog wird) (!Damit keine Programmschleife nötig ist)




Was ist bei einem unbeschalteten Eingang problematisch? (Der Pegel kann undefiniert sein) (!Der Pin wird automatisch zum Leistungsausgang) (!Der Prozessor stoppt immer) (!Der Flash Speicher wird gelöscht)




Welche Aussage zu HIGH und LOW ist fachlich richtig? (Die elektrischen Grenzwerte hängen vom Baustein ab) (!HIGH ist bei jedem Mikrocontroller exakt 24 Volt) (!LOW ist immer ein offener Stromkreis) (!HIGH und LOW sind analoge Messbereiche)




Wozu dient digitalWrite an einem als OUTPUT konfigurierten Pin? (Zum Setzen eines digitalen Ausgangszustands) (!Zum Messen eines Widerstands) (!Zum Ändern der CPU Architektur) (!Zum Speichern eines Programms im EEPROM)




Welche Umgebung eignet sich für die ersten Übungen dieses Kurses besonders? (Eine berührungssichere Simulation) (!Eine offene Netzspannungsanlage) (!Ein Schaltschrank ohne Ausbildungsfreigabe) (!Eine unbekannte Industrieanlage im Betrieb)




Was bedeutet ein bestandenes Quiz in diesem Kurs für reale Elektroarbeiten? (Es erteilt keine Arbeitsfreigabe) (!Es ersetzt die Beauftragung) (!Es ersetzt die Fachqualifikation) (!Es hebt betriebliche Sicherheitsregeln auf)





Memory

digitalRead digitalen Eingang lesen
digitalWrite digitalen Ausgang setzen
INPUT_PULLUP definierter HIGH Ruhepegel
OUTPUT Pin als Ausgang konfigurieren
LOW logischer niedriger Zustand
Startzustand Verhalten nach Initialisierung





Drag and Drop

Ordne die richtigen Begriffe zu. Thema
Eingang einrichten INPUT_PULLUP
Ausgang einrichten OUTPUT
Signal einlesen digitalRead
Signal ausgeben digitalWrite
Sicher üben Simulation




...


Kreuzworträtsel

Eingang Welcher Pin-Typ nimmt digitale Signale auf?
Ausgang Welcher Pin-Typ gibt digitale Signale aus?
Pullup Welcher Widerstand sorgt häufig für einen definierten HIGH Ruhepegel?
Simulation Wie heißt eine sichere virtuelle Übungsumgebung allgemein?
Taster Welches Bedienelement wird im Ausbildungsfall eingelesen?
Signal Was wird als HIGH oder LOW verarbeitet?





LearningApps


Lückentext

Vervollständige den Text.
Ein digitaler Eingang wird mit

gelesen. Ein digitaler Ausgang wird mit

gesetzt. Mit

erhält ein Eingang einen definierten Ruhepegel. Beim Taster gegen GND bedeutet gedrückt häufig

. Der gewünschte Zustand nach dem Start wird als

festgelegt. Für erste Versuche eignet sich eine

.




Offene Aufgaben


Leicht

  1. Digitale Signale: Erstelle eine Skizze mit HIGH und LOW und beschrifte beide Zustände.
  2. Mikrocontroller: Markiere auf dem Pinout drei digitale Pins und erkläre ihre mögliche Verwendung.
  3. Pull-up-Widerstand: Erkläre in eigenen Worten, warum ein Eingang einen definierten Ruhepegel benötigt.
  4. Programmablauf: Kommentiere das Beispielprogramm so, dass jede Zeile für eine andere Auszubildende verständlich wird.


Standard

  1. Signaldiagramm: Zeichne für fünf aufeinanderfolgende Tasterzustände ein Signaldiagramm für Eingang und LED-Ausgang.
  2. Fehlersuche: Erzeuge in der Simulation absichtlich einen falschen Pin und dokumentiere Fehlerbild, Ursache und Korrektur.
  3. Aktiv LOW: Programmiere zwei Varianten derselben Aufgabe und erkläre den Unterschied zwischen elektrischem Pegel und logischer Bedeutung.
  4. Wahrheitstabelle: Entwickle eine Wahrheitstabelle für zwei Taster und eine gemeinsame Anzeige.


Schwer

  1. Entprellung: Recherchiere das Prellen mechanischer Taster und entwirf eine softwarebasierte Entprellstrategie in der Simulation.
  2. Fehlersicherer Startzustand: Vergleiche zwei Initialisierungsreihenfolgen und begründe, welche für einen definierten AUS-Zustand geeigneter ist.
  3. Testplan: Erstelle einen systematischen Testplan für Start, Tastendruck, Loslassen, Reset und fehlerhafte Eingangskonfiguration.
  4. Transferprojekt: Entwickle in der Simulation eine kleine Bedienanzeige mit zwei Eingängen und zwei Ausgängen, dokumentiere Stromlaufbild, Signaldiagramm, Programm und Prüffälle.




Text bearbeiten Bild einfügen Video einbetten Interaktive Aufgaben erstellen



Lernkontrolle

  1. Startverhalten analysieren: Ein Ausgang ist nach dem Reset kurzzeitig Eingang. Erkläre, warum die angeschlossene Schaltung trotzdem so entworfen werden sollte, dass kein unerwünschter Zustand entsteht.
  2. Aktiv-LOW-Logik übertragen: Ein Sensor liefert im Ruhezustand HIGH und bei Aktivierung LOW. Entwickle eine verständliche Programmlogik und begründe Deine Variablennamen.
  3. Fehlerdiagnose: In einer Simulation wechselt die LED scheinbar zufällig. Entwickle eine Prüfreihenfolge, mit der Du einen undefinierten Eingang als mögliche Ursache nachweist.
  4. Schaltung und Software abstimmen: Vergleiche externen Pull-down und internen Pull-up. Erkläre, wie sich die Eingangsbedeutung im Programm verändert.
  5. Sicherheitsgrenze beurteilen: Begründe, warum eine funktionierende Mikrocontroller-LED-Anzeige keine sicherheitsgerichtete Maschinenfunktion ersetzt und warum ein Quiz keine Arbeitsfreigabe darstellt.
  6. Transfer: Entwirf für einen berührungssicheren Schulungsaufbau eine Startsequenz mit zwei Ausgängen, bei der beide zunächst AUS bleiben und erst nach erfolgreicher Eingangskontrolle freigegeben werden.




Lernnachweis

Für einen Lernnachweis zu diesem Thema sollst Du zeigen, dass Du digitale Pegel fachlich korrekt interpretierst, Ein- und Ausgänge unterscheiden kannst, definierte Eingangszustände mit Pull-up oder Pull-down erklärst, einen definierten Ausgangs-Startzustand programmierst, Signaldiagramme liest und erstellst, einen Fehler systematisch in der Simulation untersuchst und die Grenzen zwischen Lernsimulation und realer Elektroarbeit begründet darstellen kannst.

Der Lernnachweis erfolgt ohne externe Medien, ohne eingebettete Simulation und ohne automatische Freigabe. Eine erfolgreiche Bearbeitung bestätigt Lernfortschritt, aber keine Berechtigung zu realen Elektroarbeiten.




Quellen und Medienrechte

  1. Arduino Documentation: digitalWrite – offizielle Funktionsdokumentation zu digitalen Ausgängen und Pull-up-Verhalten.
  2. Microchip ATmega328P – Herstellerinformationen und Datenblattzugang zum Mikrocontroller.
  3. DGUV Bildungsbereich Elektrowerkstatt – Hinweise zu elektrischen Gefährdungen in der beruflichen Bildung.
  4. DGUV Praxisfeld Elektrotechnik – Beispiele für Ausbildungs- und Schutzmaßnahmen im elektrotechnischen Praxisfeld.
  5. Wokwi Dokumentation – Dokumentation der berührungssicheren Online-Simulation.
  6. – Wikimedia Commons, CC BY-SA 4.0.
  7. – Wikimedia Commons, CC BY-SA 4.0.
  8. – Wikimedia Commons, freie Lizenz laut Dateibeschreibungsseite.
  9. – Wikimedia Commons, CC BY-SA 2.5.
  10. – Wikimedia Commons, CC BY-SA 4.0.
  11. – Wikimedia Commons, Public Domain.
  12. – Wikimedia Commons, CC BY-SA 4.0.


OERs zum Thema


Verknüpfte Lernbereiche


aiMOOC-Projekte



Schulfach+




aiMOOCs



aiMOOC Projekte