Mikrocontroller programmieren – wie geht das eigentlich?

Ich fand den Gedanken an Mikrocontroller schon immer irgendwie faszinierend: So ein winziges Stück Elektronik kann einen Sensor auslesen, eine Lampe einschalten oder einen Motor steuern. Aber wie bekommt man so ein kleines Ding eigentlich dazu, das zu tun, was man möchte?

Im Grunde beginnt alles mit einem Programm. Der Mikrocontroller hat einen kleinen Prozessor und einen Speicher und wartet nicht darauf, dass man wie am PC irgendwo ein Programm anklickt. Stattdessen wird ein Programm auf den Controller übertragen, das er anschließend selbstständig ausführt.

Arduino zum Mikrocontroller programmieren

Für den Einstieg wird häufig ein Arduino verwendet. Das ist weniger kompliziert, als es zunächst klingt. Man schließt das Board per USB an den Rechner an und schreibt beispielsweise ein kleines Programm, das einen Ausgang einschaltet. Eine LED könnte dann so aussehen:

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);

  digitalWrite(13, LOW);
  delay(1000);
}

Das sieht zunächst vielleicht nach ziemlich viel Zauberei aus, aber eigentlich passiert hier etwas sehr Einfaches. In setup() wird festgelegt, was beim Start eingerichtet werden soll. In diesem Fall wird Pin 13 als Ausgang definiert.

Danach kommt loop(). Und der Name sagt eigentlich schon ziemlich gut, was passiert: Dieser Teil wird immer wieder ausgeführt.

Die Zeile digitalWrite(13, HIGH) legt an Pin 13 einen hohen Pegel an. Die LED kann dadurch eingeschaltet werden. delay(1000) wartet eine Sekunde. Danach wird der Pin mit LOW wieder ausgeschaltet und erneut eine Sekunde gewartet.

Und dann beginnt das Ganze wieder von vorne.

Genau dieses Prinzip finde ich eigentlich ganz schön: Der Controller arbeitet einfach immer wieder sein kleines Programm ab. Man kann ihm aber natürlich auch Eingaben geben. Ein Taster wird beispielsweise an einen Eingang angeschlossen. Dann kann das Programm prüfen, ob der Taster gedrückt wurde, und entsprechend eine LED einschalten.

Noch interessanter wird es mit Sensoren. Ein Temperatursensor liefert zum Beispiel einen Messwert. Der Mikrocontroller liest diesen Wert ein, verarbeitet ihn und kann anschließend etwas damit machen. Er könnte etwa einen Lüfter einschalten, wenn eine bestimmte Temperatur überschritten wird.

Vereinfacht gedacht sieht das dann ungefähr so aus:

Sensor messen
       ↓
Messwert auswerten
       ↓
Bedingung prüfen
       ↓
Ausgang schalten

Und genau daraus entstehen dann nach und nach die größeren Projekte. Erst eine LED, dann vielleicht ein Taster, danach ein Sensor und irgendwann ein Display, ein Motor oder mehrere Komponenten zusammen.

Was ich dabei wichtig finde: Man muss nicht zuerst ein Elektronik-Profi werden. Ein paar Grundlagen sollte man natürlich verstehen – was ein Eingang und ein Ausgang ist, was Spannung und Strom bedeuten und wie man Bauteile richtig anschließt. Aber vieles ergibt sich tatsächlich beim Ausprobieren.

Beim Programmieren selbst sind vor allem Dinge wie if-Bedingungen, Variablen, Schleifen und Funktionen wichtig. Damit kann man dem Mikrocontroller nach und nach immer genauer sagen, was er tun soll.

Zum Beispiel könnte man sinngemäß sagen:

wenn Temperatur größer als 30 °C:
    Lüfter einschalten
sonst:
    Lüfter ausschalten

Das ist eigentlich schon der Kern vieler kleiner Mikrocontroller-Projekte. Die Elektronik liefert Informationen, das Programm trifft Entscheidungen und die Ausgänge setzen diese Entscheidungen schließlich in der echten Welt um.

Und vielleicht ist genau das der Punkt, der mich daran so begeistert. Man schreibt nicht einfach nur Code, sondern sieht irgendwann, wie dieser Code etwas Reales macht. Ein kleines Programm kann plötzlich dafür sorgen, dass ein Licht angeht, ein Motor läuft oder ein Messwert auf einem Display erscheint.

Wenn man anfangen möchte, würde ich deshalb nicht mit einem komplizierten Projekt beginnen. Ein günstiges Arduino-Board, eine LED, ein Widerstand und ein paar Kabel reichen schon für die ersten Versuche. Danach kann man sich langsam vorarbeiten.

Und wenn etwas nicht funktioniert, gehört das vermutlich genauso dazu. Gerade bei Mikrocontrollern kann ein winziger Fehler reichen, damit überhaupt nichts passiert. Aber wenn man dann irgendwann den Fehler findet und das erste Mal wirklich etwas reagiert, ist das schon ein ziemlich gutes Gefühl.

Mich würde deshalb interessieren, wie ihr angefangen habt. Habt ihr mit Arduino begonnen oder direkt mit einem anderen Mikrocontroller? Und was war euer erstes Projekt, bei dem ihr gedacht habt: „Okay, jetzt habe ich langsam verstanden, wie das funktioniert.“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert