Winterprojekt: LED there be light – Aufbau der Anzeige

Die Grundlegende Hardware liegt vor und die Software ist eingerichtet. Also wird das Winterprojekt Digitaluhr nun konkreter. Im Folgenden soll die Anzeige entstehen, die ich schrittweise entwickeln möchte. Zunächst mit einer externen, blinkenden LED, wie in diesem Film.

Die technische Basis

Die Ziffern der Uhr werden mit 7-Segmentanzeigen aufgebaut. Zuerst beginne ich mit der Ansteuerung einer einzelnen externen LED. Die späteren Ziffern sind genauso zu betreiben. Die Segmentanzeigen bestehen allerdings aus mehrere Dioden.

Das aktive Element: die LED

LED ist die Abkürzung für light-emitting Diode, zu deutsch Licht-emittierende Diode. Inzwischen kennen wir sie als Strom sparende Alternative zu Glühlampen. Die Stromsparer bestehen dabei aus den eigentlichen Leuchtdioden und ein wenig Elektronik.

Aktives Bauelement LED
Eine blaue LED

Eine einzelne LED aus dem Elektronik-Laden sieht z.B. aus wie im folgenden Bild. Es gibt sie in unterschiedlichen Größen.

Als Diode leitet sie nur in eine Richtung. Die Anode ist mit dem Pluspol zu verbinden, die Kathode mit dem Minuspol. Nur bei dieser Polung leuchtet die LED. Sollte eine Leuchtdiode bei einem Aufbau also nicht wie erwartet funktionieren, sollte deshalb der Steckrichtung überprüft werden. Die Anode ist im Build am längeren Anschluss zu erkennen.

Die LED leuchtet ab einer bestimmten Spannung, die von der Farbe abhängig ist (siehe auch Elektronik Kompendium). Für rote Dioden ist das 1,6 Volt. Bei blauen wie im Beispiel immerhin schon 2,9 Volt. Erst nachdem diese Spannung überschritten ist, leuchtet die Diode. Die Betriebsspannung des Arduino beträgt nun 5V. Das ist über der Grenzspannung, aber auch oberhalb der zulässigen Marke von ca. 4V. Deshalb ist für Leuchtdioden regelmäßig ein Vorwiderstand erforderlich.

Der Widerstand

Strom begrenzen, Spannungen teilen, Widerstände sind passive Bauteile und werden häufiger gebraucht. Hier eben als Vorwiderstand zur LED. Details über Widerstände gibt es z.B. auf Wikipedia. Hier gibt es unter Anderem auch den Farbcode, mit dem der Wert eines Widerstandes ablesbar ist.

Größe des Torwiderstand ermitteln

Die Grundlagen der Widerstandsberechnung können im Internet gefunden werde, beispielsweise im Elektronik Kompendium. Des Weiteren findet sich dort ein Widerstandsrechner. Am Widerstand sollen 5 – 2,9 = 2,1 Volt abfallen also quasi “vernichtet werden”. Die LED benötigt einen Strom zwischen 10 und 20 mA. Der Widerstandsrechner schlägt hier 18 mA vor. Das ist nicht der maximal mögliche Wert, ein Sicherheitsabstand schadet aber nicht.

Mit Hilfe des Ohmschen Gesetzes ergibt sich aus 2,1 Volt / 0,018 A = 116,66 Ohm. Sicherheitshalber sollte dieser Wert eher auf- als abgerundet werden. Der nächste Wert aus den typischen Reihen ist dann 120 Ohm (Farbcode braun, rot, braun).

Der Aufbau

Auf Bilder und Videos, wie das in der Einleitung, ist der Aufbau eher schwer zu erkennen. Deshalb möchte ich den Aufbau in Schalt- und Steckplänen dokumentieren. Mit Hilfe von Fritzing – einem freien Programm – ist das Ergebnis durchaus ansehnlich.

Schaltplan

Schaltplan externe LEDDer Schaltplan enthält nur die wesentlichen Informationen. In diesem Fall das Arduino-Board, den Widerstand, die Leuchtdiode und natürlich die Verbindungen der Bauteile.

