Guten Tag,
Ich bin an einem Projekt mit einem Selbstfahrenden Roboter, der vorne ultraschallsensoren und Microschalter hat (Mit Ardunio Mega). Jetzt würde ich gerne über die Serielle Schnitstelle die Daten von den US-Sensoren und den Mircorschaltern senden und dann in Processing den Roboter und diese Daten visualisieren. Also so wie bei einem Rückfahrwarner (Man soll ein Objekt sehen das den Roboter darstellen soll und dann vorne da wo ein Hindernis ist noch einen roten Balken).
Das Problem ist die Datenübertragung vom Arduino Mega zu Processing. Die Daten kommen bei Processing sehr viel langsamer an als wenn ich den Seriellen Monitor in der Arduino IDE öffne! Da die Daten perfekt in diesem Seriellen Monitor ankommen kann es ja eigentlich nur an processing liegen! Hier mal der Code
Arduino Code:
#include <BIB_Autodrive.h>
#include <BIB_Roboterbedienung.h>
#include <BIB_Motorsteuerung.h>
BIB_Autodrive objekt_autodrive{};
BIB_Roboterbedienung objekt_roboterbedienung{};
BIB_Motorsteuerung objekt_motorsteuerung{};
void setup() {
Serial.begin(9600);
}
void loop() {
String methode = objekt_roboterbedienung.welcheMethode();
Serial.print(methode);
Serial.println(";");
if(methode == "Autodrive"){
objekt_autodrive.set_bool_us_sensor(false);
while(true){
autodrive();
}
}
void autodrive(){
String wert_rechts = String(objekt_autodrive.getStop_rechts());
String wert_mitte = String(objekt_autodrive.getStop_mitte());
String wert_links = String(objekt_autodrive.getStop_links());
String alleDaten = wert_rechts + ";" + wert_mitte + ";" + wert_links;
Serial.print(alleDaten);
Serial.println(";");
}
Hier der Processing Code:
import processing.serial.*;
Serial myPort;
String datenDieKommen;
String modus = "";
void setup(){
size(800,600);
background(0);
noStroke();
fill(120);
String portName = Serial.list()[0];
myPort = new Serial (this, portName, 9600);
datenDieKommen = myPort.readStringUntil('\n');
datenDieKommen = null;
}
void draw(){
if(myPort.available() > 0 ){
datenDieKommen = myPort.readStringUntil('\n');
if(datenDieKommen != null){
println(datenDieKommen);
}
}
}
Aber die Daten werden in Processing total verzögert angezeigt bzw. Processing bekommt die Daten total verzögert.
Vielen Dank für eure Hilfe
RobotersindCool
Lesezeichen