Da der Arduino kein eigenes Display hat und die Möglichkeit Daten oder Messwerte auf einem externen Display ausgeben zu lassen sehr beschränkt sind, ergibt sich als Konsequenz, den PC / Mac zur Auswertung / Visualisierung der Daten zu verwenden.
Dazu benötigt man eine Programmiersprache, welche über eine serielle Verbindung(eventuell auch Bluetooth) mit dem Arduino kommunizieren kann und zusätzlich eine einfache Möglichkeit bietet die Daten "schön" zu visualisieren.
Hier bietet sich die Programmiersprache Processing an. Diese ist frei verfügbar und der Arduino IDE sehr ähnlich, sowohl im Design der IDE als auch der Programmiersprache selbst. Zu dem Thema, wie man Processing installiert und mit dem Arudino kommuniziert, habe ich bereits ein paar Tutorials gemacht.
Um die Messwerte als Grafiken anzeigen zu lassen, kann man für seinen Processing Sketch ein Programmfenster erstellen. In diesem kann man automatisch hinein "zeichnen" lassen. Glücklicherweise gibt es schon eine Menge an Programmbeispielen, für die verschiedenen Grafikenarten.
Um ein Balkendiagramm zu erzeugen, zeichnet man einfach sehr schnell hintereinander mit den jeweils aktualisierten Werten eine Linie, wodurch eine Art "sanftes Balkendiagramm" entsteht.
Der Code dazu sieht so aus:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import processing.serial.*; | |
Serial arduino; | |
int xPos = 1; | |
void setup () { | |
size(500, 300); | |
arduino = new Serial(this, Serial.list()[0], 9600); | |
arduino.bufferUntil('\n'); | |
background(0, 0, 0); | |
} | |
void draw () { | |
//keine sich wiederholende Aktionen | |
} | |
void serialEvent (Serial arduino) { //wird jedes mal ausgefuehrt wenn etwas ueber die serielle Verbindung empfangen wird | |
String value_string = arduino.readStringUntil('\n'); | |
if (value_string != null) { | |
value_string = trim(value_string); | |
float value = float(value_string); | |
value = map(value, 0, 1023, 0, height); | |
stroke(127,34,255); | |
line(xPos, height, xPos, height - value); | |
if (xPos >= width) { | |
xPos = 0; | |
background(0); | |
} | |
else { | |
xPos++; | |
} //eine Position vorruecken oder neu starten | |
} | |
} |
Auf dem Arduino muss einfach nur ein Sketch sein, welcher in sehr kurzen Zeitabständen den aktualisierten Wert eines analog Inputs sendet. Wenn man ein Potentiometer anschließt und daran dreht entsteht das oben gezeigt Bild.
Um ein Kreisdiagramm zu erstellen, gibt es praktischerweise bereits eine Funktion, welche man nur noch einbinden muss. Hier findet ihr sie in der offiziellen Processing Dokumentation. Damit muss man nur noch die Funktion aufrufen und ihr als Argument den Durchmesser des Kreises und die einzelnen Sektoren(als Größe der Winkel) mitgeben.
Über die Funktion text("Text", x Koordinate, y Koordinate) kann man seine Diagramme beschriften und sich zusätzliche Informationen anzeigen lassen.
Keine Kommentare:
Kommentar veröffentlichen
Mit dem Veröffentlichen eines Kommentars erklären Sie sich mit unserer Datenschutzerklärung einverstanden.
https://michaelsarduino.blogspot.de/p/datenschutzerklarung.html