Der Internetservice Wokwi.com ermöglicht es Mikrocontroller mit Hardwarekomponenten zu simulieren. Dabei kann unter anderem ein Arduino UNO R3 oder auch ein ESP32 simuliert werden.
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(750);
digitalWrite(ledPin, LOW);
delay(750);
}
Den oben eingegebenen Programmcode nennt man auch Sketch. Dieser liefert die Anweisungen, die der Mircrocontroller abarbeitet. Für die meisten Fälle hat sich dabei ein Standard durchgesetzt. Der Programmcode (hier in C++) besitzt mindestens die beiden Funktionen „setup“ und „loop“, diese dürfen auch leer sein, müssen aber vorliegen.
Die in der „setup“-Funktion aufgeführten Befehle werden bei Start des Mikrocontrollers ausgeführt. Anschließend wird in ständiger Wiederholung die „loop“-Funktion aufgerufen.
Das C++ ist hierfür um spezielle Befehle für die Mikrocontroller der ergänzt:
Der Sketch legt demnach zunächst den GPIO 13 als digitalen Ausgang fest und schaltet anschließend im 0,75 s Wechsel diesen auf +5 V und anschließend aus. Was soll man also beim Ausführen des Sketches sehen können? Die Besonderheit ist hier der GPIO 13. Beim Arduino UNO R3 ist an diesem GPIO die interne LED verbunden. Diese ist auf dem Board mit „L“ bezeichnet. Wenn am GPIO 13 5 V anliegen, leuchtet diese LED auf. Daher sollte diese LED regelmäßig blinken.
Über den „+“ Button lassen sich zu dem Arduino UNO weitere Hardwarekomponenten hinzufügen (s. Abbildung rechts).

|
Wenn alle Kabelverbindungen richtig hergestellt wurden, sollte die LED auf dem Breadboard gemeinsam mit der internen LED des Arduino blinken. An dieser Stelle ein paar Worte zu den Breadboard: In den beiden „Blöcken“ in der Mitte sind jeweils die fünf übereinander platzierten Anschlüsse miteinander verbunden. Daher kommt es in der Abbildung links überhaupt erst zu einem geschlossenen Stromkreis. Die beiden Anschlussleisten oben und unten sind jeweils horizontal miteinander verbunden, wie das auch die durchgehenden blauen und roten Linien nahelegen. Diese Anschüsse dienen meist dazu GND (-, blau) oder/und +5 V (+, rot) nur einmal am Arduino o. ä. abgreifen zu müssen. |
|
|
Diese Aufbauten sollten mit realen Komponenten so nicht aufgebaut werden, da die LEDs nur einen bestimmten Strom vertragen, der bei diesem Aufbau bei weitem übertroffen würde. Das würde echte LEDs innerhalb kurzer Zeit zerstören.
Statt die LEDs alle einzeln zu schalten, kann man auch mit einem Array arbeiten, in dem man die benutzten GPIOs einträgt, damit wird der Sketch kürzer und übersichtlicher.
|
|
In diesem Sketch wird für die Initialisierung (setup) und das eigentliche „Lauflicht“ die for-Schleife von C benutz. In beiden for-Schleifen wird die Integervariable i mit dem Startwertwert 0 (i=0) versehen und nach jedem Durchgang um Eins erhöht (i++). Die Schleife wird verlassen, bevor i den Wert vier erreicht (i<4). Der Wert von i adressiert anschließend bei den Arrays den entsprechenden Wert (ledPin[i]). Dabei beginnt die Zählung bei Null.
Will man bestimmte Funktionalitäten zu seinem Sketch hinzufügen, gibt es oft fertige Bibliotheken, die diese Funktionen bereithalten. Dies kann z.B. die Nutzung der WiFi-Funktionalität des ESP32 sein. Allerdings gibt es auch zu jedem Sensormodul mindestens eine Bibliothek, die eine einfache Nutzung ermöglicht. Gleiches gilt auch für Displays oder die Nutzung bestimmter Protokolle.
Da ein simulierter Temperatursensor maximal nett ist, wird nun ein OLED-Display 1306 genutzt. Für die einfache Ansteuerung werden zwei Bibliotheken von Adafruit verwendet, die Adafruit GFX und Adafruit SSD 1306. Diese lassen sich in Wokwi einfach hinzufügen, indem man zunächst über der Codeseite auf die Schaltfläche „Library Manager“ klickt. Anschließend fügt man über das Pluszeichen die beiden Bibliotheken hinzu. Das Ergebnis sollte wie folgt aussehen:

Für den Aufbau wird neben dem Arduino das Display benötigt. Dieses findet man wie zuvor die anderen Hardwarekomponenten. Bei Anschließen des Displays sollte beachtet werden, dass das 1306 mit 3,3 V arbeitet und daher nicht an die 5 V des Arduino angeschlossen werden sollte. Allerdings ist Wokwi hier genauso robust wie bei LEDs ohne Vorwiderstand, ein Hardwareschaden ist nicht zu erwarten. Es werden GND des SSD1306 mit GND des Arduino und VCC des SSD1306 mit 3.3V des Arduino verbunden, SCL geht auf A4 und SDA auf A5. Das Ergebnis sollte etwa wie in der nebenstehenden Abbildung aussehen.
|
|