Erste Schritte mit der Programmierung eines Mikrocontrollers unter Linux (Arduino Nano)

Viele Leute wissen nicht, dass in Computern, Autos, MP3-Playern und vielen weiteren technischen Geräten, ja sogar in der Autowaschanlage, so genannte Mikrocontroller eingebaut sind.

Was ist ein Mikrocontroller? Ein Mikrocontroller ist nichts anderes, als ein Chip, der so ähnlich funktioniert wie ein Computer. Der Unterschied ist bloß, dass ein Mikrocontroller deutlich kleiner ist und auch nicht so viele Features bietet wie ein Prozessor, sprich: eine CPU.

Nun ja, da hab ich mir ein tolles Buch gekauft über Mikrocontroller und gleich losgelegt. Für mein erstes Projekt habe ich folgende Dinge gebraucht:

ca. 20-30 Steckbrücken, eine Box mit verschiedenen Widerständen (insbesondere müssen Widerstände mit 100-500 Ohm vorhanden sein), eine LED, ein 800-er Steckbrett oder am besten drei und selbstverständlich ein Arduino Nano Board mit ATMEGA 168 Chip. Das alles kostete mich etwa 40 Euro bei Amazon.

Unter Linux lädt man die Arduino IDE runter und installiert sie. Man verbindet mit einem USB Kabel das Board mit dem Computer und startet die Arduino IDE. Danach kann man mit “Werkzeuge… -> Boardinformationen” das Board erkennen lassen. Unter “Werkzeuge… -> Board” kann man “Arduino Nano” auswählen und unter “Werkzeuge… -> Prozessor” kann man “ATMEGA 168” wählen.

Man kann nun erste Beispielprogramme laufen lassen. Diese findet man unter “Datei… -> Beispiele”. Mit STRG + R kann man das Programm kompilieren lassen und mit STRG + U das Programm auf das Board brennen lassen.

Ich hab mir selbst ein Programm geschrieben, das eine LED blinken lässt. Vor die LED habe ich einen 220 Ohm Widerstand geschaltet. Auf der Seite eletronik-kompendium.de kann man einen LED-Widerstandsrechner finden. Je höher der Widerstand, desto besser, denn dann geht die LED nicht kaputt. Ist der Widerstand allerdings zu hoch, dann kann die LED auch nicht leuchten.

Der Code des Programms sieht folgendermaßen aus:

const byte D12 = 12;
int i = 1000;
bool plusorminus = true;

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

void loop() {
  if(plusorminus == true) i = i - 100;
  else i = i + 100;
  digitalWrite(D12, HIGH);
  delay(i);
  digitalWrite(D12, LOW);
  delay(i);

  if(plusorminus == true && i == 0) plusorminus = false;
  else if(plusorminus == false && i == 1000) plusorminus = true;
}

Wie die einzelnen PIN-Nummern belegt sind, das weiß ich immer noch nicht genau. Aber ich werde es noch rausfinden. Das Programm lässt die LED immer schneller blinken und dann wieder immer langsamer. Dies geschieht in einer Unendlichschleife.