Hier erfährst du, wie du einfache Arduino-Schaltungen aufbaust und einen vorgegebenen Code anpasst.
Hier erfährst du, wie du einfache Arduino-Schaltungen aufbaust und einen vorgegebenen Code anpasst.
Vorbereitung
Baue die Schaltung gemäss dem Bild unten auf.
Lade den Code auf das Arduino und teste diesen.
// Einfaches Blink-Programm – LED an Pin 12
void setup() {
pinMode(12, OUTPUT); // Pin 12 als Ausgang
}
void loop() {
digitalWrite(12, HIGH); // LED ein
delay(500); // 0.5 s warten
digitalWrite(12, LOW); // LED aus
delay(500); // 0.5 s warten
}
Aufgabe
Baue die Schaltung zu einem Wechselblinker um. Ergänze dazu eine zweite LED an Pin A0 und GND (Ground = 0 V).
Passe den Code an, damit ein Wechselblinker entsteht. Du musst dazu die drei Zeilen unten an der jeweils richtigen Stelle in den Code einfügen.
pinMode(A0, OUTPUT); // Pin A0 als Ausgang
digitalWrite(A0, HIGH); // LED ein
digitalWrite(A0, LOW); // LED aus
Hinweis: Für kurze Experimente können LEDs ohne Vorwiderstand an ein Arduino angeschlossen werden. Für einen längeren Betrieb ist ein Widerstand (z. B. 150 Ω) vor jeder LED Pflicht.
Vorbereitung
Baue die Schaltung gemäss dem Bild unten auf.
Lade den Code auf das Arduino und teste diesen.
Wahrscheinlich bekommst du die Fehlermeldung Compilation error: melody.h: No such file or directory
Um den Fehler zu beheben, musst du die Bibliothek Servo.h installieren. Klicke dazu auf das Büchersymbol links, tippe Servo und klicke auf Installieren.
// Bewegt den Servo langsam vor und zurück.
#include <Servo.h>
Servo servo9;
int pos = 0; // Variable Position erstellen
void setup() {
servo9.attach(9, 500, 2500);
}
void loop() {
// vorwärts
for (pos = 0; pos <= 180; pos += 1) {
servo9.write(pos);
delay(15); // Verzögerung
}
// rückwärts
for (pos = 180; pos >= 0; pos -= 1) {
servo9.write(pos);
delay(15); // Verzögerung
}
}
Aufgabe
Verändere das Verhalten des Servos, indem du die Werte Position und delay änderst. Der Servo kann sich maximal um 180 Grad drehen.
Vorbereitung
Baue die Schaltung gemäss dem Bild unten auf.
Lade den Code auf das Arduino und teste diesen.
// Melodie auf Pin 8
// Notenfrequenzen (Hz)
#define G3 196
#define A3 220
#define B3 247
#define C4 262
// Melodie (0 = Pause) und Noten / Dauer (4=Viertel, 8=Achtel)
const int melody[] = { C4, G3, G3, A3, G3, 0, B3, C4 };
const int dur[] = { 4, 8, 8, 4, 4, 4, 4, 4 };
void setup() {
}
void loop() {
const int n = sizeof(melody) / sizeof(melody[0]);
for (int i = 0; i < n; i++) {
int ms = 1000 / dur[i]; // Grundtempo: Viertel = 1000 ms
if (melody[i] > 0) tone(8, melody[i], ms); // Pin 8 direkt verwenden
delay(ms * 1.30); // kurze Lücke zwischen den Noten (~30 %)
noTone(8); // Ton sicher stoppen (auch bei Pause)
}
}
Aufgabe
Verändere die Melodie, indem du neue Töne definierst (define) oder deren Reihenfolge (melody) oder Länge (dur) änderst.
Gib den Code einer KI und bitte um eine Anpassung in eine andere Melodie.
Vorbereitung
Baue die Schaltung gemäss dem Bild unten auf.
Lade den Code auf das Arduino und teste diesen.
Auch hier wirst du wieder eine Bibliothek/Library installieren müssen (siehe Aufgabe Servo)
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(7, 2); // 7 Neopixel werden über Pin 2 angesteuert
void setup() {
pixels.begin();
}
void loop() {
pixels.setPixelColor(0, pixels.Color(50, 0, 0));
pixels.setPixelColor(1, pixels.Color(0, 50, 0));
pixels.setPixelColor(2, pixels.Color(0, 0, 255));
pixels.setPixelColor(3, pixels.Color(50, 50, 0));
pixels.setPixelColor(4, pixels.Color(0, 50, 50));
pixels.setPixelColor(5, pixels.Color(50, 0, 50));
pixels.setPixelColor(6, pixels.Color(50, 50, 50));
pixels.show(); // schickt die Farbwerte an die Neopixel
// delay (500);
// pixels.setPixelColor(0, pixels.Color(0, 50, 0));
// pixels.setPixelColor(1, pixels.Color(50, 0, 0));
// pixels.show();
// delay (500);
}
Aufgabe
Passe die Farben an.
Entferne die // vor den letzten 5 Zeilen. Zwei Neopixel sollten nun blinken. Bringe auch die weiteren Neopixel zum Blinken.
Hinweis: In jedem Neopixel sind je eine rote, eine grüne und eine blaue LED verbaut. Die Zahlen in den Klammern nach pixels.Color geben an, wie stark die jeweilige LED leuchten soll. 0 bedeutet ausgeschaltet, 255 bedeutet maximale Helligkeit je Farbe. Der erste Wert steuert die rote LED, der zweite die grüne, der dritte die blaue.
Vorbereitung
Baue die Schaltung gemäss dem Bild unten auf.
Lade den Code auf das Arduino
// LDR an A0 und GND, LED an Pin 11
// Einfaches Ein-/Ausschalten je nach Helligkeit
void setup() {
pinMode(11, OUTPUT); // LED
pinMode(A0, INPUT_PULLUP); // LDR mit internem Pull-up
Serial.begin(9600); // Serielle Ausgabe zur Kontrolle
}
void loop() {
int ldrWert = analogRead(A0); // LDR-Wert einlesen
Serial.println(ldrWert); // Wert anzeigen
if (ldrWert > 250) { // Schwellenwert anpassen
digitalWrite(11, HIGH); // LED an bei Dunkelheit
} else {
digitalWrite(11, LOW); // LED aus bei Helligkeit
}
delay(200); // kurze Pause
}
Aufgabe
Öffne den Seriellen Plotter (unter Werkzeuge) und beobachte, wie sich der Messwert verändert, wenn du deine Hand über den Lichtsensor haltest.
Verändere den Schwellenwert (250) so, dass die LED leuchtet, wenn der Lichtsensor im Schatten deiner Hand ist.
Vorbereitung
Verbinde folgende Komponenten:
LED auf GND und Pin 12
Touch-Sensor auf GND, VCC und Pin 11
Lade den Code auf das Arduino und teste diesen.
int led = LOW; // merkt sich: LED-Zustand (LOW/HIGH)
int prev = LOW; // vorheriger Sensorwert
void setup() {
pinMode(12, OUTPUT);
digitalWrite(12, LOW);
pinMode(11, INPUT); // bei Open-Collector: INPUT_PULLUP
}
void loop() {
int cur = digitalRead(11); // aktuellen Sensorwert lesen
if (cur == HIGH && prev == LOW) { // Übergang von LOW -> HIGH
led = (led == LOW) ? HIGH : LOW; // umschalten
digitalWrite(12, led);
}
prev = cur; // für den nächsten Vergleich merken
}
Aufgabe
Baue nun einen Servo oder einen Lautsprecher in die Schaltung ein. Gib den Code oben sowie den Code des eingebauten Elementes einer KI und lasse dir diese zu einem neuen Code kombinieren.
Vorbereitung
Baue die Schaltung mit dem FET erneut auf.
Lade den Blink-Code aus den Beispielen
Verbinde das Gate des FET mit Pin 13 des Arduinos, die Source mit dem GND der Arduinos.
Teste die Schaltung
Aufgabe
Ändere Pin 13 zu Pin A0 im Code und in deinem Aufbau. Teste die Schaltung.
Gib den Code einer KI mit der Anweisung, das Blinken in ein Ein- und Ausdimmen zu verwandeln.
Vorbereitung
Verbinde ein OLED-Dispaly folgendermassen:
GND auf GND
VCC auf 5V
SCL auf SCL
SDA auf SDA
Lade den Code auf das Arduino und teste diesen.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <string.h>
Adafruit_SSD1306 display(128, 32, &Wire, -1);
// Zwei Frames (4 Zeilen). Backslashes doppelt escapen.
const char* CAT0[4] = {
" /\\_/\\ ",
" ( o.o ) ",
" > ^ < ",
" / \\ "
};
const char* CAT1[4] = {
" /\\_/\\ ",
" ( o.o ) ",
" > ^ <~ ",
" / \\ "
};
void setup() {
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); }
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
}
void loop() {
static int x = -90; // Start links ausserhalb
static unsigned long t = 0;
static bool frameFlip = false;
// alle ~180 ms Frame wechseln
if (millis() - t > 180) { frameFlip = !frameFlip; t = millis(); }
// maximale Textbreite in Zeichen (einmal berechnen)
static int maxChars = -1;
if (maxChars < 0) {
maxChars = 0;
for (int i=0; i<4; i++) {
int l0 = strlen(CAT0[i]);
int l1 = strlen(CAT1[i]);
if (l0 > maxChars) maxChars = l0;
if (l1 > maxChars) maxChars = l1;
}
}
int pixelWidth = maxChars * 6; // Standardfont: 6 px pro Zeichen
display.clearDisplay();
for (int row = 0; row < 4; row++) {
display.setCursor(x, row * 8); // 8 px Zeilenhöhe
display.println(frameFlip ? CAT1[row] : CAT0[row]);
}
display.display();
x += 4; // Schrittweite
if (x > 128) x = -pixelWidth; // neu von links einlaufen lassen
}
Aufgabe
Versuche, die Grafik anzupassen. Von Hand oder mit KI.
Du kannst nun versuchen, weitere Sensoren und Aktoren einzeln oder in Kombination in Betrieb zu nehmen. Wenn du die Beispielcodes selbstständig (und nicht mit KI) zusammenführen willst, musst du den Abschnitt Programmcodes zusammenführen unter Aufbau eines Arduino-Programms beachten.
Weitere Lehrgänge finden sich hier:
https://www.arduino.cc/en/Tutorial/BuiltInExamples
Erklärungen zu den Einsteigerprojekten, die in der Arduino IDE bereits enthalten sind. (EN)
https://funduino.de/ ; https://starthardware.org/ ; https://www.makinginderschule.ch/arduino.html
https://starthardware.org/category/kurs/ ;
Anleitungen, Lehrgänge, teilweise auch zu den Einsteigerprojekten. (DE)