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. Hannover Rück SE, Hannover
  2. über duerenhoff GmbH, Rüsselsheim

  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
Blu-ray-Angebote
  1. (u. a. John Wick, Sicario, Deepwater Horizon, Die große Asterix Edition, Die Tribute von Panem)
  2. (u. a. 3 Blu-rays für 15€, 2 Neuheiten für 15€)

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
       


iOS 12 angesehen

Das neue iOS 12 bietet Nutzern die Möglichkeit, die Bildschirmzeit besser kontrollieren und einteilen zu können. Auch Siri könnte durch die Kurzbefehle interessanter als bisher werden.

iOS 12 angesehen Video aufrufen
Athlon 200GE im Test: Celeron und Pentium abgehängt
Athlon 200GE im Test
Celeron und Pentium abgehängt

Mit dem Athlon 200GE belebt AMD den alten CPU-Markennamen wieder: Der Chip gefällt durch seine Zen-Kerne und die integrierte Vega-Grafikeinheit, die Intel-Konkurrenz hat dem derzeit preislich wenig entgegenzusetzen.
Ein Test von Marc Sauter

  1. AMD Threadripper erhalten dynamischen NUMA-Modus
  2. HP Elitedesk 705 Workstation Edition Minitower mit AMD-CPU startet bei 680 Euro
  3. Ryzen 5 2600H und Ryzen 7 2800H 45-Watt-CPUs mit Vega-Grafik für Laptops sind da

HP Elitebook 840 und Toshiba Tecra X40: Es kann nur eines geben
HP Elitebook 840 und Toshiba Tecra X40
Es kann nur eines geben

Nicht nur Lenovo baut gute Business-Notebooks, auch HP und Toshiba haben Produkte, die vergleichbar sind. Wir stellen je ein Modell der beiden Hersteller mit ähnlicher Hardware gegenüber: das eine leichter, das andere mit überlegenem Akku - ein knapper Gewinner nach Punkten.
Ein Test von Oliver Nickel

  1. Portégé X20W-D-145 Toshiba stellt alte Hardware im flexiblen Chassis vor
  2. Tecra X40-E-10W Toshibas 14-Zoll-Thinkpad-Pendant kommt mit LTE
  3. Dell, HP, Lenovo AMDs Ryzen Pro Mobile landet in allen Business-Notebooks

Kaufberatung: Der richtige smarte Lautsprecher
Kaufberatung
Der richtige smarte Lautsprecher

Der Markt für smarte Lautsprecher wird immer größer. Bei der Entscheidung für ein Gerät sind Kaufpreis und Klang wichtig, ebenso die Wahl für einen digitalen Assistenten: Alexa, Google Assistant oder Siri? Wir geben eine Übersicht.
Von Ingo Pakalski

  1. Amazon Alexa Echo Sub verhilft Echo-Lautsprechern zu mehr Bass
  2. Beosound 2 Bang & Olufsen bringt smarten Lautsprecher für 2.000 Euro
  3. Google und Amazon Markt für smarte Lautsprecher wächst weiter stark

    •  /