Microcontroller

Übungsaufgaben zu Arrays auf dem Mikrocontroller

Drei Übungsaufgaben zu Arrays auf Mikrocontrollern: Für den Flurmonitor einer Mitfahr-App bestimmst Du, was in einem Array nach mehreren Schleifen steht, und ergänzt eine Pinliste. Für das Prüffeld eines Klimareglers legst Du ein LED-Testmuster als zweidimensionales Array an und gibst es mit verschachtelten Schleifen aus. Für eine Zisternensteuerung glättest Du Füllstandswerte mit einem Ringpuffer. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Arrays auf dem Mikrocontroller: Pinlisten, Lauflicht, Muster und Messwertpuffer

Sobald ein Programm vier LEDs, zehn Messwerte oder eine Folge von Tönen verwalten soll, werden einzelne Variablen unhandlich. Arrays fassen gleichartige Werte unter einem Namen zusammen, und eine Schleife erledigt mit dem Index, was sonst viele fast gleiche Zeilen bräuchten. Dieser Artikel zeigt, wie Du Arrays deklarierst, mit sizeof die Anzahl der Elemente bestimmst, Indexfehler erkennst, ein Lauflicht über eine Pinliste steuerst, Muster in zweidimensionalen Arrays ablegst und Messwerte in einem Ringpuffer glättest. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Anzeigen am Mikrocontroller: OLED-Display SSD1306 per I²C und LED-Matrix MAX7219 mit eigenem Treiber

Zwei Anzeigen tauchen in vielen Mikrocontroller-Projekten auf: kleine OLED-Displays mit dem Controller SSD1306 und 8×8-LED-Matrizen mit dem Treiber-IC MAX7219. Das OLED schließt Du per I²C an und steuerst es mit einer Bibliothek; Texte, Zahlen, Umlaute und ein Balken für einen Messwert sind schnell gemacht. Die LED-Matrix steuerst Du ohne Bibliothek: Aus dem Datenblatt entsteht Schritt für Schritt ein eigener Treiber, erst mit selbst erzeugten Taktsignalen (Bitbanging), dann mit der SPI-Hardware. Alle Programme gibt es für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Übungsaufgaben zu analogen Eingängen am Mikrocontroller

Vier Übungsaufgaben zu analogen Eingängen: Du rechnest Rohwerte auf verschiedenen Boards in Spannung und Prozent um und ergänzt die Liste der Ein- und Ausgabeelemente, wertest das Widerstandsnetzwerk eines Tastenfelds aus, legst einen Spannungsteiler für einen 48-V-Lastenradakku aus und programmierst eine Bodenfeuchteregelung mit Kalibrierung, map(), constrain() und Hysterese. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Analoge Eingänge am Mikrocontroller: Potentiometer, analogRead, Auflösung und Referenz, Spannungsteiler, Analogtastatur

Viele Sensoren liefern keine Einsen und Nullen, sondern eine Spannung. Dieser Artikel zeigt, wie Du ein Potentiometer an einen Analogeingang anschließt, mit analogRead() Rohwerte liest und in Volt umrechnest, warum die Boards unterschiedliche Auflösungen und Messbereiche haben, wie Du Messwerte mit map() skalierst und glättest, wie ein Spannungsteiler eine 36-V-Akkuspannung messbar macht und wie drei Taster an einem einzigen Analogeingang hängen. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

ESP vernetzt: MQTT-Client und Logging über WLAN für ESP32-C6, ESP32 und ESP8266

Mit der Bibliothek PubSubClient schickt ein ESP Messwerte als JSON an einen MQTT-Broker und nimmt Befehle entgegen, die eine LED schalten. Die Verbindung baut sich nach einem Abbruch selbst wieder auf, ohne die loop() zu blockieren, und ein Last Will meldet, wenn das Gerät ausfällt. Im zweiten Teil holt sich der ESP die Uhrzeit von einem Zeitserver, versieht seine Logmeldungen mit Datum und Uhrzeit und zeigt die letzten Meldungen auf einer eigenen Webseite an – jeweils mit vollständigen Programmen für ESP32-C6, ESP32 und ESP8266.

ESP vernetzt: WLAN-Verbindung, Over-the-Air-Update und Webserver für ESP32-C6, ESP32 und ESP8266

Ein ESP-Board ist mit wenigen Zeilen im WLAN. Der Artikel zeigt, wie Du die Zugangsdaten in einer eigenen Datei secrets.h aus dem Code heraushältst, mit WiFiMulti eine stabile Verbindung aufbaust, die sich nach einem Abbruch selbst wiederherstellt, neue Firmware per WLAN aufspielst (OTA-Update, nur nach Tastendruck) und einen kleinen Webserver programmierst, der eine LED schaltet und einen Taster anzeigt – jeweils mit vollständigen Programmen für ESP32-C6, ESP32 und ESP8266.

A/D-Umsetzer: Auflösung, Quantisierung, Abtastung, Umsetzverfahren und Analogeingang des Mikrocontrollers