Für die externe Ansteuerung, habe ich den digitalen Ausgang zwölf gewählt. Als Programm dient wieder Blink wie im letzten Beitrag, nur ist der Ausgang geändert, damit ist nachvollziehbar, dass die Programmänderung wirksam ist.

Am Ausgang direkt ist der Widerstand mit einem der beiden Drähte angeschlossen, die andere Seite führt zur Anode der Leuchtdiode, der Anode. Im Bild oben war das der längere der beiden Anschlüsse. Die andere Seite wird an Masse (Englisch “ground” – GND) am Board angeschlossen. Das Symbol der Diode deutet als Pfeil die Flussrichtung an. Schaltet das Programm den Ausgang nun auf an, high, 5 Volt, so heutet die LED.

Der Aufbau

Der Aufbau – wie im Video der Einleitung zu erkennen – ist erst mal auf einem Steckbord realisiert.

Aufbau auf der Steckplatine

Wichtig ist hier auf die richtige Polung der LED zu achten. Falls sie nicht wie erwartet blinkt, könnte ein drehen helfen.

In der Entwicklungsumgebung kann nun, wie im letzten Blog, das Blink-Programm aufgerufen werden. Hierin ist nun die Portnummer sowohl in setup() als auch in loop() von 13 auf 12 zu ändern. Hochladen in den Arduino und schon geht es los.

Als nächstes geht es weiterhin um die Anzeige der Digitaluhr. Anstelle der einzelnen LED soll dann eine 7-Segementanzeige Ziffern anzeigen.

Bisherige Beiträge

 

 

 

 

 

 

 

Winterprojekt: Setup Arduino-Programmierung

Der Arduino Uno ist eingetroffen. Nun kann es mit dem Winterprojekt weitergehen. Zuvor ist aber etwas Installationsaufwand zu treiben.

Für den Uno gibt es eine Entwicklungsumgebung, die weiterhin auch für andere Controller verwendbar ist. Auf der Homepage finden sich neben vielen Informationen und Anleitungen die Download-Seite mit dem Installer der IDE. Das ist die Abkürzung für integrierte Entwicklungsumgebung. Sie kann hier jeder passend zum jeweiligen Betriebssystem herunterladen.

Der Arduino unterhält sich technisch über eine serielle Schnittstelle, wie sie bei den ersten Mäusen benutzt wurde. Die gibt es heute aber an keinem Rechner mehr. Aber es gibt USB, den universellen seriellen Bus. Dafür bringt der Installer gleich einen passenden Treiber für die Kommunikation des Arduino mit dem Computer mit. Die USB-Geräte unterhalten sich auch seriell und deshalb sorgt der Treiber für eine Übersetzung zwischen den beiden seriellen Varianten.

Hinweis:
Bei einer Internetsuche können zwei Seiten gefunden werden: arduino.cc und arduino.org. Auch in die Welt der offenen Soft- und neuerdings auch Hardware sind die Menschen sich ebenfalls nicht immer einig. Das ist hier genauso. Ich bevorzuge die erste Adresse. Sie ist die ursprüngliche und ich vermute deshalb wirken mehr Menschen mit. Das lässt mehr Stabilität erwarten.

Aufbau

Steckt man ein neues USB-Gerät an einen Computer, dauert es immer einen Moment bis es erkannt wird. Die IDE muss den Arduino ebenfalls erkennen, folglich stecke ich ihn an den Rechner bevor ich die Umgebung starte.

Die Installation ist abgeschlossen. Der Uno ist mit dem Computer verbunden und anschliessend die IDE gestartet. Zeit das Zusammenspiel der beiden zu testen. Bei Programmiersprachen ist es üblich, zunächst ein “Hallo World” auszugeben. Klingt albern, zeigt aber deutlich: die Umgebung ist eingerichtet und funktioniert. Der Arduino hat keinen Bildschirm für eine Ausgabe, aber eine kleine Leuchtdiode auf der Platine. Das mitgelieferte Beispielsprogramm Blink läßt diese Diode blinken.

