Illustration: Arduino C Lektion 3: if/else-Bedingungen für Sensoren und Aktoren

KI-generierte Illustration

Aktualisiert am 23. Oktober 2026 Von Emmanuel SAUVAGE

Arduino C Lektion 3: if/else-Bedingungen für Sensoren und Aktoren

Vergleiche, UND/ODER/NICHT und else if: die Regeln, mit denen ein Roboter anhand eines Abstandswerts anhält, bremst oder piept. Lektion 3 unseres Arduino-C-Kurses, 12 Übungen mit Lösungen.

Bedingungen (if, else if, else) entscheiden, was je nach Lage passiert: gemessener Abstand, gedrückter Taster, wenig Licht. Dies ist Lektion 3 unseres Arduino-Kurses.

In der Robotik schreibst du ständig Regeln wie:

WENN Abstand <= 15 cm → STOPP
SONST → VORWÄRTS

1. Vergleiche

  • == gleich (Achtung: in C zwei =)
  • != ungleich
  • <, >, <=, >=

2. Bedingungen verknüpfen

  • &&: UND
  • ||: ODER
  • !: NICHT
if (distance_cm <= 15 && speed > 0) {
  // Hindernis nah und Roboter fährt
}

3. Lesbare if-Anweisungen

  • Konstanten verwenden: const int DIST_STOP = 15;
  • tiefe „Pyramiden“ verschachtelter if vermeiden: in Funktionen aufteilen;
  • Hilfsfunktionen wie Fragen benennen: isNear, isPressed.

Am echten Roboter kommt der Abstand meist von einem Ultraschallsensor wie dem HC-SR04, der in den meisten Arduino-Roboterautos steckt.

Übungen (12)

Ohne Sensor kannst du einen Messwert simulieren:

int distance_cm = 42; // Testwert

Leicht

Übung 1: Gib mit int distance_cm = 12; STOP aus, wenn distance_cm <= 15, sonst GO. Leicht

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int distance_cm = 12;
  if (distance_cm <= 15) Serial.println("STOP");
  else Serial.println("GO");
}
void loop() {}

Übung 2: Lege const int DIST_WARN = 35; an und gib WARN aus, wenn distance_cm <= DIST_WARN. Leicht

Lösung anzeigen
const int DIST_WARN = 35;
void setup() {
  Serial.begin(9600);
  int distance_cm = 30;
  if (distance_cm <= DIST_WARN) Serial.println("WARN");
}
void loop() {}

Übung 3: Drei Zonen: d >= 70 gibt SILENT aus, d >= 35 SLOW BEEP, sonst FAST BEEP. Leicht

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int d = 50;
  if (d >= 70) Serial.println("SILENT");
  else if (d >= 35) Serial.println("SLOW BEEP");
  else Serial.println("FAST BEEP");
}
void loop() {}

Übung 4: Gib mit bool pressed = true; CLICK aus, wenn pressed wahr ist. Leicht

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  bool pressed = true;
  if (pressed) Serial.println("CLICK");
}
void loop() {}

Mittel

Übung 5: Verrauschter Sensor: Werte es nur als Eindringen, wenn abs(reading - reference) > 3 (schreibe int absInt(int v)). Mittel

Lösung anzeigen
int absInt(int v) { return v < 0 ? -v : v; }

void setup() { Serial.begin(9600); int reference = 40; int reading = 44; if (absInt(reading - reference) > 3) Serial.println(“INTRUSION”); else Serial.println(“OK”); } void loop() {}

Übung 6: UND: Gib DANGER aus, wenn distance <= 15 UND speed > 0. Mittel

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int distance = 12;
  int speed = 80;
  if (distance <= 15 && speed > 0) Serial.println("DANGER");
}
void loop() {}

Übung 7: ODER: Gib ALERT aus, wenn distance <= 15 ODER soundDetected wahr ist. Mittel

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int distance = 50;
  bool soundDetected = true;
  if (distance <= 15 || soundDetected) Serial.println("ALERT");
}
void loop() {}

Übung 8: Setze mit int speed = 80; den Wert speed = 30, wenn distance <= 50, und gib die Geschwindigkeit aus. Mittel

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int distance = 40;
  int speed = 80;
  if (distance <= 50) speed = 30;
  Serial.println(speed);
}
void loop() {}

Fortgeschritten

Übung 9: Schreibe int radarZone(int d), die 0, 1 oder 2 zurückgibt (still, langsam, schnell), und gib den passenden Text aus. Fortgeschritten

Lösung anzeigen
int radarZone(int d) {
  if (d >= 70) return 0;
  if (d >= 35) return 1;
  return 2;
}

void setup() { Serial.begin(9600); int z = radarZone(20); if (z == 0) Serial.println(“SILENT”); else if (z == 1) Serial.println(“SLOW BEEP”); else Serial.println(“FAST BEEP”); } void loop() {}

Übung 10: Bereich: Gib OK aus, wenn d zwischen 35 und 70 liegt (einschließlich). Fortgeschritten

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int d = 50;
  if (d >= 35 && d <= 70) Serial.println("OK");
}
void loop() {}

Übung 11: Erkläre = und == im Kommentar und schreibe einen korrekten Vergleich. Fortgeschritten

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int mode = 2;
  // = assigns a value; == compares two values
  if (mode == 2) Serial.println("MODE 2");
}
void loop() {}

Übung 12: Mini-Projekt, Bremsregel: Wenn distance <= 50, dann speed = 40, sonst speed = 80. Gib speed aus. Fortgeschritten

Lösung anzeigen
void setup() {
  Serial.begin(9600);
  int distance = 60;
  int speed = 0;
  if (distance <= 50) speed = 40;
  else speed = 80;
  Serial.println(speed);
}
void loop() {}

← Zurück: Lektion 2: Datentypen, Variablen und Konstanten · Zur Kursübersicht