🔌

Mikrocontroller-Grundlagen

Das Herz deiner Projekte: Arduino Uno

Modul 2
Arduino Uno
ATmega328P
Arduino C++
1
Grundlagen

Was ist ein Mikrocontroller?

Ein Mikrocontroller ist ein Computer auf einem Chip. Er enthält alles, was ein Computer braucht:

  • CPU - Rechenkern (Prozessor)
  • RAM - Arbeitsspeicher
  • Flash - Programmspeicher
  • I/O-Pins - Verbindung zur Außenwelt

Unterschied zum PC

  • Viel kleiner und günstiger
  • Weniger Rechenleistung
  • Kein Betriebssystem nötig
  • Startet sofort
  • Sehr stromsparend

Einsatzgebiete

Waschmaschinen, Autos, Spielzeug, Smartwatches, Industriesteuerungen, Robotik, 3D-Drucker...

Der Arduino Uno

Das perfekte Board für Einsteiger

🔵

Arduino Uno Specs

  • Chip: ATmega328P (8-bit)
  • Takt: 16 MHz
  • RAM: 2 KB
  • Flash: 32 KB
  • Digital-Pins: 14 (D0-D13)
  • Analog-Pins: 6 (A0-A5)
  • PWM: 6 Pins (D3,D5,D6,D9,D10,D11)
  • Spannung: 5V Logik
  • Preis: ~25€ (Original) / ~5€ (Clone)

Warum Arduino Uno?

  • Einfach: Perfekt für Einsteiger
  • Robust: 5V-tolerant, schwer kaputt zu kriegen
  • Dokumentiert: Riesige Community
  • Kompatibel: Tausende Shields und Libraries
  • USB: Einfache Programmierung
  • Wokwi: Volle Simulator-Unterstützung

Unser Fokus: Arduino Uno

Alle 24 Projekte in diesem Kurs sind für den Arduino Uno optimiert und funktionieren im Wokwi-Simulator.

2
Hardware

Pin-Typen verstehen

Digital Pins (D0-D13)

Ein-/Ausgänge für digitale Signale.

  • Input: Taster, Sensoren
  • Output: LEDs, Relais
  • Zustände: HIGH (5V) oder LOW (0V)
  • D0/D1 reserviert für Serial (USB)

Analog Pins (A0-A5)

Wandelt analoge Spannung in digitalen Wert.

  • ADC: 10-bit (0-1023)
  • Bereich: 0V bis 5V
  • Anwendung: Potis, LDR, NTC
  • Können auch als Digital verwendet werden

PWM Pins (~)

Erzeugt "pseudo-analoge" Signale durch schnelles Schalten.

  • Pins: D3, D5, D6, D9, D10, D11
  • Auflösung: 8-bit (0-255)
  • LED dimmen, Motor steuern
  • Servo-Signale

Power Pins

Stromversorgung für externe Komponenten.

  • 5V: Für die meisten Komponenten
  • 3.3V: Für 3.3V-Sensoren
  • GND: Masse (gemeinsam)
  • Vin: Externe Versorgung (7-12V)

Arduino Uno Pinout

Wichtige Pins auf einen Blick

Digitale Pins

  • D0, D1: Serial (TX, RX) - nicht verwenden!
  • D2, D3: Externe Interrupts
  • D3, D5, D6, D9, D10, D11: PWM (~)
  • D13: Onboard-LED

Analoge Pins

  • A0-A5: 6 analoge Eingänge
  • A4 (SDA): I2C Daten
  • A5 (SCL): I2C Takt
  • Alle als Digital nutzbar (D14-D19)

SPI (für schnelle Kommunikation)

  • D10: SS (Slave Select)
  • D11: MOSI (Master Out)
  • D12: MISO (Master In)
  • D13: SCK (Clock)

I2C (für Sensoren/Displays)

  • A4: SDA (Daten)
  • A5: SCL (Takt)
  • Bis zu 128 Geräte am Bus
  • Für OLED, LCD, RTC, Sensoren

💡 Tipp

