Einstieg
Der Taster, der sich selbst drückt
Ausgangslage
Zwei Kabel bilden einen Taster: eins an Pin 9, eins an 5 V. Berühren sich die Enden, ist der Taster gedrückt. Gerade berührt niemand die Kabel.
Das Programm zeigt, was an Pin 9 ankommt: 1 = Spannung da, 0 = keine.
pin_9 0
0
Niemand drückt. Warum springt der Wert trotzdem zwischen 0 und 1?
Pin 9 hängt in der Luft. Ohne Druck ist der Eingang mit nichts verbunden. Schon winzige Störungen aus der Umgebung kippen ihn mal auf 1, mal auf 0. Man sagt: Der Eingang schwebt. Fachbegriff: offener, hochohmiger Eingang (englisch: floating input).
Wie bekommt man einen klaren Wert? Zuerst: Was ist ein Arduino überhaupt?
Station 1 · Sensor und Aktor
Ein kleiner Computer zwischen Programm und Bauteil
Auftrag: Sensor oder Aktor? Ruft eure Vermutung in die Klasse, dann tippt die Karte an.
EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) als roter Faden: Auch das eigene Projekt in Station 15 wird so geplant.
Station 2 · Anschlüsse
Wo kommt was dran?
Auftrag: Wo schließt ihr einen Taster an, wo einen Drehknopf, wo eine LED? Vermutet, dann tippt auf die Platine.
Tippt einen Bereich an
Pins, Stromanschlüsse, LED, USB, Netzbuchse und der Mikrocontroller selbst lassen sich antippen.
Merke: Ein Pin liefert höchstens 20 mA. Das reicht für eine LED mit Vorwiderstand, aber nicht für einen Motor.
ATmega328P mit 16 MHz und 32 KB Flash (0,5 KB davon Bootloader). Uno R4: gleiche Pinbelegung, 48 MHz, ADC bis 14 Bit, aber nur 8 mA je Pin.
Station 3 · Hallo Welt
Die erste LED blinkt
Auftrag: Vermutet, wie oft die LED in 10 Sekunden aufleuchtet. Dann tippt die grüne Fahne an und zählt mit.
1.0 s
Im Live-Modus wirkt eine Änderung sofort, auch während das Programm läuft. In mBlock schreibt ihr Zeiten mit Punkt: 0.5, nicht 0,5.
void setup() { pinMode(13, OUTPUT); }
void loop() { digitalWrite(13, HIGH); delay(1000);
digitalWrite(13, LOW); delay(1000); }auf der Platine
an Pin 13
Pin 13 LOW
Zeit: 0,0 s · aufgeleuchtet: 0-mal
Nach 10 Sekunden hält die Simulation an.
Zweiter Schritt am Steckbrett: eigene LED an Pin 13 und GND, mit Vorwiderstand (z. B. 220 Ω). Das lange Bein der LED zeigt zum Pin.
Station 4 · Zwei Modi in mBlock
Hochladen oder live?
Auftrag: Lest die Tabelle. Entscheidet dann für jedes Vorhaben: Hochladen oder live?
| Hochladen | Live | |
|---|---|---|
| Wo läuft das Programm? | auf dem Arduino, dort gespeichert | in mBlock auf dem Computer; der Arduino schaltet und meldet Messwerte |
| Start | „wenn Arduino UNO startet“: bei Strom an oder nach Reset | grüne Fahne; Änderungen wirken sofort |
| Ohne Computer? | ja, mit Netzteil oder Powerbank | nein, das USB-Kabel muss stecken |
| Figuren auf der Bühne? | nein | ja, über Variablen |
| Gut zu wissen | mBlock zeigt das Programm auch als Arduino-C-Code. | Gelber Rand um die Blöcke: Programm läuft. Messwerte seht ihr sofort. |
Live: Auf dem Arduino läuft eine Firmware, die die Befehle von mBlock ausführt und Messwerte zurückschickt. Hochladen überschreibt sie. Ultraschall klappt in mBlock meist, zuverlässiger mit der Arduino IDE.
a) Ein Pinguin auf dem Bildschirm soll dem Drehknopf folgen.
b) Die Schranke im Modell-Parkhaus soll ohne Computer laufen.
c) Ihr wollt die Blinkzeit ändern, während das Programm läuft.
a) Live: Nur dann gibt es Figuren auf der Bühne. b) Hochladen: Das Programm muss auf dem Arduino gespeichert sein. c) Live.
Wer hochgeladen hat, hat die Live-Software auf dem Arduino überschrieben. Für den Live-Modus wieder „Firmware aktualisieren“.
Station 5 · Pull-down-Widerstand
Den Eingang festhalten
Auftrag: Vermutet zuerst: Was zeigt Pin 9 mit Widerstand, wenn niemand drückt? Dann baut den Widerstand ein und probiert den Taster.
Ohne Bauteil: interner Pull-up. Arduino IDE: pinMode(9, INPUT_PULLUP), Taster nach GND, gedrückt = 0. In mBlock-Blöcken nicht schaltbar.
pin_9 0
0
Was macht der Widerstand?
Er verbindet Pin 9 mit GND. Ist der Taster offen, zieht er den Eingang auf 0 V: Wert 0. Drückt man, liegen 5 V an Pin 9: Wert 1.
Weil er nach unten zur Masse zieht, heißt er Pull-down-Widerstand. Bewährt sind 10 bis 50 kΩ.
Station 6 · Begründen
Warum nicht einfach ein Kabel?
✎ Zettel und Stift · jede und jeder für sich5 Minuten
Jemand ersetzt den 10-kΩ-Widerstand durch ein Kabel von Pin 9 nach GND. Ohne Druck zeigt Pin 9 jetzt sicher 0.
Was passiert, wenn jemand den Taster drückt? Zeichnet den Weg des Stroms ein und begründet in zwei Sätzen.
Für Schnelle: Mit dem 10-kΩ-Widerstand: Wie viel Strom fließt durch ihn, wenn der Taster gedrückt ist? Tipp: I = U : R.
Lösung: Gedrückt verbindet der Taster 5 V über das Kabel direkt mit GND. Das ist ein Kurzschluss: Kein Bauteil begrenzt den Strom. Die Sicherung auf dem Arduino trennt ab 500 mA den USB-Anschluss, Bauteile können heiß werden oder kaputtgehen. Der Widerstand begrenzt den Strom.
Für Schnelle: I = 5 V : 10 000 Ω = 0,0005 A = 0,5 mA. Das ist so wenig, dass nichts warm wird.
Grenzwerte laut Arduino: 20 mA je Pin empfohlen, ab 40 mA bleibender Schaden.
Die Schaltung mit Kabel statt Widerstand
Station 7 · Tastendrücke zählen
Spielt den Arduino
✋ Ausprobieren · im Raum8 Minuten
- Material
- ein Blatt Papier, auf einer Seite „1“, auf der anderen „0“; Tafel und Kreide
- Rollen
- Eine Schülerin oder ein Schüler ist der Taster und hält das Blatt hoch. Die Lehrkraft ist der Arduino. Alle anderen zählen mit.
- Vermutet: Wie viele Striche macht der Arduino bei einem Tastendruck?
- Der Taster zeigt etwa drei Sekunden lang die „1“, dann wieder die „0“.
- Der Arduino arbeitet das Programm rechts stur und so schnell er kann ab: hinsehen, bei „1“ einen Strich, wieder hinsehen …
- Zählt die Striche an der Tafel.
Ein Druck, viele Striche: Woran liegt das? Wie müsste das Programm lauten?
Das Programm fragt nur: Ist der Taster gerade gedrückt? Solange er unten bleibt, zählt jeder Durchlauf der Schleife. Ein echter Arduino schafft sehr viele Durchläufe pro Sekunde.
Abhilfe: nach dem Zählen warten, bis der Taster losgelassen ist. Auf der nächsten Tafel könnt ihr das testen.
Station 8 · Zählen testen
Einmal drücken, einmal zählen
Auftrag: Welches Programm zählt jeden Druck genau einmal? Vermutet, dann haltet den Taster bei jedem Programm etwa eine Sekunde gedrückt.
Die Simulation schafft 30 Durchläufe pro Sekunde, ein echter Arduino nach dem Hochladen viel mehr.
Prellen: Beim Drücken federt der Kontakt einige Millisekunden lang hin und her. Ein schneller Arduino sieht dann mehrere Drücke. Eine kurze Wartezeit nach dem Zählen hilft zusätzlich.
Fachbegriffe: Zustand abfragen (Polling), Flanke erkennen. Das Arduino-Beispiel „Debounce“ übernimmt einen neuen Zustand erst, wenn er 50 ms stabil war.
Tastendrücke 0
zaehler 0
Welches Programm zählt richtig?
Programm C. A zählt, solange der Taster unten ist. B zählt langsamer, bei längerem Drücken aber immer noch mehrmals. C wartet nach dem Zählen, bis der Taster losgelassen ist.
Station 9 · Analoger Eingang
Aus Drehen wird eine Zahl
Auftrag: Vermutet, welche Zahl A0 zeigt, wenn der Drehknopf genau in der Mitte steht. Dann dreht.
Spannung an A0 2,50 V
pin_A0 512
Der Drehknopf (Poti) teilt die 5 V auf. Am Schleifer liegt je nach Stellung eine Spannung zwischen 0 und 5 V.
links … rechts
Wie viele verschiedene Zahlen kann A0 liefern?
1024 Zahlen, von 0 bis 1023. Der Arduino teilt 0 bis 5 V in Stufen und nutzt dafür 10 Bit. Jedes Bit verdoppelt: 2 – 4 – 8 – 16 – 32 – 64 – 128 – 256 – 512 – 1024. Eine Stufe sind knapp 5 mV.
Ein Lichtsensor (LDR) mit festem Widerstand funktioniert genauso: Das Licht ändert die Spannung an A0. Mehr dazu: Klicktafel Analog & Digital
Formel bei 5 V Referenz: Wert = ⌊U · 1024 : 5 V⌋, höchstens 1023. Arduino IDE: analogRead(A0).
Station 10 · Rechnen
Der Pinguin hängt am Rand
✎ Zettel und Stift · jede und jeder für sich8 Minuten
Im Spiel „Schneeflocken fangen“ steuert der Drehknopf einen Pinguin. Die Bühne in mBlock reicht von x = −240 (links) bis x = 240 (rechts). Das Programm sagt: gehe nach x: pin_A0 − 512.
- Wohin soll der Pinguin bei pin_A0 = 0, bei 512 und bei 1023?
- Bei welchen Werten von pin_A0 liegt das Ziel außerhalb der Bühne? Dort hängt der Pinguin am Rand fest.
- Findet eine bessere Rechnung.
Für Schnelle: Eine Rechnung, die genau von −240 bis 240 reicht.
a) −512, 0 und 511. b) Unter 272 liegt das Ziel links neben der Bühne, über 752 rechts daneben. Nur von 272 bis 752, auf knapp der Hälfte des Drehwegs, bewegt sich der Pinguin.
c) Durch 2 teilen: (pin_A0 − 512) : 2 ergibt −256 bis 255,5, das passt fast. Für Schnelle: pin_A0 · 480 : 1023 − 240 ergibt genau −240 bis 240.
Arduino IDE: map(wert, 0, 1023, -240, 240) rechnet dasselbe mit ganzen Zahlen.
Ohne Taschenrechner. Auf der nächsten Tafel könnt ihr eure Rechnung im Spiel testen.
Station 11 · Spiel
Schneeflocken fangen
Auftrag: Spielt mit allen drei Rechnungen. Mit welcher fangt ihr am meisten Flocken?
pin_A0 = 512 · Ziel x = 0
Punkte 0
Verpasst 0
Vier verpasste Flocken beenden das Spiel. Am echten Arduino dreht ihr am Poti, hier am Regler.
mBlock-Bühne: 480 × 360. Live zwei Skripte: Das Gerät schreibt pin_A0 in eine Variable, die Figur liest sie.
Station 12 · Servomotor
Position statt Dauerdrehen
Auftrag: Vermutet, welcher Teil des Signals den Winkel bestimmt. Dann bewegt den Regler und beobachtet das Signal.
0°
Kabel: Braun = GND, Rot = 5 V, Orange = Signal, in mBlock an einen ~-Pin (hier 9). Ein SG90 schafft laut Datenblatt 1,8 kg·cm: 1,8 kg an einem 1 cm langen Hebel, an 3 cm nur 0,6 kg.
Was bestimmt den Winkel?
Alle 20 ms kommt ein Impuls mit 5 V. Seine Länge bestimmt den Winkel: etwa 1 ms an einem Ende, 1,5 ms in der Mitte, etwa 2 ms am anderen Ende. Die genauen Werte hängen vom Servo ab.
Servo-Bibliothek der Arduino IDE: 0° bis 180° als 0,544 bis 2,4 ms. Dort geht jeder Digitalpin, PWM an Pin 9 und 10 ist dann belegt. In mBlock: ~-Pin.
Station 13 · Motor und Pumpe
Zu stark für einen Pin
Auftrag: Warum hängt der Motor nicht direkt an Pin 9? Entscheidet euch, dann schaltet Pin 9 und verfolgt den Strom.
Einfacher: ein fertiges Relaismodul. Schaltstufe, Schutzdiode und Anzeige-LED sind dort schon eingebaut.
Basisstrom etwa (5 V − 0,7 V) : 1 kΩ ≈ 4,3 mA, gut unter 20 mA. Im Original: TIP120 (Darlington) mit 9-V-Block; Alternative: Logic-Level-MOSFET.
Der Pin würde überlastet. Er schaltet darum nur einen Transistor: Ein kleiner Strom an der Basis schaltet den großen Motorstrom aus einer eigenen Stromquelle.
Die Freilaufdiode schützt: Beim Abschalten erzeugt die Spule im Motor kurz eine hohe Spannung. Die Diode leitet sie ab.
Station 14 · Fehlersuche
Es geht nicht. Was nun?
Auftrag: Lest den Fall rechts. Wo sucht ihr zuerst? Begründet mit dem, was die LED „L“ verrät.
Keine Verbindung
kein blauer Punkt am Gerät in mBlock
- Firmware aktualisieren (Gerät → Einstellungen)
- USB-Stecker raus und wieder rein
- mBlock neu starten, notfalls den Computer
- Ausschlussverfahren: anderer USB-Anschluss, anderes Kabel, anderer Arduino, anderer Computer
Windows: COM-Anschluss im Geräte-Manager unter „Anschlüsse (COM & LPT)“. Nachbauten mit CH340-Chip brauchen je nach System einen Treiber.
Verbunden, aber falsch
- richtiger Pin im Programm?
- richtiger Steckplatz auf Steckbrett und Arduino?
- Kabel gebrochen?
- Pull-down vergessen? Messwert anzeigen lassen
- LED falsch herum, falscher Widerstand?
- vierbeiniger Taster quer eingebaut?
- Bauteil defekt?
Immer noch nicht? Alles raus und neu aufbauen.
Der Fall
Das Blink-Programm läuft. „L“ auf der Platine blinkt, die eigene LED an Pin 13 bleibt dunkel. Wo sucht ihr zuerst?
„L“ hängt an Pin 13 und blinkt: Verbindung, Programm und Pin funktionieren. Der Fehler liegt zwischen Pin 13 und der eigenen LED, also auf dem Steckbrett.
Station 15 · Eigenes Projekt
Plant eine Maschine
✎ Zettel und Stift · zu zweit10 Minuten
Wählt ein Projekt von rechts. Zeichnet es als Kette: Sensor → Programm → Aktor.
Schreibt dazu: An welchen Pin kommt was? Analog oder digital? Hochladen oder live?
Für Schnelle: Wo braucht euer Projekt einen Pull-down-Widerstand, einen Transistor oder ein Relais?
Beispiel Parkhausschranke: Lampe und LDR (mit festem Widerstand an A0, analog) bilden eine Lichtschranke. Unterbricht ein Auto den Strahl, ändert sich der Wert stark: Servo an Pin 9 auf 90°, 3 Sekunden warten, zurück auf 0°. Hochladen, damit die Schranke ohne Computer läuft.
Für Schnelle: Der Servo braucht keinen Transistor, vom Pin kommt nur das Signal. Ein Taster bräuchte einen Pull-down, eine Pumpe einen Transistor oder ein Relais.
Zum Einstieg
Anspruchsvoller
Bauteile, die sich bewährt haben: Taster, LDR, Poti, Joystick · LED, 7-Segment-Anzeige, Summer, Servo, Pumpe über Relais.
Je Platz: Arduino, USB-Kabel, Steckbrett, Steckkabel, Taster, LEDs, Widerstände 220 Ω und 10 kΩ, Poti, LDR, Servo SG90. Uno R4 vor dem Kauf in mBlock testen.
Abschluss
Check
Auftrag: Entscheidet euch bei allen drei Fragen, dann auflösen.
1. Ein Taster zwischen 5 V und Pin 9 zeigt ohne Druck mal 0, mal 1. Was hilft?
Der Pull-down-Widerstand hält den Eingang auf 0. Ein Kabel ergäbe beim Drücken einen Kurzschluss.
2. Welche Zahl kann der analoge Eingang A0 höchstens liefern?
10 Bit ergeben 1024 Stufen. Gezählt wird ab 0, also bis 1023.
3. Eine Pumpe soll laufen, wenn Pin 9 HIGH ist. Wie schließt ihr sie an?
Der Pin liefert höchstens 20 mA. An 5 V und GND liefe die Pumpe immer, Pin 9 hätte nichts zu sagen.