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. Gartenbau-Versicherung VVaG, Wiesbaden
  2. Lidl Digital, Neckarsulm

  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. (u. a. The Witcher 3 GotY 24,69€, Runer 12,34€, Superhot 14,19€)
  2. 79,99€
  3. (-88%) 2,49€

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
       


HTC Vive Pro - Test

Das HTC Vive Pro ist ein beeindruckendes Headset und ein sehr gutes Gesamtkonzept. Allerdings zweifeln wir am Erfolg des Produktes in unserem Test - und zwar wegen des sehr hohen Kaufpreises und fehlenden Zubehörs.

HTC Vive Pro - Test Video aufrufen
Physik: Maserlicht aus Diamant
Physik
Maserlicht aus Diamant

Ein Stickstoff-Fehlstellen-basierter Maser liefert kontinuierliche und kohärente Mikrowellenstrahlung bei Raumtemperatur. Eine mögliche Anwendung ist die Kommunikation mit Satelliten.
Von Dirk Eidemüller

  1. Colorfab 3D-gedruckte Objekte erhalten neue Farbgestaltung
  2. Umwelt China baut 100-Meter-Turm für die Luftreinigung
  3. Crayfis Smartphones sollen kosmische Strahlung erfassen

Underworld Ascendant angespielt: Unterirdische Freiheit mit kaputter Klinge
Underworld Ascendant angespielt
Unterirdische Freiheit mit kaputter Klinge

Wir sollen unser Können aus dem bahnbrechenden Ultima Underworld verlernen: Beim Anspielen des Nachfolgers Underworld Ascendant hat Golem.de absichtlich ein kaputtes Schwert bekommen - und trotzdem Spaß.
Von Peter Steinlechner

  1. Otherside Entertainment Underworld Ascendant soll mehr Licht ins Dunkle bringen

Datenschutz: Der Nutzer ist willig, doch die AGB sind schwach
Datenschutz
Der Nutzer ist willig, doch die AGB sind schwach

Verbraucher verstehen die Texte oft nicht wirklich, in denen Unternehmen erklären, wie ihre Daten verarbeitet werden. Datenschutzexperten und -forscher suchen daher nach praktikablen Lösungen.
Ein Bericht von Christiane Schulzki-Haddouti

  1. Soziales Netzwerk Facebook will in Deutschland Vertrauen wiedergewinnen
  2. Denial of Service Facebook löscht Cybercrime-Gruppen mit 300.000 Mitgliedern
  3. Facebook-Anhörung Zuckerbergs Illusion von der vollen Kontrolle

    •  /