Sensoren liefern Spannungen, Mikrocontroller und SPS rechnen mit Zahlen. Dazwischen sitzt der A/D-Umsetzer. Dieser Artikel erklärt Schritt für Schritt Abtasten, Quantisieren und Codieren, Auflösung (LSB) und Bitzahl, das Umrechnen zwischen Spannung und Datenwort, die Referenzspannung, das Abtasttheorem, die Umsetzverfahren vom Flash- bis zum Delta-Sigma-Umsetzer, das Digitalvoltmeter, die Anpassung von Sensorsignalen und den Analogeingang eines Mikrocontrollers.

Übungsaufgaben zu digitalen Eingängen am Mikrocontroller: Taster, Pull-up/Pull-down und Entprellen

Drei Übungsaufgaben zu digitalen Eingängen: Pegel an Tastereingängen mit Pull-up- und Pull-down-Widerständen bestimmen und einen offenen Eingang beurteilen, ein Prüfprogramm mit Flankenerkennung und Entprellung schreiben, Pull-up-Ströme berechnen und Öffner und Schließer beim Drahtbruch beurteilen, eine Entprellung mit RC-Glied und Schmitt-Trigger berechnen und Entprellschaltungen sowie einen Reset-Taster auf Fehler prüfen. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Digitale Eingänge am Mikrocontroller: Taster, Logikpegel, Pull-up/Pull-down und Entprellen

Ein Taster am Eingang braucht mehr als zwei Drähte: Hier erfährst Du, ab welcher Spannung ein Eingang HIGH liest, warum ein offener Eingang einen Pull-up- oder Pull-down-Widerstand braucht, wie Du Pegel und Ströme an Taster-Widerstands-Netzwerken berechnest, wann ein Öffner sicherer ist als ein Schließer, wie Du viele Taster an wenige Pins bringst und wie Du prellende Kontakte in Hardware und Software entprellst. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Übungsaufgaben zu digitalen Ausgängen am Mikrocontroller: Vorwiderstand, Ausgangsstrom und Lasten mit Transistor oder Relais

Drei Übungsaufgaben zu digitalen Ausgängen: Ports und Portleitungen einer Platine bestimmen und eine Strombilanz aufstellen, Vorwiderstände für eine Statusanzeige an 3,3 V berechnen und eine weiße LED beurteilen, die Statusanzeige programmieren, eine Transistorstufe für ein Relais auslegen, Freilaufdiode und Logic-Level-MOSFET begründen, Low-Side und High-Side unterscheiden und einen Lüfter zeitgesteuert schalten. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Digitale Ausgänge am Mikrocontroller: LED mit Vorwiderstand, Ausgangsstrom und Lasten mit Transistor oder Relais

Ein Ausgangspin kann eine LED direkt treiben, ein Relais oder einen Lüfter aber nicht. Hier schaltest Du mit pinMode() und digitalWrite() mehrere LEDs (Ampel), berechnest den Vorwiderstand für 3,3 V und 5 V, liest zulässige Pin- und Summenströme aus dem Datenblatt, stellst eine Strombilanz auf und treibst größere Lasten über Transistor, MOSFET oder Relais mit Freilaufdiode – Low-Side und High-Side. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Pinbelegung der Mikrocontroller-Boards: ESP32-C6, ESP32, NodeMCU und Arduino Uno

Nicht alle Pins eines Mikrocontroller-Boards kann man frei nutzen: Einige steuern den Startvorgang (Strapping-Pins), andere sind mit Speicher, USB, LED oder Tastern verbunden. Hier stehen die Pinouts der Boards ESP32-C6 DevKit N8-M, ESP32 Dev Kit V1, V2 und C V4, WeMos-Board mit OLED, NodeMCU (ESP8266) und Arduino Uno mit den empfohlenen Pins, dazu für jedes Board die Liste der Ein- und Ausgabeelemente, mit der alle Beispiele der Reihe arbeiten, und ein Testprogramm für die Standardbelegung.

Übungsaufgaben zu den ersten Schritten mit dem Mikrocontroller: Programmablauf, Blinkmuster und Taster

Zwei Übungsaufgaben zu den ersten Schritten mit dem Mikrocontroller: Programmablauf und Blinkmuster vorhersagen, eine LOW-aktive LED erkennen, die Liste der Ein- und Ausgabeelemente ergänzen, ein Blinkmuster ändern, mit einem Taster umschalten und Fehler beim Hochladen beheben. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Erste Schritte mit dem Mikrocontroller: Entwicklungsumgebung, Board, Blink und Taster

Kein Mikrocontroller-Projekt ohne blinkende LED. Hier richtest Du die Arduino-IDE mit Board-Paket, Treiber und Port ein, lernst den Aufbau eines Programms mit setup() und loop() kennen, lässt eine LED blinken und liest einen Taster ein – für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno. Zum Schluss geht es um die typischen Fehler beim Hochladen.

