Arduino IDE kommt jetzt mit einem Plotter

Sine_Plot

Mit der Version 1.6.6 kann die Arduino IDE nun auch Daten plotten, die sie über die serielle Schnittstelle erhält. Bislang mussten man sich damit begnügen sich Zahlenreihen im seriellen Monitor anzusehen oder eine zusätzliches Programm zu verwenden.

Die neue Funktion findet man im Menüpunkt Werkzeugeund heißt Serieller Plotter und kann auch über die Tastenkombination Str + Shift + L gestartet werden. Das Tool unterstützt die selben Baudraten wie der Monitor und akzeptiert sowohl Ganzzahlen als auch Kommazahlen. Jeder neue Wert muss dabei mit einem \r\n am Ende gesendet werden, was am besten über die println Funktion gemacht wird.

Im Moment ist es so, dass der Plotter immer 500 Datenpunkte zeichnet, egal wie groß das Fenster ist. Zusätzlich wandert der Graph. Das soll bedeuten, dass der Plotter beim Echtzeitplotten den ältesten Wert löscht, alles nach links schiebt und dann am rechten Ende den nächsten Wert anfügt.

Eine weitere praktische Neuerung ist, dass das Fenster sowohl vom seriellen Monitor als auch vom Plotter geöffnet bleiben, wenn man den Arduino neu flasht.

Hier ist ein kleiner Beispielcode, der die Werte der Sinusfunktion über die serielle Schnittstelle ausgibt, damit man das ganze auch gleich mal testen kann.

 
#include "math.h"

void setup() {
  // Enable Serial Output
  Serial.begin(9600);
}
 
void loop() {
  for (double i = 0; i = 2*M_PI; i = i + 0.05) {
    Serial.println (sin(i));
    
  }  
}

Mehrere Graphen plotten

NACHTRAG: Mittlerweile wurde diese Funktion in die aktuelle Version eingefügt.

In der aktuellen Version 1.6.6 kann man sich immer nur einen Graphen zeichnen lassen. In der nächsten Release wird es aber auch möglich sein mehrere Graphen auf einmal zu plotten. Wer das schon einmal ausprobieren will, kann sich eine Kopie der Hourly Build runterladen und entpacken, Installieren ist nicht nötig.

Mit dieser Version kann man nun mehrere Graphen übereinander plotten, nur unsere Daten müssen noch entsprechend formatiert werden. Dafür einfach die Daten mit einem Tabulatorzeichen (\t) trennen und ganz am Schluss wieder mit \r\n terminieren.

Hier habe ich einmal zur Probe einen Kosinus über den Sinus gelegt.

 
#include "math.h";

void setup() {
  // Enable Serial Output
  Serial.begin(9600);
}

void loop() {
  for (double i = 0; i < 2 * M_PI; i = i + 0.05) {
    Serial.print (sin(i));
    Serial.print ("\t");
    Serial.println (cos(i));
  }
}

Was dann so aussieht:

Sine_Cos_Plot

Leave a Comment