====== Blinkenlights-Syntax serielle Ansteuerung ====== Das Blinkenlights kann mit dem SerialMatrix-Code direkt über USB angesteuert werden, hierfür gilt folgende Syntax: 1 Byte wird übertragen und dient als kompletter Steuer-Frame. Das MSB gibt an, ob es sich um einen Steuer oder Schaltbefehl handelt. ===== Schaltbefehl ===== Ein Schaltbefehl hat MSB = 0 und sieht wie folgt aus: | 0 | x | x | x | y | y | y | 1/0 (Ein, Aus) | xxx gibt die Koordinate in x-Postion an, yyy die Koordinate in y-Position. Das letzte Bit gibt an, ob die LED ein- oder ausgeschaltet werden soll. Soll zum Beispiel die erste LED in der Matrix eingeschalten werden, lautet das zu übertragende Byte: 0b00000001 (0x01) Der Nullpunkt der Koordinaten kann über den "Ecke wählen" Befehl eingestellt werden: {{:artikel:atmega_u-howto:bl_orientation.jpg?direct&300|}} ===== Steuerbefehl ===== Steuerbefehle sind Befehle zum Steuern und Abfragen von Zuständen der Matrix. Diese sind wie folgt aufgebaut: | 1 | A | # | # | # | # | # | # | Mit A = 1 kann der Zustand der LED abgefragt werden, der Befehl sieht wie folgt aus: | 1 | 1 | x | x | x | y | y | y | Als Antwort erhält man | 1 | x | x | x | y | y | y | 1/0 (Ein, Aus) | Die übrigen Steuerbefehle sind: ^ ^ ^ ^ ^ ^ ^ ^ ^ Verwendung ^ | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Erweiterter Befehlssatz (noch nicht implementiert)((eventuell für weitere Blinkenlights in einer Matrix, ...)) | | 0x80 |||||||| ::: | | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Clear Screen | | 0x81 |||||||| ::: | | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | Invert Screen | | 0x82 |||||||| ::: | | 1 | 0 | 0 | 0 | 0 | 1 | A | B | Ecke wählen ((0|0 Ausgangspunkt LED1, dreht im Uhrzeigersinn)) | | 0x84 - 0x87 |||||||| ::: | | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | LED-Matrizen durchnummerieren | | 0x88 |||||||| ::: | | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | Anzahl der LED Matrizen ausgeben (funktioniert nur wenn rückgekoppelt wird) | | 0x89 |||||||| ::: | | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | Die nächsten zwei Bytes gehen an eine andere LED-Matrix (1. Byte Adresse, 2. Byte Befehl) | | 0x8A |||||||| ::: | Auf alle verarbeiteten Befehle erhält man ein "ACK" (0x08), auf unbekannte Befehle ein "NAK" (0x15).