Oh, Oh, jetzt geht's hier mit Arduino weiter..?!
Wollte nur bemerken, dass es von Erik Bartmann auch Buch "Processing" gibt (sein 1tes Buch). Achtung: Hierin wird aber nix über serielle Kommunikation beschrieben, eher so PC-Programmierung unter Processing; ist auch gut für Programmieranfänger gedacht.
Ein 2tes schönes Buch ist von Maik Schmidt "Einfacher Einstieg in die Mikrocontrollerprogrammierung..." hab's grad nicht da, geht auch um Arduino, Serielle Kommunikation, Bluetooth und Processing.
Processing ist wirklich ein Blick wert, weil da auch eigenständige Java-Anwendungen für Windows, Mac und Linux exportiert werden können.
Und die Arduino IDE wurde mit Processing erstellt.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Analog-Meßwere 0 - 255 mit CR LF
Baudrate 115200
Wenn mehrere COM-Ports angeschlossen sind, greift Processing auf den untersten zu.
Nun der Processing Code:
import processing.serial.*;
// The serial port:
Serial myPort;
int xPos = 1;
int serialValue;
int[] yPos;
void setup(){
size(1200,900); // Größe des Auagebefensters
println(Serial.list()); // COM-Ports werden gelistet
myPort = new Serial(this,Serial.list()[0],115200); // Der 1.COM-Port wird verwendet - Baudrate 115200, kann verändert werden
myPort.bufferUntil('\n'); // CR (ASCII=13) als Terminator
background(120); // Background des Fensters (Grauton 0 - 255)
yPos = new int[width]; // Anzahl der Y-Werte definieren
}
void draw(){
background(120);
stroke(255,255,0,120);
for(int i = 0; i < width; i +=50)
line(i,0,i,height);
//for(int i = 0; i < height; i +=50)
// line(i,0,i,width);
for(int i = 0; i < height; i +=50)
line(0,i,width,i);
stroke(255,0,0);
strokeWeight(1);
int yPosPrev = 0, xPosPrev = 0;
println(serialValue);
for(int x =1; x < width; x++) // Nächsten Wert anhängen
yPos[x-1] = yPos[x];
yPos[width - 1] = serialValue;
for (int z = 0; z < width; z++) {
if (z > 0)line(xPosPrev, yPosPrev, z, yPos[z]); // Kurve zeichnen
xPosPrev = z;
yPosPrev = yPos[z];
}
}
void serialEvent(Serial myPort) {
String portStream = myPort.readString(); // String vom COM-Port lesen
float data = float(portStream); // Casting
serialValue = height - (int)map(data,0,255,0,height); // Mit der Funktion map() wird skaliert
}
Georg
Letzte Änderung: 11 Jahre 5 Monate her von Georg. Begründung: Fehler im Source
Der Administrator hat öffentliche Schreibrechte deaktiviert.
danke für den Tipp mit "Visual Studio C++ Express" jedoch hatte ich Probleme meine alten programme zum laufen zu bringen. Deswegen habe ich mich andersweitig umgeschaut wie man etwas Grafik auf den Bildschirm bekommt. Gerade schaue ich mir dies an, es ist sehr gut kommentiert und auch recht verständlich:
Hallo BirgerT,
danke für den Hinweis. Ich habe den Code geändert. Mir war der Fehler selbst schon aufgefallen.
Hallo Egon,
Processing braucht nicht installiert zu werden, man muss nur die ZIP-Datei in einem
beliebigen Verzeichnis entpacken (ca. 350 Mb). Danach Processing.exe starten,den Code in die IDE einfügen und den Sketch starten. Eine Einführung zu Processing
findest du hier: http://lernprocessing.wordpress.com/2010/01/18/processing-links/
Georg
Der Administrator hat öffentliche Schreibrechte deaktiviert.