Mikrocontroller-Grundlagen: Lernpfad durch die Artikelreihe mit ESP32-C6, ESP32, NodeMCU und Arduino Uno

Dieser Überblick zeigt den Weg durch die Artikelreihe über Mikrocontroller-Grundlagen: zuerst die Grundlagenartikel mit der Arduino-API und Board-Tabs für ESP32-C6, ESP32, NodeMCU und Arduino Uno, danach die Vertiefung mit Registern und Datenblatt und zuletzt die Peripherie- und Vernetzungsartikel. Tabellen nennen zu jedem Artikel Lesezeit und Übungsaufgaben.

Szenario „CSB-Rad: E-Bike-Elektronik“: Lastenräder, Werkstatt und Rahmenfertigung

Die erfundene CSB-Rad GmbH aus Bielefeld kennst Du vielleicht schon aus den IT-Szenarien. Für die Elektroberufe geht es hier um die Elektronik ihrer E-Bikes und Lastenräder, um die Werkstatt in Sennestadt und um die Rahmenfertigung beim Partner Rahmenwerk OWL in Gütersloh. Hier findest Du das 48-V-Lastenradsystem, die Fertigungslinie, feste Werte und die Personalakten.

SPI: Schnell, einfach, mit eigener Leitung für jedes Gerät

SPI überträgt Daten zwischen Mikrocontroller und Peripheriegeräten mit Takten im Megahertz-Bereich und gleichzeitig in beide Richtungen. Du lernst die Kennzeichen der Schnittstelle kennen: vier Leitungen mit Gegentaktausgängen, eine eigene Auswahlleitung je Gerät, kein festes Protokoll und vier SPI-Modi. Du liest ein SPI-Impulsdiagramm, unterscheidest sternförmige Auswahlleitungen und Ketten und schließt Bausteine an Arduino, ESP8266 und ESP32 an – mit Checkliste für Datenblatt und Bibliothek sowie einer Entscheidungshilfe zwischen SPI und I²C.

I²C: Ein Bus, zwei Leitungen, viele Sensoren

I²C verbindet einen Mikrocontroller über nur zwei Leitungen mit vielen Sensoren, Displays und Speicherbausteinen. Du lernst die Kennzeichen des Busses kennen: Open-Drain-Leitungen mit Pull-up-Widerständen, Adressen statt Auswahlleitungen, Bestätigung jedes Bytes und Taktraten von 100 kHz bis 1 MHz. Du liest ein I²C-Telegramm, bemisst Pull-up-Widerstände und schließt Bausteine an Arduino, ESP8266 und ESP32 an – mit einer Checkliste, was Du vorher im Datenblatt und in der Bibliotheksdokumentation prüfen solltest.

Planungsphase für ein Microcontroller-Projekt

Sind Lastenheft und Pflichtenheft freigegeben, wird die Umsetzung eines Microcontroller-Projekts in den drei Dimensionen des magischen Dreiecks geplant: Qualität (Hardware und Software), Kosten und Zeit. Am durchgehenden Beispiel einer CO2-Lüftungsampel mit ESP32 zeigt der Artikel, wie Messprinzip und Bauteile ausgewählt, Stückliste und Pinbelegung erstellt, der Programmablauf und erste Testfälle entworfen sowie Kostenaufstellung und Zeitplan mit Meilensteinen aufgestellt werden.

Realisierung eines Microcontroller-Projekts nach dem Wasserfall-Modell

Für kleine Projekte, deren Ziel und Anforderungen von Beginn an feststehen, eignet sich ein phasenweises, dokumentengetriebenes Vorgehen, wie es das Wasserfall-Modell beschreibt. Dieser Einstieg in die Artikelreihe zeigt, wann das Modell zu einem Microcontroller-Projekt passt, welche sechs Phasen es durchläuft und welches Dokument am Ende jeder Phase steht – vom Lastenheft bis zum Übergabeprotokoll.

Lastenheft für ein Microcontroller-Projekt

Wird ein Microcontroller-Projekt nach dem Wasserfall-Modell entwickelt, dann müssen zunächst die Anforderungen aus Auftraggebersicht definiert und in einem Lastenheft dokumentiert werden. Welche Aspekte sollten hierbei erfasst werden? Der Artikel klärt außerdem, wer das Lastenheft schreibt und abstimmt, wofür es im Projekt verwendet wird, welche Inhalte typisch sind und wie es sich vom Pflichtenheft unterscheidet.

Erste Schritte mit dem Mikrocontroller: Entwicklungsumgebung, Board, Blink und Taster

Kein Mikrocontroller-Projekt ohne blinkende LED. Hier richtest Du die Arduino-IDE mit Board-Paket, Treiber und Port ein, lernst den Aufbau eines Programms mit setup() und loop() kennen, lässt eine LED blinken und liest einen Taster ein – für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno. Zum Schluss geht es um die typischen Fehler beim Hochladen.