Arduino-IDE

Und da ist auch schon die erste Hürde. Der Arduino ist mit dem Rechner verbunden, bloß das die  Diode auf dem Board bereits zu blinken beginnt. Das heisst, der Hersteller verwendet dieses Programm offensichtlich für den Test des Aufbaus. Das stört aber nur bedingt. Das Blinken ist gleichmäßig und das Programm kann einen abweichenden Rhythmus vorgeben, so dass ein Unterschied zu erkennen ist.
Nun also erst mal die IDE starten. Im erscheinen Fenster ist ein Programmrumpf zu sehen. Darüber befinden sich Icons. Das Häkchen-Icon ganz Links überprüft die KorreStartfenster der IDEktheit eines Programmes. Es folgt das Icon, dass ein Programm auf das Board überträgt. Die folgenden dienen dem Öffnen, Speichern und beginnen neuer Programmdateien. Die IDE verrät die Funktion in einem Hilfetext, sobald der Mauszeiger über den Icon verweilt. Unter dem Programmcode-Fenster befindet sich die Konsole. Sie enthält die Ausgaben der Umgebung. Fortschritt beim Verarbeiten und Übertragen oder entdeckte Fehler im Code.

Beim öffnen eines neuen Programms – die Arduino IDE nennt dies Sketch – sind die Rümpe einer setup() und der loop()-Funktion zu erkennen. Für setup() gilt: der Name ist Programm. Hier können Variablen oder Hardware initialisieren werden. Die loop()-Funktion wird in einer Endlosschleife ausgeführt und enthält das, was der Controller verrichten soll.

Konfiguration

Bevor das Blink-Programm gestartet wird, ist die Entwicklungsumgebung noch zu konfigurierten. Im Menü “Werkzeuge” stelle ich unter “Platine” den “Arduino/Genunio Uno” ein. Unter Port ist die serielle Schnittstelle auszuwählen, die der Treiber zur für die Kommunikation mit dem Board bereitstellt. Bei meinem Mac heisst sie “/dev/usbmodem411” auf Windows erscheint ein “COM” gefolgt von einer Nummer. Im Idealfall weisst die IDE darauf hin, dass mit Port ein Board verbunden ist.

Blinkprogramm aktivieren

Das Test-Programm, “Blink”, ist eins von mehren mitgelieferten Beispielen. Es ist wie im Bild gezeigtPfad zum Blinkprogramm im Datei-Menü zu finden. Die Beispiele liefern Vorlagen für die verschiedenen Themen, in denen sich angehende Bastler zu unterschiedlichen Themen orientieren können.

Alldieweil ist das Testprogramm Blink geöffnet. An Pin 13 ist die Leitdiode (LED) auf dem Board angeschlossen. Deshalb definiert die setup()-Funktion diesen Pin als Ausgang. In loop() wird nun

  1. die LED eingeschaltet,
  2. eine Sekunde gewartet,
  3. die LED ausgeschaltet,
  4. wieder eine Sekunde gewartet
  5. und das ganze beginnt von vorn.

Damit eine die Wirkung des Programmes zu sehen ist, verändere ich das An-/Aus-Verhältnis der LED zu

void loop() {
  digitalWrite(13, HIGH);
  delay(200); // warte nur kurz
  digitalWrite(13, LOW);
  delay(800); // pausiere deutlich länger
}

Noch einem Klick auf das Hochladen-Icon, anschliessend sind in der Konsole die IDE-Aktivitäten zu verfolgen: Übersetzen und Packen des Programmes und die folgende Übertragung. Sobald sie startet, ist ein “Flimmern” zweier Kontrolle-LEDs auf dem Board zu erkennen. Anschließend blinkt die Diode auf dem Board nicht mehr gleichmäßig, sondern blitzt entsprechend kurz auf.

Ein Programm wurde übertragen, anschliessend wird es ausgeführt und die LED blitzt.