Arduino – Programmierung

Lesezeit 3 min.

Es ist unbestreitbar, dass der Arduino, von dem weltweit mehr als 10 Millionen Boards verkauft wurden, eine der beliebtesten Plattformen für die Programmierung ist.

Worum geht es bei der Arduino-Programmierung?

In diesem Artikel werden wir uns die Grundzüge der Erstellung von Programmcodes in der Arduino IDE-Umgebung ansehen. Wir werden auch einen Vergleich zwischen dem Beispielcode, der in der Arduino-IDE-Umgebung ausgeführt wird, und dem Code eines Programms, das denselben Hardwareprozess ausführt und in C geschrieben wurde, anstellen.

Bevor wir unser erstes Programm schreiben

Bevor wir uns dem ersten Entwurf des Programms zuwenden, sollten wir ein paar Worte über die Arduino-Plattform sagen. Es ist ein vielseitiges Werkzeug, das es dem Benutzer ermöglicht, Prototypen von programmierbaren elektronischen Geräten zu erstellen. Dank seiner immensen Popularität hat der Arduino einen großen Nutzerkreis gewonnen – vom Hobbybastler bis zum professionellen Ingenieur. Umfangreiches Zubehör in Form von Erweiterungsmodulen und Overlays, tausende von veröffentlichten Projekten und ein exzellenter technischer Support durch den Hersteller und die Online-Community sind Faktoren, die für den Kauf eines Arduino-Boards oder eines lizenzierten Klons besonders attraktiv sind. Ein integraler Bestandteil des Arduino-Ökosystems ist auch die dazugehörige Software, d.h. die Arduino IDE – eine integrierte Umgebung zur Erstellung von Programmcodes – und wir kommen gleich zum Beispielcode!

Beispielprogrammcode in der Arduino-IDE-Umgebung

Um zu veranschaulichen, wie die Arduino-Programmierung aussieht und worum es dabei geht, verwenden wir den folgenden kurzen Programmcode, dessen Aufgabe es ist, eine LED ein- und auszuschalten. Auf der Hardwareseite ist die LED über einen 330R-Widerstand, der den Stromfluss auf einen sicheren Wert begrenzt, mit der Anode des digitalen Pins ‘D2’ verbunden. Andererseits ist die Kathode der LED mit dem Massepin im “POWER”-Teil verbunden, d.h. “GND”. Der Programmcode hat die folgende Form:

				
					// Miganie dioda LED w srodowisku Arduino IDE 
void setup() //Wstepne ustawienia programu
{
  pinMode(2,OUTPUT); // Pin cyfrowy nr 2 ustawiony jako wyjscie
}

void loop() // Instrukcje programu wykonywane w petli
{
  digitalWrite(2,HIGH); // Pin cyfrowy nr 2 - stan wysoki - LED swieci
  delay(500); // Opoznienie o 500ms
  digitalWrite(2,LOW); // Pin cyfrowy nr 2 - stan niski - LED zgasl
  delay(500); // Opoznienie o 500ms
 }
				
			

Die Struktur des obigen Codes ist wie folgt. Jeder Text, der nach einem doppelten Schrägstrich geschrieben wird, wird vom Compiler ignoriert – dies sind Kommentare, die Ihnen helfen, den Programmcode zu verstehen und ihn übersichtlich zu halten. Der Abschnitt “void setup()” umfasst die anfänglichen Programmeinstellungen, die nur einmal, aber jedes Mal, wenn der Mikrocontroller mit der Ausführung des Programms beginnt, durchgeführt werden, so dass der Mikrocontroller “weiß”, wie seine Hardwarekonfiguration eingestellt ist, bevor das Programm ausgeführt wird. In unserem Fall besteht die einzige angegebene Einstellung darin, den digitalen Pin D2 mit dem Befehl pinMode() in den Ausgabemodus zu versetzen. Der Abschnitt void loop() hingegen enthält Anweisungen, die bei jedem Durchlauf der Schleife nacheinander ausgeführt werden. Hier verwendet das Programm die Anweisung digitalWrite(), um einen High-Zustand (5 V Spannung) an den digitalen Pin ‘D2’ zu projizieren, an den die Anode der LED über einen 330 R-Widerstand angeschlossen ist. Wenn diese Anweisung befolgt wurde, leuchtet die LED auf. Die nächste Anweisung, d.h. delay() hält die Programmschleife für 500ms an – die Wirkung der vorangegangenen Anweisung bleibt für diese Zeit erhalten – die LED leuchtet weiter. Nach Ablauf dieser Zeit wird ein logischer Zustandswechsel am Pin ‘D2’ durchgeführt, an dem gerade ein High-Zustand ausgegeben wurde. Jetzt erlischt die LED, wenn der ‘D2’-Pin auf Low geschaltet wird. Die letzte Anweisung in der Schleife ist wieder eine Verzögerung, die dazu führt, dass die Programmschleife für einen Zeitraum von 500ms angehalten wird – die Wirkung der vorangegangenen Anweisung, d.h. der niedrige Zustand an der Anode der LED, bleibt auch für diese Zeit erhalten. Nach der Ausführung dieser Anweisung wird der Abschnitt void loop() wieder komplett von vorne ausgeführt.

