für die Firmware ‚maroon SW 1.1‘
Das Maroon Shield zeigt ASCII Texte auf dem 8×8 Display an. Um spezielle Funktionen zu aktivieren kann man die unten aufgeführten
Steuerzeichen über die serielle Schnittstelle (Rxd\Txd) zum Display schicken. Die einzelnen Steuerzeichen lassen sich auch in die Textausgaben dazwischen mischen.
Funktionstest \ Demo
Einschalttest: Einschalten oder die Reset Taste am Arduino drücken und das Maroon Shield meldet sich mit „Hi“ zurück.
Zum Testen der Funktionsfähigkeit: Taste FN oder Taste ENTER oder beide Tasten drücken und den Strom einschalten, oder die Reset Taste am Arduino drücken. Je nach Taste \ Kombination werden verschiedene Zeichen und Symbole angezeigt:
FN – Die aktuelle Versorgungsspannung und die Firmware Version
ENTER – Sonderzeichen und der Standardzeichensatz
FN + ENTER – Grafische Darstellungen und ein kleinerer Zeichensatz.
0.Zeichenerklärung
ASCII Zeichensatz (hex):
0x00 bis 0x1F : Steuerzeichen
0x20 bis 0x7F : Basis Zeichensatz
0x80 bis 0x9f : Steuerzeichen
0xA0 bis 0xFF : Erweiterter Zeichensatz
[ESC] Escape (hexadezimal: 0x1b \ dezimal: 27 \ oktal: 33)
[DLE] Data Link Escape (hexadezimal: 0x10 \ dezimal: 16 \ oktal: 20)
[SPACE] Leerzeichen “ “ (hexadezimal: 0x20 \ dezimal: 32 \ oktal: 40)
{n} einzelne Ziffer
{c} einzelnes Zeichen
{xxx} mehrere Zeichen
1.Serielle Parameter
38400 baud, 8 bit, no parity, 1 stop bit
Alle Ausgaben und Rückmeldungen erfolgen über die serielle Schnittstelle. Für die Printausgabe der Steuerkommandos wird mit dem vorangestellten „\“ die Ausgabe als Oktalwert angegeben.
2.Stream Kommandos (mit der nächsten Ausgabe)
2.1 Clear Display
[ESC]c
Beispiel:
Anzeige löschen
Serial.print(„\33c“);
2.2 Matrix Helligkeit setzen
[ESC]b{n} n = 0-9,*
n = 0 entspricht 0% Helligkeit
n = 9 entspricht 90% Helligkeit
n = * entspricht 100% Helligkeit
Beispiel:
Setze die Matrix-Helligkeit auf 50%
Serial.print(„\33b5“);
2.3 Matrix Helligkeit dimmen auf neue Helligkeit
[ESC]d{n} n = 0-9,*
n = 0 dimmen auf 0% Helligkeit
n = 9 dimmen auf 90% Helligkeit
n = * dimmen auf 100% Helligkeit
Beispiel:
Dimme die Matrix Helligkeit auf 90%
Serial.print(„\33d9“);
2.4 Ein Zeichen zurück senden (Synchronisation)
[ESC]t{c} c = [ASCII char]
Beispiel:
„hello“ ausgeben und ein „!“ zurück senden
Serial.print(„hello\33t!“);
2.5 Nächste Matrixbytes ohne Verzögerung \ ohne scrollen laden
[ESC]l
Beispiel:
Gib ein Fragezeichen „?“ direkt aus
Serial.print(„\33l?“);
3.Zeichensatz Kommandos
3.1 Zeichensatz ‚Ecomomy Size‘ (3*6 Pixel)
[ESC]e1
Beispiel:
Setze den Zeichensatz auf ‚Economy Size‘
Serial.print(„\33e1“);
3.2 Zeichensatz ‚Normal Size‘ (5*8 Pixel)
[ESC]e0
Beispiel:
Setze den Zeichensatz auf ‚Normal Size‘
Serial.print(„\33e0“);
3.3 Balkengrafik
Für jedes Zeichen wird ein vorgegebenes Bitmuster spaltenweise ausgegeben.
[ESC]B{xxxxxxxx}[SPACE] x = beliebig viele Zeichen
Die Bytes sind Spaltenweise kodiert. Pixelreihe von links nach rechts
Bitnr. Spalte | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
0 | ||||||||
1 | L | E | D | |||||
2 | ||||||||
3 | M | A | T | R | I | X | ||
4 | ||||||||
5 | ||||||||
6 | 8 | x | 8 | |||||
7 |
Jede 1 entspricht einer eingeschalteten LED, jede 0 einer
ausgeschalteten LED. Nach der obigen Matrix für jede Spalte
von oben nach unten in dezimal \ hexadezimal kodiert.
Zeichen | Ausgabe dez | Binär – bit 7…0 |
‚1‘ | 1 | 00000001 |
‚2‘ | 2 | 00000010 |
‚3‘ | 4 | 00000100 |
‚4‘ | 8 | 00001000 |
‚5‘ | 16 | 00010000 |
‚6‘ | 32 | 00100000 |
‚7‘ | 64 | 01000000 |
‚8‘ | 128 | 10000000 |
Zeichen | Ausgabe dez | Binär – bit 7…0 |
‚b‘ | 1 | 00000001 |
‚c‘ | 3 | 00000011 |
‚d‘ | 7 | 00000111 |
‚e‘ | 15 | 00001111 |
‚f‘ | 31 | 00011111 |
‚g‘ | 63 | 00111111 |
‚h‘ | 127 | 01111111 |
‚i‘ | 255 | 11111111 |
‚j‘ | 254 | 11111110 |
‚k‘ | 252 | 11111100 |
‚l‘ | 248 | 11111000 |
‚m‘ | 240 | 11110000 |
’n‘ | 224 | 11100000 |
‚o‘ | 192 | 11000000 |
‚p‘ | 128 | 10000000 |
Zeichen | Ausgabe hex | Binär – bit 7…0 |
‚B‘ | 0x18 | 00011000 |
‚C‘ | 0x3c | 00111100 |
‚D‘ | 0x7e | 01111110 |
‚E‘ | 0xff | 11111111 |
‚F‘ | 0xe7 | 11100111 |
‚G‘ | 0xc3 | 11000011 |
‚H‘ | 0x81 | 10000001 |
Zeichen | Ausgabe hex | Binär – bit 7…0 |
‚I‘ | 0x00 | 00000000 |
‚J‘ | 0x18 | 00011000 |
‚K‘ | 0x24 | 00100100 |
‚L‘ | 0x42 | 01000010 |
‚M‘ | 0x81 | 10000001 |
3.4 Grafikmodus
Die Bytes sind hexadezimal kodiert, mit einem Leerzeichen als Abschlusskennung
[ESC]G{xxxxxxxx}[SPACE] x = maximal 8 Bytes für eine komplette Matrix
Die Bytes sind Spaltenweise kodiert. Pixelreihe von links nach rechts
Bitnr. Spalte | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
0 | ||||||||
1 | L | E | D | |||||
2 | ||||||||
3 | ||||||||
4 | M | A | T | R | I | X | ||
5 | ||||||||
6 | 8 | x | 8 | |||||
7 |
Jede eingeschaltete LED entspricht einer 1, jede ausgeschaltete
LED entspricht einer 0. Nach der obigen Matrix für jede Spalte
von oben nach unten in Hexadezimal kodiert.
Beispiel:
Ausgabe eines Schachbrettmusters ohne scrollen
Byte 1 2 3 4 5 6 7 8
Serial.print(„\33l\33Gaa55aa55aa55aa55 „);
3.5 Pausezeit setzen
[ESC]P{xxx}[SPACE] xxx = Pause in milisekunden
Beispiel:
Setze eine Pausezeit von 1 Sekunde
Serial.print(„\33P1000\40“);
3.6 Schiebeverzögerungszeit setzen
Die Zeit zum Verschieben um einen Schritt = Pixel aus der Matrix.
[ESC]S{xxx}[SPACE] xxx = Schiebeverzögerungszeit in millisekunden
Beispiel:
Setze eine Schiebeverzögerungszeit von 10 millisekunden
Serial.print(„\33S10\40“);
3.7 Dimmzeit setzen
Zeit von Start bis Ende des Dimmvorganges.
[ESC]D{xxx}[SPACE] xxx = Matrix Dimmzeit in millisekunden
Beispiel:
Setze die Matrix Dimmzeit auf 100 millisekunden
Serial.print(„\33D100\40“);
3.8 Dimmwert und -zeit setzen
[ESC]T{n}{xxx}[SPACE] n = 0-9,*
n = 0 dimmen auf 0% Helligkeit
n = 9 dimmen auf 90% Helligkeit
n = * dimmen auf 100% Helligkeit
xxx = Matrix Dimmzeit in millisekunden
Beispiel:
Setze die Endhelligkeit auf 100% mit einer Dimmzeit von 100 millisekunden
Serial.print(„\33T*100\40“);
4.sofort Kommandos (ohne Verzögerung)
4.1 Display löschen und zurücksetzen
[DLE]c
Beispiel:
Anzeige sofort löschen und zurücksetzen
Serial.print(„\20c“);
4.2 Matrix Helligkeit dimmen auf neue Helligkeit
[DLE]d{n} n = 1-9,0
n = 1 dimmen auf 10% Helligkeit
n = 9 dimmen auf 90% Helligkeit
n = 0 dimmen auf 100% Helligkeit
Beispiel:
Dimme die Matrix Helligkeit sofort auf 90%
Serial.print(„\20d9“);
5. Rückgabewerte ASCII Zeichen der beiden Tasten auf dem Shield
Gedrückt und losgelassen werden unterschieden!
5.1 linke Taste (FN)
A – FN gedrückt
a – FN losgelassen
5.2 rechte Taste (ENTER)
B – ENTER gedrückt
b – ENTER losgelassen
Zusammengesetztes Beispiel:
Ein Fragezeichen über eine Sekunde einblenden, eine Sekunde warten, und über eine Sekunde ausblenden
Serial.print(„\33d0\33l?\33T*100 \33P1000 \33T0100 \33d*“);
Links
Maroon Shield – Stromlaufplan
Klicke, um auf maroon_shield_1_03_schematic.pdf zuzugreifen
Maroon Shield – Kommunikationsprotokoll
http://www.nibo-roboter.de/wiki/Maroon_Shield/Protokoll
Maroon Shield Firmware
https://sourceforge.net/p/maroon-shield/code/HEAD/tree/trunk/ -> Download Snapshot
Serielle Schnittstelle Kommandos
https://www.arduino.cc/en/Reference/Serial
ASCII Tabelle
https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange