These lessons are for my course at a Gymnasium in Cologne. The course is addressed at eighth or ninth grade pupils.
I use the Sloeber IDE here, since it is as easy as the Arduino IDE but a lot more powerful and flexible.
All examples will also run with the Arduino IDE, just copy the program file content to a new sketch.
Each lesson consists of the .cpp file the pupils work with, a .task file with the original content of the task, and a Solution.cpp file where the complete solution is contained.
All lessons work on a universal breadboard layout, and can easily be adapted by just changing the Breadboard.h file of the examples.
My sloeber (V4.3.3) is installed at E:\Elektro\sloeber, so it will work out of the box if you use the same location. If you have no E: drive you can use the command subst E: "C:"
My workspace directory is E:\WORKSPACE_SLOEBER, but any other location will do.
To easy import the examples you must have the right "Platform folder" installed. Check under Arduino/Preferences/Arduino/Platform and Boards/arduino/Arduino AVR Boards if version 1.8.3 is available and checked.
If it is not available, you have to check Update local json files in Arduino/Preferences/Arduino/Third party index url's and then restart sloeber and check the 1.8.3 entry.
If File/Import/General/Existing Projects into Workspace does not work, just can create a new Arduino project and choose default cpp file. Then copy the content of the lesson to the new cpp file.
After importing the project, you must check if the right Port is selected. On my computer it is COM6. You can modify the port of your Arduino on Windows in the device manager with Properties/Port Settings/Advanced/Port Number. You may safely ignore the warnings :-). After this you may check if the Processor -especially the right bootloader- is selected. After import, the ATmega328P is selected. It is the new version with the faster and smaller bootloader. If the upload does not work with this setting, just select the other one ATmega328P (Old Bootloader). If this does not work either, check your port number with the Windows device manager (or the Arduino IDE, it shows the available port numbers) and check your USB cable.

- Windows/Preferences/General/Editors/Text Editor - Insert spaces for tabs + Show line number
- Windows/Preferences/General/Workspace/LocalHistory - Disable history limits
- Windows/Preferences/General/Workspace/Build - Save before build
- Windows/Preferences/C++/Indexer - Use active build configuration
- Windows/Preferences/C++/CodeStyle/Formatter/New/Line Wrapping/Maximal line width - K&R with 132 characters per line
- Arduino/Preferences/Arduino/Third party index url's - Add urls for other boards (like in the Arduino IDE)
- Arduino/Preferences/Arduino/Third party index url's/Update local json files - To search for new board versions
- Arduino/Preferences/Arduino/ - Set Private Library path + Private hardware path
- Code auto format: Ctrl+Shift+F
- Open declaration: F3
- Autocompletion: Ctrl+Space
- Find references: Ctrl+Shift+G
BOM, schematics and pictures below.