Programmcode für die Steuerung einer LED-Leuchte in der Sprache C

Zum Vergleich betrachten wir nun einen Programmcode, der genau das gleiche Endergebnis liefert wie ein in der Arduino-IDE-Umgebung geschriebener Code, der aber in C geschrieben wurde – einer der beliebtesten Low-Level-Sprachen. Ein Beispiel Programmcode in C, der für den ATMEGA 328P-Mikrocontroller geschrieben wurde und die gleichen Pins verwendet, lautet wie folgt:

				
					#define F_CPU 16000000UL // Czestotliwosc zegara ustawiona na 16MHz
#include <avr/io.h> // Inicjalizacja biblioteki wejsc/wyjsc
#include <util/delay.h> // Inicjalizacja biblioteki opoznienien
int main() // Glowny zestaw instrukcji wykonywanych w petli 

{
  DDRD |= 1 << PIND2; // Pin nr 2 rejestru D jako wyjscie
  while (1) // Petla while zawierajaca ponizsze warunki
  {
    PORTD |= 1 << PIND2; // Pin nr 2 rejestru D - stan wysoki - LED swieci
    _delay_ms(500); // Opoznienie o 500ms
    PORTD &= ~(1 << PIND2); // Pin nr 2 rejestru D - stan niski - LED zgasl
    _delay_ms(500); // Opoznienie o 500ms
  }
}
				
			

Im ersten Teil des Programms müssen wir die Frequenz des Taktgebers angeben, der den Mikrocontroller taktet. Der ATMEGA 328P hat einen eingebauten internen Oszillator, der den Mikrocontroller mit einer maximalen Frequenz von 8MHz takten kann. Wie beim Arduino haben wir auch hier einen externen Quarzresonator mit einer Frequenz von 16 MHz verwendet. Als Nächstes werden Bibliotheken hinzugefügt, die die Eingangs-/Ausgangsports und Verzögerungen des AVR-Mikrocontrollers unterstützen. Wenn wir in C schreiben, operieren wir normalerweise auf Registern – hier haben wir in Pfeilrichtung die Zuweisung von Pin Nr. 2 in Port D als Ausgabe verwendet. Das Programm führt dann eine unendliche while-Schleife aus, in der die eingestellten Bedingungen den Pin 2 am Anschluss D in den High-Zustand versetzen sollen. Pin Nr. 2 von Port D ist im Arduino als Pin Nr. 2 im Abschnitt “DIGITAL” zugewiesen. Vor dem nächsten Maschinenzyklus des Mikrocontrollers wird eine Verzögerung von 500ms eingefügt – beachten Sie, dass wir in C, anders als in der Programmiersprache für Arduino, Unterstriche und die Zeiteinheit der eingefügten Verzögerung schreiben, d.h. “_delay_ms()” anstelle von Arduinos “delay()”. Während dieser Verzögerungszeit wird an Pin 2 des Anschlusses D ein High Zustand aufrechterhalten. Wenn die Ausführung dieses Befehls abgeschlossen ist, wird Pin 2 an Anschluss D durch das Bitprodukt “&=” und die Negation “~” des Befehls in den Low-Zustand versetzt, um Pin 2 an Anschluss D in den High-Zustand zu versetzen. Erneut wird ein Befehl eingefügt, der die Ausführung des nächsten Befehls um 500 ms verzögert, und das Programm beginnt mit der Ausführung von vorne.

Arduino oder C?

Wie man schon an den kurzen Beispielen oben sehen kann, ist der Programmcode in C detailreicher als der Code in der Arduino IDE, der auf der Syntax der C/C++ Sprachen basiert. Das liegt daran, dass C eine Low-Level-Sprache ist und daher mehr Aufmerksamkeit für die Hardware- und Softwarekonfiguration erfordert. Wenn man Arduino mit der klassischen C-Programmierung vergleicht, kann man sagen, dass wir die meisten Dinge bereits vollständig umgesetzt haben. Das ist keine Überraschung – der Arduino wurde genau zu diesem Zweck entwickelt, um das Prototyping zu erleichtern, ohne sich in die Ecken und Winkel der Hardware vertiefen zu müssen. Dennoch ist es nützlich, sowohl mit der einen als auch mit der anderen Programmiersprache vertraut zu sein, wobei C zwar mehr Geduld beim Erlernen erfordert, aber vielseitiger ist und die Programmierung von viel mehr Mikrocontrollern ermöglicht.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Stimmenzahl: 3

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Teilen:

Picture of Mateusz Mróz

Mateusz Mróz

Träumer, Reiseliebhaber und Fan von technischen Innovationen. Er möchte seine Ideen für Raspberry Pi und Arduino in die Tat umsetzen. Hartnäckiger Selbstlerner - er bittet nur um Hilfe, wenn ihm die Suchmaschineneinträge ausgehen. Glaubt, dass mit dem richtigen Ansatz jedes Ziel erreicht ist.

Siehe mehr:

Schreibe einen Kommentar

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

Aus Sicherheitsgründen ist die Verwendung des reCAPTCHA-Dienstes von Google erforderlich, der den Google-Datenschutzbestimmungen und Nutzungsbedingungen unterliegt..