Verwendung des Serial-Monitor/Serial-Plotter
Die Arduino-IDE kann mit dem Arduino-Board über die serielle Schnittstelle (USB-Anschluss) Daten austauschen. Häufigste Anwendung ist die Übertragung von Zustandsdaten aus dem laufenden Programm, z.B. Sensorwerte.
Beispiel für die Verwendung des Serial Monitor und Serial Plotter für die Datenkommunikation vom Arduino zum PC (zum Debuggen):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void setup() {
// Serielle Verbindung aktivieren und Baudrate setzen
Serial.begin(115200);
}
void loop() {
// Sensorwerte simulieren
double tempSensor1 = random(10,40);
double tempSensor2 = random(5,15);
// Werte im Format: "<Beschreibung>:<Wert>, <Beschreibung>:<Wert>, ..." ausgeben
Serial.print("min:");
Serial.print(0); // untere Wertegrenze als horizontale Linie ausgeben
Serial.print(",max:");
Serial.print(50); // obere Wertegrenze als horizontale Linie ausgeben
Serial.print(",");
Serial.print("Sensor 1:");
Serial.print(tempSensor1);
Serial.print(",");
Serial.print("Sensor 2:");
Serial.println(tempSensor2);
delay(1000);
}
In der setup()
-Funktion muss man die Baudrate für die serielle Kommunikation festlegen und die Übertragung starten. Dann kann man mit Serial.print()
bzw. Serial.println()
Text ausgeben, wobei letztere einen Zeilenumbruch an die Ausgabe anhängt.
Nach Start des Programms kann man in der Arduino IDE unter Tools den Serial Monitor auswählen. Hier muss man darauf achten, die richtige Baudrate (hier 115200) einzustellen. In meinen Programmen verwende ich überall 115200, falls ich doch mal schneller Daten schaufeln muss.
Der Serial Plotter (auch auswählbar über das Startmenü) zeigt die Kurven beschriftet an. Dazu parst der Serial Plotter den übermittelten Text im Format:
1
<Beschreibung>:<Wert>, <Beschreibung>:<Wert>, ...
Konfiguration des Serial Plotters
Der Serial Plotter ist ein sehr einfacher Plotter. Man kann ihn kaum konfigurieren und sollte daher besser andere Visualisierungstools verwenden.
Direkter Empfang der vom Arduino gesendeten Daten
Man kann direkt auf der seriellen Schnittstelle lauschen (es wird angenommen, dass das Arduino-Board mit /dev/ttyACM0
verbunden ist), und die Daten so abgreifen:
1
2
3
4
5
6
> cat /dev/ttyACM0
min:0,maxmax:50,Sensor 1:35.00,Sensor 2:14.00
min:0,max:50,Sensor 1:35.00,Sensor 2:5.00
n:0,max:50,Sensor 1:16.00,Sensor 2:7.00
min:0,max:50,Sensor 1:35.00,Sensor 2:14.00
...
Die Daten kann man auch in eine Logdatei schreiben:
1
cat /dev/ttyACM0 > logfile.txt
Oder natürlich mittels eigenem Programm auslesen und selbst plotten.
Es kann immer nur ein Programm auf die serielle Schnittstelle zugreifen. Wenn also der Serial Plotter in der Arduino-IDE läuft, kann man nicht gleichzeitig auf der Konsole auf
/dev/ttyACM0
zugreifen.