PWM-Pins sind mit ~ gekennzeichnet. Für LEDs, Motoren und Servos brauchst du diese Pins!

3
Protokolle

Kommunikation mit Sensoren

I²C (Inter-Integrated Circuit)

  • Leitungen: 2 (SDA, SCL)
  • Speed: 100-400 kHz
  • Adressen: Bis zu 128 Geräte
  • Anwendung: Sensoren, OLED, LCD, RTC

Ideal für viele Sensoren mit wenigen Kabeln!

SPI (Serial Peripheral Interface)

  • Leitungen: 4 (MOSI, MISO, SCK, SS)
  • Speed: Bis zu 8 MHz
  • Anwendung: TFT-Displays, SD-Karten

Schnell, aber mehr Kabel nötig.

UART (Serial)

  • Leitungen: 2 (TX, RX)
  • Speed: 9600-115200 Baud
  • Anwendung: GPS, Bluetooth-Module, Debug

Einfach, Punkt-zu-Punkt-Verbindung.

1-Wire

  • Leitungen: 1 (+ GND)
  • Speed: ~16 kbps
  • Anwendung: DS18B20 Temperatursensor

Minimaler Verdrahtungsaufwand.

I2C in der Praxis

So findest du Geräte auf dem Bus

// I2C-Scanner: Findet alle verbundenen Geräte
#include <Wire.h>

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("I2C Scanner startet...");

  for (byte addr = 1; addr < 127; addr++) {
    Wire.beginTransmission(addr);
    if (Wire.endTransmission() == 0) {
      Serial.print("Gerät gefunden: 0x");
      Serial.println(addr, HEX);
    }
  }
}

void loop() { }

Typische I2C-Adressen

  • 0x27 / 0x3F: LCD 1602
  • 0x3C: SSD1306 OLED
  • 0x68: DS3231 RTC
  • 0x76 / 0x77: BMP280
  • 0x48: ADS1115 ADC
  • 0x29: VL53L0X ToF
4
Software

Arduino C++ Grundstruktur

Jedes Arduino-Programm besteht aus zwei Funktionen

setup() - Einmalige Initialisierung

void setup() {
  // Wird einmal beim Start ausgeführt

  pinMode(7, OUTPUT);    // Pin als Ausgang
  pinMode(6, INPUT_PULLUP); // Mit Pull-up

  Serial.begin(9600);   // Serial starten
}

loop() - Endlosschleife

void loop() {
  // Wird endlos wiederholt

  digitalWrite(7, HIGH); // LED an
  delay(500);            // Warte 500ms
  digitalWrite(7, LOW);  // LED aus
  delay(500);            // Warte 500ms
}

Wichtige Funktionen

  • pinMode(pin, mode) - Pin konfigurieren
  • digitalWrite(pin, value) - Digital schreiben
  • digitalRead(pin) - Digital lesen
  • analogRead(pin) - Analog lesen (0-1023)
  • analogWrite(pin, value) - PWM (0-255)
  • delay(ms) - Pause in Millisekunden

Arduino-Bibliotheken

Vorgefertigter Code für Sensoren und Module

Wire.h

I2C-Kommunikation

#include <Wire.h>

Servo.h

Servomotoren steuern

#include <Servo.h>

DHT.h

DHT11/DHT22 Sensoren

#include <DHT.h>

LiquidCrystal_I2C.h

I2C LCD Displays

#include <LiquidCrystal_I2C.h>

Adafruit_SSD1306.h

OLED Displays

#include <Adafruit_SSD1306.h>

FastLED.h

NeoPixel/WS2812

#include <FastLED.h>

💡 Bibliotheken in Wokwi

Wokwi kennt die meisten Arduino-Bibliotheken. Einfach #include hinzufügen und es funktioniert!

🔌

Zusammenfassung

Das Wichtigste über Arduino Uno

Hardware

ATmega328P, 5V, 14 Digital + 6 Analog Pins

Pins

Digital, Analog, PWM und Protokolle verstanden

Code

setup() + loop() Struktur

Nächster Schritt

Modul 3: Das Ökosystem - Arduino IDE und Wokwi

← →
1 / 10