Tutorial Stone Display STW Serie #3 – Send Data to Display
In diesem Tutorial Beitrag geht es darum wie man Daten vom Arduino an das Stone Display der STW Serie schicken kann.
Wie Ihr ein Projekt auf das Display laden könnt, habe ich im vorhergehenden Beitrag erklärt. https://arduino-projekte.info/tutorial-stone-display-stw-serie-2-upload/
Es gibt zwei Wege wie Ihr die Daten an das Display senden könnt. Ich zeige euch hier beide Weg, diese sind wirklich nicht schwer.Wie send ich Daten vom Arduino zum Stone STW Display?
1. Wie werden die Daten Übertragen?
Die Daten werden per Serieller Schnittstelle übertragen (auch als UART oder USART bezeichnet). Die serielle Kommunikation an den Pins RX / TX verwendet TTL-Logikpegel (5 V oder 3,3 V je nach Board). Welche Pins auf deinem Board RX / TX sind musst du im Pinout nachsehen. Beim Arduino Uno R3 wäre das Pin 0 = RX und Pin 1 = TX.
Die Einschränkung betrifft die SoftwareSerial. Kurz zur Erklärung, mit der SoftwareSerial kann man die Serielle Schnittstelle auf nahezu beliebige Pins legen. Das hat den Vorteil das die Serielle Schnittstelle bei hochladen des Sketch nicht abgezogen werden muss.
Die SoftwareSerial funktioniert mit dem Arduino leider nicht. Der Grund dafür ist, der Arduino kann mit dem SoftwareSerial nur eine Bautrate von 57600bps. Das Display benötigt aber eine Bautrate von 115200bps, somit bleibt nur die Physische Schnittstelle übrig.
Hier könnt Ihr die Eigenschaften der SoftwareSerial nachlesen.
https://www.arduino.cc/en/Reference/softwareSerial
2. Struktur der Daten für die Übertragung.
Hier ein Beispiel wie die Daten zusammengesetzt sind:
ST<{„cmd_code„:“set_value„,“type„:“progress_bar„,“widget„:“progress_bar„,“value„:20}>ET
Frame head: ST<
Command content: { json } Kann aus 3 oder 4 Datentypen bestehen.
Frame end: >ET
Im cmd_code gibt man die Eigenschaften an, was gemacht werden soll, in meinem Beispielprogramm:
set_value
set_text
set_angle
Bei type spricht man das jeweilige Objekt an, in diesem Beispiel die Progress Bar.
Bei widget wird der Name des entsprechen Widget eingetragen.
3. 1. Version der Datenübertragung (Serial.Print Methode)
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(F("ST<{\"cmd_code\":\"set_value\",\"type\":\"progress_bar\",\"widget\":\"progress_bar\",\"value\":0}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_text\",\"type\":\"label\",\"widget\":\"label\",\"text\":\"\"}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_angle\",\"type\":\"gauge_pointer\",\"widget\":\"gauge_pointer2\",\"angle\":0}>ET"));
delay(1000);
Serial.println(F("ST<{\"cmd_code\":\"set_angle\",\"type\":\"gauge_pointer\",\"widget\":\"gauge_pointer2\",\"angle\":60}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_value\",\"type\":\"progress_bar\",\"widget\":\"progress_bar\",\"value\":20}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_text\",\"type\":\"label\",\"widget\":\"label\",\"text\":\"Arduino\"}>ET"));
delay(1000);
Serial.println(F("ST<{\"cmd_code\":\"set_angle\",\"type\":\"gauge_pointer\",\"widget\":\"gauge_pointer2\",\"angle\":120}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_value\",\"type\":\"progress_bar\",\"widget\":\"progress_bar\",\"value\":40}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_text\",\"type\":\"label\",\"widget\":\"label\",\"text\":\"Arduino-Projekte\"}>ET"));
delay(1000);
Serial.println(F("ST<{\"cmd_code\":\"set_angle\",\"type\":\"gauge_pointer\",\"widget\":\"gauge_pointer2\",\"angle\":180}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_value\",\"type\":\"progress_bar\",\"widget\":\"progress_bar\",\"value\":60}>ET"));
delay(1000);
Serial.println(F("ST<{\"cmd_code\":\"set_angle\",\"type\":\"gauge_pointer\",\"widget\":\"gauge_pointer2\",\"angle\":240}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_value\",\"type\":\"progress_bar\",\"widget\":\"progress_bar\",\"value\":80}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_text\",\"type\":\"label\",\"widget\":\"label\",\"text\":\"Arduino-Projekte.info\"}>ET"));
delay(1000);
Serial.println(F("ST<{\"cmd_code\":\"set_angle\",\"type\":\"gauge_pointer\",\"widget\":\"gauge_pointer2\",\"angle\":300}>ET"));
Serial.println(F("ST<{\"cmd_code\":\"set_value\",\"type\":\"progress_bar\",\"widget\":\"progress_bar\",\"value\":100}>ET"));
delay(2000);
}
4. 2. Version der Datenübertragung (Json Methode)
Arduino Bibliothek einbinden am Beispiel OLED Display
In diesem Beitrag möchte ich euch zeigen wie Ihr Bibliotheken in die Arduino Software einbinden könnt. Die Biliotheken werden für diverse Sensoren, Display und alles
#include
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.write("ST<");
StaticJsonDocument<128> doc;
doc["cmd_code"] = "set_value";
doc["type"] = "progress_bar";
doc["widget"] = "progress_bar";
doc["value"] = 0;
serializeJson(doc, Serial);
Serial.write(">ET");
delay(1000);
Serial.write("ST<");
doc["cmd_code"] = "set_value";
doc["type"] = "progress_bar";
doc["widget"] = "progress_bar";
doc["value"] = 80;
serializeJson(doc, Serial);
Serial.write(">ET");
delay(1000);
}
Schaut im Online Shop vorbei!
Weitere Beträge zum Thema Stone Display:
Tutorial Stone Display STW Serie #2 – Upload
In diesem Tutorial Beitrag erkläre ich wie Ihr euer Projekt auf das Stone STW Display laden könnt. Bei Stone wird das über ein USB Kabel
Tutorial Stone Display STW Serie #1 – Software
In diesem Beitrag soll es um die Stone Software für die Stone STW Serie gehen. Ich habe im vorherigen Beitrag bereits das Stone STW Display
Stone Display STW Serie Intelligent TFT-LCD Module
Heute möchte ich euch das Stone Display STW Serie vorstellen. Das Display ist derzeit noch nicht erhältlich, soll aber noch in 2021 veröffentlicht werden. Was