Erste SeiteVorherige SeiteZurück zur ÜbersichtNächste SeiteLetzte Seite

Türen

Von außen betrachtet verhält sich der Mikrocontroller wie eine Burg mit zahlreichen Türen. Jede Tür kann grundsätzlich als Eingang oder als Ausgang dienen. Zur optimalen Verkehrssteuerung ist es sinnvoll, Ein- und Ausgänge zu trennen. Bei den alten Burgen war das vielleicht noch nicht üblich, bei den Mikroprozessoren schon: ein Ausgang kann nicht als Eingang benutzt werden – und umgekehrt.

→MC19: Türen und Tore

Die seitlichen Türen dienen entweder als Ein- oder als Ausgang. Das Hauptportal dient zur Versorgung, vergleichbar mit der Spannungsversorgung beim Arduino.

Welche Tür Ein- oder Ausgang ist, wird in dem Sketch genannten Programm bestimmt. In der Welt der Mikrocontroller ist nicht nur alles streng geregelt, sondern auch in Sein oder Nichtsein unterteilt. Entweder du bist oder du bist nicht. Die Lampe leuchtet oder nicht. Das sind alles die gleichen Aussagen: ein Mikrocontroller (wie ein Computer) kann nur zwischen 0 und 1 unterscheiden. Diese beiden Zustände werden durch eine elektrische Spannung ausgedrückt:

  • 0 entspricht einer Spannung von 0 V
  • 1 entspricht einer Spannung von ca. 5 V, also einer Toleranz über und unter 5 V

Ein Ausgang stellt eine Spannung von ca. 5 V oder 0 V zur Verfügung, je nach Sketch. Ein Eingang erwartet eine Spannung von 5 V oder 0 V, ebenfalls abhängig von dem Sketch. Ein Strom fließt jeweils, wenn der Stromkreis geschlossen ist.

In der realen Welt ist nicht alles 0 und 1, aber fast alles kann in Nullen und Einsen ausgedrückt werden. Dazu sind entsprechend viele davon erforderlich, die zu Gruppen (z.B. 8 Stück nebeneinander) zusammengefasst werden. Wenn etwas nur den Zustand 0 oder 1 annehmen kann, wird es als Bit bezeichnet. 8 Bit als Gruppe ergibt ein Byte. Unsere alphanumerischen Zeichen (Buchstaben a-z, Sonderzeichen und Ziffern) werden jeweils durch ein Byte ausgedrückt. Das Byte 0000 0101 entspricht der Ziffer 5 in unserem Dezimalzahlensystem. Wenn du alle möglichen Kombinationen von 0en und 1en in einem Byte erstellst, erhältst du 256. Platz genug für unsere überschaubare Anzahl an Zeichen.

Ein Computer verarbeitet nicht nur alphanumerischen Zeichen, sondern allgemein Daten. Schneller ist besser. Deswegen benötigt ein Computer viele Türen, die aktuellen Modelle haben 64 davon. Ein Mikrocontroller ist die Sparversion des Computers, er hat weniger Türen. Das Prinzip ist das gleiche. Die Türen des Mikrocontrollers werden als Ports bezeichnet.

Der Arduino Uno kann die Ports D0 bis D13 entweder als digitalen Ein- oder Ausgang verwenden. Die Definition der Ports erfolgt in dem verwendeten Sketch.

In dem Sketch →Ausgaenge.ino und den folgenden Versuchen dienen D0 und D13 als Ausgänge.

Schaltplan

Der Schaltplan zeigt eine reduzierte Darstellung dessen, was wir gerade benötigen. Es geht an dieser Stelle nicht darum, den Mikrocontroller detailgetreu abzubilden, sondern nur um Funktionsweisen. Also wer macht was?

→MC15: Digitale Ports.

D0 bis D13 sind mögliche digitale Ausgänge, also insgesamt 14.

Bauteile:

  • MC: Arduino Uno

Hinweis Die Spannungsversorgung des Arduino stammt aus dem USB-Anschluss. Ohne USB-Verbindung ist für den Betrieb des Arduino eine externe Gleichspannung erforderlich, z.B. in Form eines 9 V Steckernetzteils.

Sketch