Der Arduino Kurs besteht aus 8-10 Schülern der 8. und 9. Klassen. Er dauert eine Doppelstunde / 1,5 Zeitstunden pro Woche. Je 2 Schüler teilen sich einen Rechner / Laptop, wobei sicher auch andere Gruppengrößen denkbar sind.
Vorstellung, Vorkenntnisse und Erwartungen.
Zum Einsteig wird dann das das Doodle 50 Jahre "Kids Coding" gespielt. Dazu muss man allerdings online sein :-(.
Hier werden die Konzepte Anweisung und Wiederholungen/Schleifen benutzt.
Danach werden die Kinder in 2 Gruppen aufgeteilt.
Jede Gruppe schreibt auf Notizzetteln auf, was der menschliche Roboter aus der anderen Gruppe machen muss, um vom Klassenraum ins Lehrerzimmer zu kommen. Schleifen und Umwege sind erlaubt!
Oft ist dann die Doppelstunde auch schon rum.
Jetzt bekommt der erste menschliche Roboter seine Anweisungen/Notizzettel und darf das Programm abbarbeiten. Danach ist die andere Gruppe dran.
Zur Vertiefung kann man noch gemeinsam ein Flussdiagramm z.B. fürs Kuchenbacken entwickeln. Hier kommt am Ende die Abfrage, ob der Kuchen OK ist, oder ob man noch 5 Minuten warten soll und dann nochmal nachsieht.
Das ist ein neues Konzept, nämlich die Bedingung/Entscheidung (für eine Schleife).
Danach wird mit Scratch ein Spiel gebaut.
- Wir holen 2 Figuren und 1 Objekt (z.B. Bananen oder Diamant).
- Eine Figur bewegt sich in 20er Schritten mit den Pfeiltasten, die andere mit den wasd Tasten.
- Die Figuren fangen am Rand an.
- Das Objekt wird zufällig positioniert.
- Wir machen 2 Variablen, z.B. Player1 und Player2, die beim Start auf 0 gesetzt werden.
- Wenn das Objekt einen Player berührt wird die entsprechende Variable hochgezählt und das Objekt an einen neuen zufälligen Platz verschoben.
- Zusatzaufgabe: wenn das Objekt nach dem verschieben direkt wieder einen Player berührt, dann wird es wieder zufällig verschoben.
- Wenn eine Variable 10 erreicht, wird ein Sound abgespielt und das Spiel beendet.
- Zusatzaufgabe: Wenn ein Player am Bildschirmrand ankommt soll er am entgegengesetzten Bildschirmrand erscheinen. Dazu muss man die existierenden Variablen x-Position etc. verwenden.
- Zusatzaufgabe: Benutze nicht feste Schrittweiten, sondern Variablen SchrittweitePlayer1 + 2, die am Anfang auf 10 gesetzt wird. Die kann bei jedem Punkt verändert werden (z.B. +10).
Weiter mit dem Programmieren des Scratch Spiels.
http://compute-it.toxicode.fr/?hour-of-code und danach http://silentteacher.toxicode.fr/ Beide sind der Hit.
Um das Konzept einer Variablen zu vertiefen, gibt es die n-Eck Aufgabe in Scratch.
- Mit Scratch 40 3-Ecke zeichnen, die Farbe, Größe und Position ist jedes Mal zufällig.
- Wenn eine Taste gedrückt wird, z.B. die Leertaste, dann wird alles gelöscht und es werden 40 n+1-Ecke gezeichnet. Also erstmal 4-Ecke, dann 5-Ecke usw.
Tipp: Die Werte, die zum Malen eines N-Ecks benötigt werden, kann man aus der Eckenzahl berechnen.
Bei dieser Aufgabe müssen Variablen in Formeln/Berechnungen verwendet werden. Das ist eine wichtige Anwendung von Variablen!
Der Aufbau eines Breadboards wird erklärt, die Boards werden ausgeteilt und mit der ersten Aufgabe 1_1_Ampel angefangen.
Das Beispiel kann man erst einmal auf den Arduino laden und dann beobachten was es macht.
Für die Lösung der Aufgabe ist es gut, eine Ampel live sehen zu können oder ein Video davon zu zeigen.
Die meisten Kinder kennen die Gelb Phasen nicht richtig.
Je nachdem kann man die Kinder auch vorher die Boards zusammenstecken lassen, das ist sicher nett, ich hatte dazu leider keine Geduld.
Die 3 LED's so ansteuern, dass sie wie eine Verkehrsampel leuchten.
- Ausgabe digitaler Werte auf einem Arduino Pin.
- Warten mit delay().
Den Zustand der beiden Buttons einlesen und und auf dem Serial Monitor ausgeben.
- Einlesen digitaler Werte.
- if / else Anweisung, logisches invertieren.
- Statische Variable.
Den Zustand der beiden Buttons einlesen und je nach gedrückten Buttons verschiedene Töne ausgeben.
- Ausgabe eines Tons.
- Verknüpfung von Bedingungen.
Einen Spannungswert, der durch ein Potentiometer oder einen lichtempfindlichen Widerstand (LDR) erzeugt wird, einlesen und in eine Tonhöhe verwandeln.
- Potentiometer, LDR/Lichtwiderstand.
- Einlesen analoger Werte.
- map() Funktion.
- Verwendung von Variablen in der Loopdefinition.
Werte im Arduino Plotter ansehen und das Maximum und Minimum berechnen.
- Potentiometer, LDR/Lichtwiderstand.
- Einlesen analoger Werte.
- Arduino Plotter.
- Minimum / Maximum finden.
Ultraschall Entfernungswert einlesen und je nach Entfernung verschiedene Töne aus einer pentatonischen Reihe abspielen.
- Datenblatt eines Abstandsmessers lesen und ihn richtig ansteuern.
- Ultraschall Abstandssensor einlesen.
- Laufzeit des Schalls in Abstand umrechnen.
- Werte aus Array holen.
Eine Melodie ausgeben.
- Arrays und Loops über Arrays.
- sizeof() Funktion.
Bei richtigem Abstand ein zufälliges Weihnachtslied spielen.
- Ultraschall Abstandssensor einlesen.
- Eine Library benutzen um Weihnachstlieder abzuspielen.
Einen Arduino smart robot car bewegen lernen.
- Breadboard 830 points
- Arduino Nano
- Jumper wires
- 2 Pushbutton switches (12 mm)
- 3 LEDS red, green, yellow
- 3 Resistors 270 ohm
- LDR
- Resistor 4.7k ohm
- Potentiometer 100k ohm
- Piezo buzzer passive 14x7
- Servo SG (MG) 90
- Ultrasonic Sensor HC-SR04
- LED bar/stick 8 x WS2812B
- Resistor 10k ohm





