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.

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

Download der 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.

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

Arduino (C++)
// 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

Arduino (C++)
// 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)
Aufgabe: Zwei LEDs sollen abwechselnd im Abstand von 1 Sekunde blinken.

Benötigte Bauteile

AnzahlBauteilHinweis
Arduino UNO R4 Polung beachten:
Langes Bein = Anode (+), kurzes Bein = Kathode (−)
LED Polung
Steckbrett
Steckkabel (männlich/männlich)
LEDs
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

Schaltplan Wechselblinker

Quelle: funduino.de

Sketch

Arduino (C++)
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

  1. Beide LEDs sollen schneller blinken (250 ms).
  2. Eine dritte LED einbauen und alle drei der Reihe nach blinken lassen.
  3. Eine LED soll dauerhaft leuchten, die anderen beiden abwechselnd blinken.
4 Berührung: Taster (Sensor / digital)
Aufgabe: Eine LED soll 5 Sekunden leuchten, wenn ein Taster gedrückt wird.

Benötigte Bauteile

AnzahlBauteilHinweis
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.
Steckbrett
Steckkabel (männlich/männlich)
LED
Taster
Widerstand 220 Ω
Widerstand 1 kΩ

Schaltplan

Schaltplan Taster + LED

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:

Arduino (C++)
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

  1. LED soll beim Drücken ausgehen, sonst an sein (Schlüsselwort: else).
  2. Den Tasterstatus im Seriellen Monitor anzeigen.
5 Lichtstärke: LDR — lichtabhängiger Widerstand (Sensor / analog)
Aufgabe: Eine LED soll leuchten, wenn es dunkel wird bzw. wenn der LDR abgedeckt wird.

Benötigte Bauteile

AnzahlBauteil
Arduino UNO R4
Steckbrett
Steckkabel (männlich/männlich)
LED
Fotowiderstand LDR 10 kΩ
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.

Arduino (C++)
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
  }
}
Weitere Aufgabe: Die LED soll nur leuchten, wenn Sie direkt mit der Smartphone-Taschenlampe auf den LDR leuchten (sehr heller Schwellenwert).
6 Entfernung: Ultraschallsensor HC-SR04 (Sensor / digital)
Aufgabe: Mit dem HC-SR04 eine Entfernung messen und im Serial Monitor anzeigen.

Benötigte Bauteile

AnzahlBauteil
Arduino UNO R4
Steckbrett
Steckkabel (männlich/männlich)
Ultraschallsensor HC-SR04

Funktionsprinzip

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

Serial Monitor Entfernung

Quelle: funduino.de

Erweiterte Aufgaben

  1. Bauen Sie einen Rückfahrwarner: eine LED blinkt schneller, je geringer die Entfernung ist.
  2. Verwenden Sie die NewPing-Bibliothek (Library Manager → suchen → installieren → #include <NewPing.h> einbinden).
7 Sauerstoff: Grove MIX8410 (Sensor / analog)
Aufgabe: Mit dem MIX8410 den Sauerstoffgehalt der Luft messen und im Serial Monitor anzeigen.

Benötigte Bauteile

AnzahlBauteil
Arduino UNO R4
Steckbrett
Steckkabel (männlich/männlich)
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 Arduino
  • GND → GND des Arduino
  • AOUT → 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)
Aufgabe: Mit dem Grove SCD41 CO₂-Konzentration, Temperatur und Luftfeuchtigkeit messen und im Serial Monitor anzeigen.

Benötigte Bauteile

AnzahlBauteil
Arduino UNO R4
Steckbrett
Steckkabel (männlich/männlich)
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 Arduino
  • GND → GND
  • SDA → A4 (SDA)
  • SCL → A5 (SCL)
Sketch mit Ihrem LLM erstellen. Bibliothek: SensirionI2CScd4x (Library Manager). Einbinden mit #include <SensirionI2CScd4x.h> und #include <Wire.h>.