Maroon Shield Library – Manual

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
http://download.nicai-systems.com/nibo/maroon_shield_1_03_schematic.pdf

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

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.