Konstruktion →Ausgaenge.ino

  • D13 arbeitet in dem Sketch →Ausgaenge.ino als Ausgang, der den Pegel zwischen LOW und HIGH in einer Endlosschleife wechselt.
  • D0 ist (noch) nicht definiert!
  • Die interne LED des Mikrocontrollers leuchtet, wenn der Pegel am Ausgang D13 HIGH ist.
  • Die Spannung am Ausgang D13 beträgt ca. 4,7 V bei HIGH und 0 V bei LOW.
  • Den Sketch hast du bereits auf deinen Computer geladen, wenn du an der Strippe warst.
⇓→Ausgaenge.ino
int iPin1 = 13;                // Pin definieren
 
void setup() {               // Initialisierung
  pinMode(iPin1, OUTPUT);    // Pin als Ausgang
}
 
void loop() {                        // Endlosschleife
    digitalWrite(iPin1, HIGH);       // Pegel auf 1 setzen
    delay(2000);                     // Zeitverzögerung 2 Sekunden = 2000 ms
    digitalWrite(iPin1, LOW);        // Pegel auf 0 setzen
    delay(3000);                     // Zeitverzögerung 3 Sekunden = 3000 ms
}

Funktionsweise

Programm, Sketch und Code sind verschiedene Worte für die gleiche Sache. Sketch ist der von den Arduino Schöpfern gewählte Begriff für ein Programm.

Der Sketch ist in Anweisungen und Kommentare unterteilt.

Der dreiteilige Programmaufbau ist typisch für die Arduino Familie: Definition (Wer ist dabei?), Initialisierung (Was macht wer?) und Ausführung (Wie wird es gemacht?). Das Programm läuft nach dem Start vom Anfang bis zum Ende und dann wieder von vorne, also in einer Schleife. Wie jede gesprochene Sprache kennt eine Programmiersprache eine Anzahl an Wörtern mit fester Bedeutung sowie Regeln für den Satzaufbau. In einer Programmiersprache werden Wörter als Schlüsselwörter und Sätze als Anweisungen bezeichnet. Jede Anweisung wird mit einem Semikolon abgeschlossen.

  1. Die erste Anweisung
    int iPin1 = 13;

    definiert den verwendeten Port. Darin ist int das dafür vorgesehene Schlüsselwort, iPin1 ein frei wählbarer Name und 13 der zugewiesene Port.

  2. Die Initialisierung erfolgt mit dem Schlüsselwort void und der Funktion setup()
    void setup() {} 

    sowie der zweiten Anweisung

    pinMode(iPin1, OUTPUT);

    zwischen den geschweiften Klammern {}, die Port 13 als Ausgang bestimmt.

  3. Die Ausführung erfolgt mit dem Schlüsselwort void und der Funktion loop()
    void loop() {} 

    in einer Endlosschleife, ebenfalls mit den Anweisungen zwischen den geschweiften Klammern {}.

    digitalWrite(iPin1, HIGH);

    setzt den Pegel von Port D13 auf HIGH. Dann liegen an diesem Ausgang knapp 5 V an, aber nur für 2 Sekunden.

    delay(2000);

    ist eine Zeitverzögerung, ausgedrückt in Millisekunden.

    digitalWrite(iPin1, LOW);

    setzt den Pegel auf LOW, also auf 0 V, aber nur für 3 Sekunden.

    delay(3000);

    Nach dieser Zeitverzögerung ist das Programm durchlaufen und startet von vorne.

Versuche

Aktion Ändere in dem Sketch den Ausgang von 13 auf 0.

Aktion Lade den Sketch in den Mikrocontroller.

Reaktion Die interne LED des Mikrocontrollers leuchtet ohne Unterbrechung.

Aktion Überprüfe mit einem Spannungsmeßgerät den Pegel am Ausgang D0.

Reaktion Die Spannung am Ausgang D0 beträgt ca. 4,7 V bei HIGH und 0 V bei LOW.

Wie die Profis

Programmcode zu lesen und zu verstehen ist gewöhnungsbedürftig. Ein gut strukturierter Code mit einem Namensschema für alle Programmteile erleichtert den Umgang und reduziert die Hemmschwelle, sich mit dem Code zu befassen.

Was für die redaktionellen Inhalte die Konventionen von tolaris know-how sind, sind für die Codebeispiele die Programmierkonventionen.

Weiter ist unter den Profis ein Schema für die Abgrenzung von Codeteilen mit Einrückungen ungeschriebenes Gesetz, wie in dem Sketch →Ausgaenge.ino verwendet.

Erste SeiteVorherige SeiteZurück zur ÜbersichtNächste SeiteLetzte Seite

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • it/arduino-uno-01a/03.txt
  • Zuletzt geändert: 2018/12/25 16:51
  • von wh