Arduino — Grundlagen
Dieses Blatt führt in den Arduino und die grundlegende Programmierung physischer Schaltungen ein. Sie lernen den Umgang mit der Arduino IDE, das Lesen von Sensordaten und das Ansteuern von Aktoren — unterstützt durch ein Large Language Model (LLM) als Lernhilfe.
0 Ausgangslage: Einführung & fachliche Grundlagen
Internet of Things (IoT)
Das Internet der Dinge verbindet alltägliche Gegenstände mit dem Internet, um Daten auszutauschen und intelligente Funktionalitäten zu ermöglichen.
Sensoren & Aktoren
Sensoren erfassen physikalische oder chemische Eigenschaften und wandeln diese in elektrische Signale um — es gibt analoge und digitale Sensoren.
Aktoren sind Bauteile, die physikalische Bewegungen oder Aktionen als Reaktion auf Steuerungssignale ausführen (z. B. LED, Motor, Lautsprecher).
Digitale & analoge Signale
Digitale Signale kennen nur zwei Zustände: Ein (1) oder Aus (0). Analoge Signale variieren kontinuierlich zwischen einem Minimum und einem Maximum.
Quelle: elektronik-kompendium.de
Arduino Uno R4
- Analoge & digitale Pins
- VCC & GND
- USB-C-Anschluss für Datenübertragung und Strom
- I²C-Bus für Kommunikation über SDA und SCL
→ Detailliertes Pinout-Diagramm
LLM als Lernhilfe
Ein Large Language Model kann beim Arduino-Programmieren durch Codebeispiele, Fehlerbehebung und Erklärungen von Konzepten unterstützen. Nutzen Sie es gezielt — verstehen Sie den generierten Code, bevor Sie ihn hochladen.
1 Arduino IDE
Die Arduino IDE ist eine Open-Source-Entwicklungsumgebung zum Schreiben und Hochladen von Code auf Arduino-Boards. Wichtig: Bei der Installation alle mitangebotenen Treiber installieren.
Quelle: docs.arduino.cc
Wichtige Bereiche der IDE
- Verify / Upload: Code auf Fehler prüfen und auf das Board hochladen
- Select Board & Port: Board-Typ und USB-Anschluss wählen
- Serial Monitor: Datenaustausch zwischen Arduino und Computer in Echtzeit
- Serial Plotter: Grafische Darstellung von Sensorwerten
- Board Manager: Board-Treiber installieren und verwalten
- Library Manager: Zusätzliche Bibliotheken suchen und installieren
2 Arduino Sketch
Jedes Arduino-Programm (Sketch) besteht aus zwei Pflichtfunktionen:
Grundstruktur
// Variablen und Bibliotheken — werden einmalig definiert
int ledPin = 13; // Variable für digitalen Pin 13
void setup() {
// Einmalige Initialisierung beim Start
pinMode(ledPin, OUTPUT); // Pin als Ausgang definieren
Serial.begin(9600); // Seriellen Monitor starten
}
void loop() {
// Hauptprogramm — läuft in Endlosschleife
digitalWrite(ledPin, HIGH); // LED einschalten
delay(1000); // 1 Sekunde warten
digitalWrite(ledPin, LOW); // LED ausschalten
delay(1000); // 1 Sekunde warten
}
Kommentare
// Einzeiliger Kommentar
/* Mehrzeiliger
Kommentar */
Variablen
Häufig verwendete Datentypen:
int— ganze Zahlen (z. B. Pin-Nummern, Sensorwerte)long— große ganze Zahlen (z. B. für Zeitwerte in Mikrosekunden)float— Dezimalzahlen (z. B. berechnete Messwerte)bool— Wahrheitswerte (true/false)
3 Licht: LED (Aktor / digital)
Benötigte Bauteile
| Anzahl | Bauteil | Hinweis |
|---|---|---|
| 1× | Arduino UNO R4 |
Polung beachten: Langes Bein = Anode (+), kurzes Bein = Kathode (−)
|
| 1× | Steckbrett | |
| — | Steckkabel (männlich/männlich) | |
| 2× | LEDs | |
| 2× | Widerstände 220 Ω |
Vorwiderstand: LEDs werden mit 2–3 V betrieben, der Arduino liefert 5 V. Ohne Vorwiderstand kann die LED zerstört werden. In diesem Aufbau: 220 Ω.
Schaltplan
Quelle: funduino.de
Sketch
int ledPin1 = 5; // Variable für Pin 5
int ledPin2 = 7; // Variable für Pin 7
void setup() {
pinMode(ledPin1, OUTPUT); // Pin 5 als Ausgang
pinMode(ledPin2, OUTPUT); // Pin 7 als Ausgang
}
void loop() {
digitalWrite(ledPin1, HIGH); // LED 1 an
delay(1000);
digitalWrite(ledPin1, LOW); // LED 1 aus
digitalWrite(ledPin2, HIGH); // LED 2 an
delay(1000);
digitalWrite(ledPin2, LOW); // LED 2 aus
// → springt zurück an den Anfang von loop()
}
Erweiterte Aufgaben
- Beide LEDs sollen schneller blinken (250 ms).
- Eine dritte LED einbauen und alle drei der Reihe nach blinken lassen.
- Eine LED soll dauerhaft leuchten, die anderen beiden abwechselnd blinken.
4 Berührung: Taster (Sensor / digital)
Benötigte Bauteile
| Anzahl | Bauteil | Hinweis |
|---|---|---|
| 1× | Arduino UNO R4 |
Der 1-kΩ-Widerstand am Taster ist zwingend erforderlich. Achtung: Ein zu kleiner Widerstand kann beim Drücken des Tasters einen Kurzschluss verursachen. |
| 1× | Steckbrett | |
| — | Steckkabel (männlich/männlich) | |
| 1× | LED | |
| 1× | Taster | |
| 1× | Widerstand 220 Ω | |
| 1× | Widerstand 1 kΩ |
Schaltplan
Quelle: funduino.de
Sketch
Hier wird kein fertiger Sketch vorgegeben. Nutzen Sie Ihr LLM, um den Code zu generieren — erklären Sie der KI die Aufgabe und diskutieren Sie die Lösung.
IF-Abfrage & Tasterabfrage
Die IF-Abfrage trifft Entscheidungen basierend auf einer Bedingung. Im folgenden Grundmuster wird ein digitaler Eingang abgefragt:
int tasterPin = 6;
int ledPin = 7;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(tasterPin, INPUT);
}
void loop() {
int status = digitalRead(tasterPin); // Eingang lesen
if (status == HIGH) { // Taster gedrückt?
digitalWrite(ledPin, HIGH);
delay(5000); // 5 Sekunden warten
digitalWrite(ledPin, LOW);
}
}
Erweiterte Aufgaben
- LED soll beim Drücken ausgehen, sonst an sein (Schlüsselwort:
else). - Den Tasterstatus im Seriellen Monitor anzeigen.
5 Lichtstärke: LDR — lichtabhängiger Widerstand (Sensor / analog)
Benötigte Bauteile
| Anzahl | Bauteil |
|---|---|
| 1× | Arduino UNO R4 |
| 1× | Steckbrett |
| — | Steckkabel (männlich/männlich) |
| 1× | LED |
| 1× | Fotowiderstand LDR 10 kΩ |
| 2× | Widerstände 220 Ω |
Schaltplan
Auch den Schaltplan lassen Sie sich von Ihrem LLM erstellen und erklären.
Kalibrierung des Schwellenwerts
Der analoge Eingang liefert Werte von 0 bis 1023. Der Schwellenwert (ab dem die LED reagieren soll) hängt von der Umgebungshelligkeit ab. Öffnen Sie den Serial Monitor und beobachten Sie die Werte — bedecken Sie den LDR mit dem Finger und leuchten Sie mit der Taschenlampe darauf, um die Spannbreite zu erkunden.
int ldrPin = A0; // analoger Eingang
int ledPin = 12;
int schwelle = 400; // anpassen je nach Umgebungslicht
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorWert = analogRead(ldrPin);
Serial.print("LDR-Wert: ");
Serial.println(sensorWert);
if (sensorWert < schwelle) {
digitalWrite(ledPin, HIGH); // dunkel → LED an
} else {
digitalWrite(ledPin, LOW); // hell → LED aus
}
}
6 Entfernung: Ultraschallsensor HC-SR04 (Sensor / digital)
Benötigte Bauteile
| Anzahl | Bauteil |
|---|---|
| 1× | Arduino UNO R4 |
| 1× | Steckbrett |
| — | Steckkabel (männlich/männlich) |
| 1× | Ultraschallsensor HC-SR04 |
Funktionsprinzip
Quelle: microsonic.de
Schaltplan & Sketch
Schaltplan und Sketch werden nicht vorgegeben — nutzen Sie Ihr LLM. Der Sensor hat vier Pins: VCC, GND, TRIG (Senden) und ECHO (Empfangen).
Anzeige im Serial Monitor
Quelle: funduino.de
Erweiterte Aufgaben
- Bauen Sie einen Rückfahrwarner: eine LED blinkt schneller, je geringer die Entfernung ist.
- Verwenden Sie die
NewPing-Bibliothek (Library Manager → suchen → installieren →#include <NewPing.h>einbinden).
7 Sauerstoff: Grove MIX8410 (Sensor / analog)
Benötigte Bauteile
| Anzahl | Bauteil |
|---|---|
| 1× | Arduino UNO R4 |
| 1× | Steckbrett |
| — | Steckkabel (männlich/männlich) |
| 1× | MIX8410 Sauerstoffsensormodul |
Funktionsweise
Der MIX8410 ist ein elektrochemischer Sensor. Sauerstoff löst eine chemische Reaktion aus, die einen elektrischen Strom erzeugt — proportional zur O₂-Konzentration. Dieses analoge Signal wird von einem Arduino-Eingang (A0–A5) gelesen.
Pinbelegung
VCC→ 5 V des ArduinoGND→ GND des ArduinoAOUT→ analoger Pin (z. B. A0)
Sketch und Schaltplan mit dem LLM erarbeiten. Die Umrechnungsformel für den Sauerstoffprozentsatz aus dem Rohwert ist: oxygenPct = (sensorValue / 1024.0) * 21.0
Hinweise
- Der Sensor benötigt einige Minuten zum Aufwärmen, um stabile Werte zu liefern.
- Für präzise Messungen ist eine Kalibrierung unter bekannten Bedingungen notwendig.
8 CO₂, Temperatur & Luftfeuchtigkeit: Grove SCD41 (Sensor / digital)
Benötigte Bauteile
| Anzahl | Bauteil |
|---|---|
| 1× | Arduino UNO R4 |
| 1× | Steckbrett |
| — | Steckkabel (männlich/männlich) |
| 1× | Grove CO₂-, Temperatur- & Feuchtigkeitssensor SCD41 |
Funktionsweise
Der SCD41 nutzt NDIR-Technologie (Non-Dispersive Infrared) zur CO₂-Messung und integrierte Sensoren für Temperatur und Luftfeuchtigkeit. Die Kommunikation erfolgt über I²C.
Pinbelegung (I²C)
VCC→ 3,3 V des ArduinoGND→ GNDSDA→ A4 (SDA)SCL→ A5 (SCL)
Sketch mit Ihrem LLM erstellen. Bibliothek: SensirionI2CScd4x (Library Manager). Einbinden mit#include <SensirionI2CScd4x.h>und#include <Wire.h>.