Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Download    Reaktionen    Spiele    Gadgets    Kontakt   




<<< C: Einleitung         C: GPIOs zur Signal-Ausgabe >>>

C: Basisfunktionen

Funktionen

Eine Funktion ist eine Anweisung für einen Computer, die zur Ausführung einen oder mehr Parameter benötigt. Möchten wir zum Beispiel einen bestimmten Pin eines Mikrocontrollers einschalten, so muss der Compiler wissen, welcher Pin denn nun gemeint ist. Der Befehl (=die Funktion) zum Schalten eines Pins lautet:
digitalWrite();
In den Klammern wird dem Compiler die Nummer des Pins mitgeteilt und auch, ob dieser Pin EIN- oder AUS-geschaltet werden soll. Beide Parameter werden durch ein Komma "," voneinader getrennt. Soll Pin nummer 7 an einem Arduino UNO EIN geschaltet werden, so lautet die vollständige Funktion:
digitalWrite(7, HIGH);
Soll Pin 10 AUS geschaltet werden, so lautet die Funktion:
digitalWrite(10, LOW);
Welche Pins am Arduino UNO wie bezeichnet sind, ist im Kapitel Hardware Arduino nachzulesen.
Im folgenden sind einige elementare Funktionsn aufgelistet, mit denen man GPIOs nutzen kann:

pinMode(pin, mode);

GPIOs können als EIN- oder AUSgang genutzt werden, mit diesem Befehl wird festgelegt, welcher dieser beiden Modi aktuell genutzt werden soll. Als erster Parameter wird die Nummer des zu schaltenden Pins übergeben und als zweiter Parameter der Modus. Für den Modus muss eine von drei möglichen Optionen gewählt werden:
  • OUTPUT - der Pin soll als Ausgang genutzt werden.
  • INPUT - der Pin soll als Eingang genutzt werden. Ist der entsprechende Pin nicht an eine Schaltung angeschlossen, springt der eingelesene Wert ständig zwischen HIGH und LOW beziehungsweise zwischen 1 und 0.
  • INPUT_PULLUP - der Pin soll als Eingang mit aktiviertem Pull-Up Widerstand genutzt werden. Ist der entsprechende Pin nicht mit einer Schaltung verbunden, wird beim Einlesen des Pins immer der Wert HIGH (1) zurückgegeben.
Soll Pin 9 als Eingang genutzt werden, so lautet der Funktionsaufruf:
pinMode(9, INPUT_PULLUP);
Wird Pin 7 als Ausgang benötigt, so lautet der Funtionsaufruf:
pinMode(7, OUTOUT);

digitalWrite(pin, value);

Ist ein Pin als Ausgang geschaltet, so kann per Software festgelegt werden, ob dieser eine Spannung (=HIGH) ausgeben soll oder nicht (=LOW). Ist der GPIO auf HIGH gesetzt, so liegt zwischen Masse und dem betreffenden Pin die Logikspannung an. Diese ist abhängig von dem verwendeten Microcontroller. Typische Werte sind +5V (Arduino UNO) und +3.3V (Arduimo GIGA). Zu übergeben sind die Nummer des Pins und der gewünschte Schaltzustand:
digitalWrite(4, HIGH);
legt eine Spannung von 5V an Pin 4 eines Arduino UNO oder 3.3V an Pin 4 eines Arduino GIGA.
digitalWrite(4, LOW);
schaltet Pin 4 aus, womit nach Ausführen der Funktion 0V zwischen Masse und Pin 4 anliegen.

digitalRead(pin);

Ist ein Pin als Eingang geschaltet, so kann in einem Programm mit der Funktion digitalRead() abgefragt werden, ob an diesem die Logikspannung anliegt oder nicht. Die Funktion benötigt lediglich einen Parameter, nämlich die Nummer des abzufragenden Pins. Es wird das Ergebnis der Abfrage an das Programm zurückgegeben:
voltagedetect = digtalRead(6);
Die Variable (=Speicherplatz) wird auf "1" gesetzt, wenn die Logikspannung an Pin 6 festgestellt wurde, andernfalls wird "voltagedetect" auf "0" gesetzt.
An dem betreffenden Pin kann im Prinzip jede beliebige Spannung zwischen 0V und der Logikspannung (+5V oder +3.3V) anliegen. Der Rückgabewert ist eine "1", wenn die Spannung oberhalb eines bestimmten Schwellwerts ist. Mehr dazu gibt's im Kapitel Schalter einlesen.

delay(milliseconds);

Es kommt ab und an vor, dass ein Mikrocontroller ein vorgegebenes Programm einfach viel zu schnell abarbeitet. An Stellen im Code, an denen eine Pause erwünscht ist, kann man die delay() Funktion einfügen. Übergeben wird die Pausenzeit in Millisekunden (1 Sekunde = 1000 Millisekunden):
delay(500);
An dieser Stelle wartet der Microcontroller 500 Millisekunden, also eine halbe Sekunde (0.5s), bevor der nächste Befehl abgearbeitet wird. Für Pausen kürzer als eine Millisekunde gibt's die Funktion delayMicroseconds(), deren Parameter die gewünschte Pause in Microsekunden ist (eine Sekunde = eine Million Microsekunden):
delayMicroseconds(500);
Hier beträgt die Pausenzeit nur eine halbe Millisekunde, also 0.0005 Sekunden.


<<< C: Einleitung         C: GPIOs zur Signal-Ausgabe >>>


Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Archiv    Download    Reaktionen    Spiele    Verweise    Gadgets    Kontakt    Impressum   





Twitter YouTube Hackaday Patreon TPO