Seri­el­ler Plotter

Lese­zeit: 3 Minu­ten

Der Ardui­no bie­tet nicht nur die Text­aus­ga­be mit ➨Serial.print(), er kann auch Ereig­nis­se oder Mess­wer­te mit einem Plot­ter aufzeichnen.

Den Seri­el­len Plot­ter fin­dest du als Sym­bol oder unter Werk­zeu­ge → Seri­el­ler Plotter.

Am ana­lo­gen Ein­gang A0 ist ein Schie­be­reg­ler oder ein Dreh­reg­ler ange­schlos­sen.
Der Seri­el­le Plot­ter zeigt die Ver­än­de­run­gen des Ein­gangs­si­gnal an.

int REGLER = A0;
int ReglerWert = 0;

void setup() 
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}
}

void loop() 
{
  ReglerWert = analogRead(REGLER);
  Serial.println(ReglerWert);
  delay(200);
}

Der Plot­ter zeich­net die Ver­än­de­rung der Span­nung durch die Dreh- oder Schie­be­be­we­gung des Poten­tio­me­ters auf:

Der Seri­el­le Plot­ter kann auch meh­re­re Wer­te als far­bi­ge Lini­en dar­stel­len. Im Bei­spiel wer­den vier Rei­hen ver­schie­de­ner Zufalls­zah­len dargestellt. 

void setup() 
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) { ; }
}

void loop() 
{
  // Zufallszahlen ermitteln
  int ZufallsZahlen1 = random(1, 10);
  int ZufallsZahlen2 = random(10, 20);
  int ZufallsZahlen3 = random(20, 30);
  int ZufallsZahlen4 = random(30, 40);

  // Werte schreiben
  Serial.print("Zufallszahlen 1-10:");
  Serial.print(ZufallsZahlen1);
  Serial.print(",");

  Serial.print("Zufallszahlen 10-20:");
  Serial.print(ZufallsZahlen2);
  Serial.print(",");

  Serial.print("Zufallszahlen 20-30:");
  Serial.print(ZufallsZahlen3);
  Serial.print(",");

  Serial.print("Zufallszahlen 30-40:");
  Serial.print(ZufallsZahlen4);
  Serial.println(",");

  delay(500);
}

Ver­gleich der Tem­pe­ra­tur­sen­so­ren: TMP36, DHT11 und und TO92 (DS18B20).

An jeden Sen­sor wur­de nach­ein­an­der eine Wär­me­quel­le her­an­ge­führt. Die Reak­ti­ons­zei­ten der Sen­so­ren sind unterschiedlich.

// DHT11
# include <Adafruit_Sensor.h>
# include <DHT.h>
# include <DHT_U.h>

// DHTTYPE: DHT11 oder DHT22
# define DHTTYPE DHT11
# define DHTPIN 8
DHT dht(DHTPIN, DHTTYPE);

// TO92 (DS18B20)
# include <OneWire.h>
# include <DallasTemperature.h>

// Pin des Sensors an OneWire übergeben
# define ONE_WIRE_BUS 9

// oneWire-Instanz erstellen
OneWire oneWire(ONE_WIRE_BUS);

// oneWire-Instanz an den Sensor übergeben
DallasTemperature GY21(&oneWire);

// Pin für TMP36
int TEMPERATURSENSOR = A0;

void setup() 
{
  Serial.begin(9600);
  Serial.println("Temperatur messen:");

  // dht11 starten
  dht.begin();

  // Temperatursensor starten
  GY21.begin();
}

void loop() 
{
  GY21.requestTemperatures(); 
  
  // Wert des Sensors TMP36 lesen
  float SensorWert = analogRead(TEMPERATURSENSOR);

  // richtiges Verhältnis zwischen 5 V = 5000 mV und 1023 mV herstellen
  // -> gemessenen Wert mit 5 malnehmen und dann durch 1023 teilen
  float MesswertVolt = SensorWert * 5.0;
  MesswertVolt = MesswertVolt / 1023.0;

  /*
    1 Grad = 10mV = 0,01 V = 1/100 V
    Versatz von 500mV = 0,5 V abziehen
    und durch 0.01 = 1 Grad teilen
  */
  float TMP36Temperatur = (MesswertVolt - 0.5) / 0.01;

  /* für den Plotter:
     Messwert mit Serial.print(",") abschließen
     nach dem letzen Messwert Serial.println(",")
  */
  Serial.print("Temperatur TMP36: ");
  Serial.print(TMP36Temperatur);
  Serial.print(",");
  Serial.print("Temperatur DHT11: ");
  Serial.print(dht.readTemperature());
  Serial.print(",");

  Serial.print("Temperatur GY21: ");
  Serial.print(GY21.getTempCByIndex(0));
  Serial.println(",");
  
  // Wartezeit bis zur nächsten Messung
  delay(500);
}


 Serieller Monitor Seri­el­ler Monitor