Abo
  • Services:

LEDs ansteuern

Bislang haben wir die Funktion setLeds() nur aufgerufen. Werfen wir einen näheren Blick darauf, obwohl es dort eigentlich nicht viel zu sehen gibt:

Stellenmarkt
  1. Lidl Digital, Leingarten
  2. Vector Informatik GmbH, Regensburg

  1. void setLeds() {
  2.  
  3. for(int i = 0; LEDS > i; i++) {
  4. send_cmd(
  5. i,
  6. script[currentline].pin[i].mode,
  7. script[currentline].pin[i].value
  8. );
  9. }
  10. }

Es werden die pin-Einträge der aktuellen Drehbuch-Zeile durchlaufen und dabei eine send_cmd-Funktion aufgerufen. Zur Erinnerung: Die tatsächliche Ansteuerung der LEDs übernimmt ein angeschlossener Arduino, send_cmd() ist dafür zuständig, dem Arduino zu sagen, wie er die LEDs ansteuern soll:

  1. void send_cmd(char pin, char mode, char value) {
  2. Wire.beginTransmission(23);
  3. char cmd[3];
  4.  
  5. cmd[0] = pin;
  6. cmd[1] = mode;
  7. cmd[2] = value;
  8.  
  9. Wire.write(cmd, 3);
  10. Wire.endTransmission();
  11.  
  12. }

Der Arduino ist als I2C-Slave am Touchboard angebunden. Über die Wire-Bibliothek können wir Kommandos über ein selbst definiertes Protokoll verschicken. Unser Protokoll ist sehr einfach aufgebaut: Wir können lediglich ein Kommandopaket, bestehend aus drei 8-bit-Werten, versenden. Der erste Wert ist die Nummer des anzusprechenden Pins (= LED), danach folgt die Angabe, was mit dieser LED passieren soll und zum Schluss ein Wert, dessen Interpretation vom Kommando abhängig ist.

Der Arduino als Leuchtsklave

Kommen wir damit zum Arduino. Er wurde am I2C-Bus als Slave angeschlossen, nimmt darüber selbstdefinierte Kommandos an und setzt diese entsprechend um. Das entsprechende Programm besteht also grob aus zwei Teilen: dem Empfang von I2C-Botschaften und der eigentlichen Logik zur LED-Ansteuerung. Das vollständige Sketch für den Arduino kann heruntergeladen werden.

Zentrales Verwaltungselement ist auch hier wieder ein Array, diesmal mit dem zusammengesetzten Datentyp Pin_Control, jeder Array-Eintrag repräsentiert einen GPIO-Pin des Arduino - und damit die entsprechend angebundene LED:

  1. struct Pin_Control {
  2. int pin;
  3. int mode;
  4. int value;
  5. int diff;
  6. };

Der Eintrag pin entspricht der jeweiligen Pin-Nummer. Der mode-Eintrag ist identisch mit den Varianten der LED-Ansteuerung beim Touchboard-Programm, wie auch value. Der diff-Wert dient zur internen Verwaltung.

Das Array wird über initPinControl für jeden GPIO-Pin initialisiert - standardmäßig ist jede LED aus (PC_MODE_LOW).

Dieses Array wird kontinuierlich über die Funktion processPins() ausgewertet. Sie durchläuft alle Einträge und ruft die entsprechenden Funktionen wie digitalWrite() und analogWrite() auf, um die Pins zu regulieren. Hier ausschnittsweise gezeigt:

  1. void processPins() {
  2. for(int i = 1; PINS >= i; i++) {
  3. switch(pins[i].mode) {
  4. ...
  5. case PC_MODE_PWM :
  6. analogWrite(pins[i].pin, pins[i].value);
  7. break;
  8. case PC_MODE_RISE :
  9. analogWrite(pins[i].pin, pins[i].value);
  10. if(255 == pins[i].value) {
  11. pins[i].mode = PC_MODE_HIGH;
  12. } else {
  13. pins[i].value = pins[i].value + pins[i].diff;
  14. }
  15. break;
  16. …
  17. }
  18. }
  19. }

 Musik abspielenKommandos empfangen 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11.  


Anzeige
Top-Angebote
  1. 249,90€ (bei Zahlung mit Masterpass zusätzlich 25€ Rabatt mit Gutschein: SOMMER25) - Bestpreis!
  2. (u. a. Toshiba N300 4 TB für 99€ statt 122,19€ im Vergleich, Samsung C24FG73 für 239€ statt...
  3. 49,97€ (Bestpreis!)

McFarmar 13. Jan 2015

Finde ich auch super. Ein Kollege hat ein Kind das im richtigen Alter ist - ich glaube...

Konstantin... 13. Jan 2015

den ich persönlich lustiger finde. Man benötigt zwar einen PC dafür, wenn ich aber...


Folgen Sie uns
       


Samsung Flip - Test

Das Samsung Flip ist ein Smartboard, das auf eingängige Weise Präsentationen oder Meetings im Konferenzraum ermöglicht. Auf dem 55 Zoll großen Bildschirm lässt es sich schreiben oder zeichnen - doch erst, wenn wir ein externes Gerät daran anschließen, entfaltet es sein komplettes Potenzial.

Samsung Flip - Test Video aufrufen
Automatisiertes Fahren: Der schwierige Weg in den selbstfahrenden Stau
Automatisiertes Fahren
Der schwierige Weg in den selbstfahrenden Stau

Der Staupilot im neuen Audi A8 soll der erste Schritt auf dem Weg zum hochautomatisierten Fahren sein. Doch die Verhandlungen darüber, was solche Autos können müssen, sind sehr kompliziert. Und die Tests stellen Audi vor große Herausforderungen.
Ein Bericht von Friedhelm Greis

  1. Nach tödlichem Unfall Uber entlässt 100 Testfahrer für autonome Autos
  2. Autonomes Fahren Daimler und Bosch testen fahrerlose Flotte im Silicon Valley
  3. Kooperationen vereinbart Deutschland setzt beim Auto der Zukunft auf China

Battlefield 5 Closed Alpha angespielt: Schneller sterben, länger tot
Battlefield 5 Closed Alpha angespielt
Schneller sterben, länger tot

Das neue Battlefield bekommt ein bisschen was von Fortnite und wird allgemein realistischer und dynamischer. Wir konnten in der Closed Alpha Eindrücke sammeln und erklären die Änderungen.
Von Michael Wieczorek

  1. Battlefield 5 Mehr Reaktionsmöglichkeiten statt schwächerer Munition
  2. Battlefield 5 Closed Alpha startet mit neuen Systemanforderungen
  3. Battlefield 5 Schatzkisten und Systemanforderungen

Razer Huntsman im Test: Rattern mit Infrarot
Razer Huntsman im Test
Rattern mit Infrarot

Razers neue Gaming-Tastatur heißt Huntsman, eine klare Andeutung, für welchen Einsatzzweck sie sich eignen soll. Die neuen optomechanischen Switches reagieren schnell und leichtgängig - der Geräuschpegel dürfte für viele Nutzer aber gewöhnungsbedürftig sein.
Ein Test von Tobias Költzsch

  1. Huntsman Razer präsentiert Tastatur mit opto-mechanischen Switches
  2. Razer Abyssus Essential Symmetrische Gaming-Maus für Einsteiger
  3. Razer Nommo Chroma im Test Blinkt viel, klingt weniger

    •  /