Abo
  • Services:
Anzeige
Das verkabelte Touchboard
Das verkabelte Touchboard (Bild: Fabian Hamacher/Golem.de)

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:

  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. }

Anzeige

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 

eye home zur Startseite
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...



Anzeige

Stellenmarkt
  1. Robert Bosch GmbH, Hildesheim
  2. Robert Bosch GmbH, Stuttgart-Feuerbach
  3. Debeka Kranken- und Lebensversicherungsverein a. G., Koblenz
  4. DATAGROUP Business Solutions GmbH, Hamburg, München, Siegburg bei Köln, Ditzingen bei Stuttgart


Anzeige
Spiele-Angebote
  1. 19,99€
  2. 27,99€
  3. 11,49€

Folgen Sie uns
       


  1. Frontier Development

    Weltraumspiel Elite Dangerous für PS4 erhältlich

  2. Petya-Ransomware

    Maersk, Rosneft und die Ukraine mit Ransomware angegriffen

  3. Nach Einigung

    Bündnis hält Facebook-Gesetz weiterhin für gefährlich

  4. SNES Classic Mini

    Nintendo produziert zweite Retrokonsole in höherer Stückzahl

  5. 5 GHz

    T-Mobile startet LTE-U im WLAN-Spektrum mehrerer US-Städte

  6. Dirt 4 im Test

    Vom Fahrschüler zum Rallye-Weltmeister

  7. Ende der Störerhaftung

    Koalition ersetzt Abmahnkosten durch Netzsperren

  8. NNabla

    Sony gibt Deep-Learning-Bibliothek frei

  9. Mobilfunk

    Deutsche Telekom betreibt noch 9.000 Richtfunkstrecken

  10. Global Internet Forum

    Social-Media-Verbund gegen Terrorpropaganda



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Mobile-Games-Auslese: Ninjas, Pyramiden und epische kleine Kämpfe
Mobile-Games-Auslese
Ninjas, Pyramiden und epische kleine Kämpfe
  1. Ubisoft Chaoshasen, Weltraumaffen und die alten Ägypter
  2. Monument Valley 2 im Test Rätselspiel mit viel Atmosphäre und mehr Vielfalt
  3. Mobile-Games-Auslese Weltraumkartoffel und Bilderbuchwanderung für mobile Spieler

Mesh- und Bridge-Systeme in der Praxis: Mehr WLAN-Access-Points, mehr Spaß
Mesh- und Bridge-Systeme in der Praxis
Mehr WLAN-Access-Points, mehr Spaß
  1. Eero 2.0 Neues Mesh-WLAN-System kann sich auch per Kabel vernetzen
  2. BVG Fast alle Berliner U-Bahnhöfe haben offenes WLAN
  3. Broadcom-Sicherheitslücke Vom WLAN-Chip das Smartphone übernehmen

Neues iPad Pro im Test: Von der Hardware her ein Laptop
Neues iPad Pro im Test
Von der Hardware her ein Laptop
  1. iFixit iPad Pro 10,5 Zoll intern ein geschrumpftes 12,9 Zoll Modell
  2. Office kostenpflichtig Das iPad Pro 10,5 Zoll ist Microsoft zu groß
  3. Hintergrundbeleuchtung Logitech bringt Hülle mit abnehmbarer Tastatur für iPad Pro

  1. Hat es wieder zum täglichen Anti-US Aufreger...

    crispie | 20:45

  2. Re: Kein Wunder, wenn man bedenkt, was letzte...

    Cok3.Zer0 | 20:43

  3. Re: Und das heißt jetzt was?

    ChristianKG | 20:43

  4. Re: Crossplay?

    SkynetworX | 20:42

  5. Re: 1080p is schon a bißerl wenig bei der Größe

    Braineh | 20:38


  1. 17:35

  2. 17:01

  3. 16:44

  4. 16:11

  5. 15:16

  6. 14:31

  7. 14:20

  8. 13:59


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel