Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
uc-welt:gscheiduino:02-ausgaenge [2016/01/04 13:41] – angelegt Hannes Jochriem | uc-welt:gscheiduino:02-ausgaenge [2024/02/06 09:43] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | [[uc-welt: | + | [[uc-welt: |
+ | |||
+ | ====== Kapitel 2: Ausgänge ====== | ||
+ | |||
+ | ===== Die Pins des AVR ===== | ||
+ | |||
+ | Folgende Frage taucht sehr häufig auf: Kann man jeden einzelnen Pin als Ein- oder Ausgang definieren, genau so, wie man gerade möchte? | ||
+ | |||
+ | Und die Antwort ist sehr einfach: Ja, man kann. Naja, zumindest, so lange der Pin ein I/O-Pin ist. Man kann natürlich nicht zB den Versorgungsspannungspin als Eingang verwenden... | ||
+ | |||
+ | Betrachten wir dazu das Datenblatt des Atmega328P, in dem folgendes steht: | ||
+ | |||
+ | //23 Programmable I/O Lines// | ||
+ | |||
+ | Das bedeutet, dass wir bis zu 23 Pins zur Verfügung haben, die wir nach Belieben als Ein- oder Ausgänge definieren können. Bauteil- und routingbedingt stehen uns auf dem Gscheiduino allerdings nur 20 zur Verfügung (zwei Pins gehen etwa verloren, da dort ein Quarz angeschlossen ist). | ||
+ | |||
+ | Die Bezeichnung dieser Pins steht auf der Platine des Gscheiduino bzw kann [[http:// | ||
+ | |||
+ | Der Grundzustand jedes I/O-Pins beim Einschalten lautet " | ||
+ | |||
+ | ===== Wir definieren die Richtung ===== | ||
+ | |||
+ | Damit wir einen Pin also als Ausgang verwenden können, müssen wir dem Controller mitteilen, dass wir das gerne tun würden. Dies geschieht sehr einfach durch folgenden Befehl: | ||
+ | |||
+ | <file c> | ||
+ | pinMode(PIN, | ||
+ | </ | ||
+ | |||
+ | Was wir da jetzt wo hinschreiben müssen, lernen wir mit diesem konkreten Beispiel: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Wir stecken einen 120-R-Widerstand in die Kontakte D3 und G3. Eine rote LED stecken wir wie folgt auf das Breadboard: Plus auf I3, Minus auf I4. | ||
+ | |||
+ | <note tip>Die Polarität der LED kann man [[bauteile: | ||
+ | |||
+ | Danach verbinden wir A3 mit Pin13 des Gscheiduino und F4 mit GND. | ||
+ | |||
+ | Dadurch erhalten wir folgenden Schaltplan: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Wenn Pin13 also Spannung liefert, leuchtet die LED, wenn Pin13 keine Spannung liefert, ist die LED aus. | ||
+ | |||
+ | Wir müssen also wie oben beschrieben, | ||
+ | |||
+ | <file c> | ||
+ | pinMode(13, OUTPUT); | ||
+ | </ | ||
+ | |||
+ | Nun passiert erst einmal gar nichts. Standardmäßig hat nämlich jeder Pin ab Definition den Pegel 0. | ||
+ | |||
+ | ===== Spannung aufschalten ===== | ||
+ | |||
+ | Ob das Beinchen jetzt Spannung liefert oder nicht geschieht wie folgt: | ||
+ | |||
+ | <file c> | ||
+ | digitalWrite(PIN, | ||
+ | </ | ||
+ | |||
+ | STATUS kann die Werte HIGH (Der Pin liefert Spannung) oder LOW (Der Pin liegt auf GND) annehmen. | ||
+ | |||
+ | Falls wir also die LED einschalten möchten, lautet das konkret für unseren Fall: | ||
+ | |||
+ | <file c> | ||
+ | pinMode(13, OUTPUT); | ||
+ | digitalWrite(13, | ||
+ | </ | ||
+ | |||
+ | Sobald wir Pin13 als Ausgang definiert haben, merkt er sich das und bleibt so lange ein Ausgang, bis wir daran etwas ändern. Es ist also vollkommen ausreichend, | ||
+ | |||
+ | Das gesamte Programm für unser LED-Beispiel sieht dann also so aus: | ||
+ | |||
+ | <file c kapitel02_led-an.ino> | ||
+ | void setup() | ||
+ | { | ||
+ | pinMode(13, OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | digitalWrite(13, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Soll die LED nicht leuchten, sieht das Programm so aus: | ||
+ | <file c kapitel02_led-aus.ino> | ||
+ | void setup() | ||
+ | { | ||
+ | pinMode(13, OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | digitalWrite(13, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Programmieren des Controllers ===== | ||
+ | |||
+ | Wir wählen nun " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Sollte diese Auswahl nicht zur Verfügung stehen, wird [[uc-welt: | ||
+ | |||
+ | Wir kopieren jetzt den Code, der die LED einschaltet komplett in die Oberfläche: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Nun stecken wir den Gscheiduino mit einem USB-AB-Kabel an den PC und wählen den richtigen COM-Port aus: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Die Nummer des Ports kann natürlich vom Beispiel abweichen, in der Regel wird aber nur das richtige Board angezeigt. | ||
+ | |||
+ | Wie [[uc-welt: | ||
+ | |||
+ | Nachdem dieser Schritt abgeschlossen ist, beginnt die LED zu leuchten. | ||
+ | |||
+ | ===== Laaangweilig... ===== | ||
+ | |||
+ | Ja, zugegebenermaßen leuchtet die LED. Das war's dann auch schon. Das einzige Spannende an der Geschichte ist die Spannung, die an der LED anliegt, ansonsten passiert ja noch nicht sonderlich viel hier... | ||
+ | |||
+ | Das werden wir jetzt ändern, wir lernen nämlich im [[uc-welt: |