Hi,
Ich habe 2 Motoren, die ich mit einem PID auf einem Arduino regle. Eine
Software am Computer gibt eine Trajektorie vor, welche von den Motoren
abgefahren wird. Das ganze funktioniert so weit gut, bis dass ein Aufruf
von serialEvent() etwa 2s delay verursacht. Wenn also ein Motor eine
neue Position bekommt, bleibt auch der andere Motor hängen, das dauert
jeweils etwa 2s.
Meine serialEvent():
void serialEvent() { //2s delay?
while (Serial.available()) {
buff= Serial.parseInt(); //defined global
if(temp<=encoder_m && buff>=0) {
n_Trajectory1=1; //new trajectory
Serial.println("start1\0");
} else { //offset set for motor2
n_Trajectory2=1; //new trajectory
Serial.println("start2\0");
}
}
}
Weiss Jemand, warum serialEvent() solch einen overhead hat?
Gruss Rudolf
Ich habe raus gefunden, was wirklich so langsam ist: Serial.parseInt(). Weiss Jemand ob es da alternativen gibt?
Ok, habe eine Lösung, nicht ganz sauber aber passt schon: Serial.setTimeout(50); //normalerweise ist Timeout auf 1s, daher der delay
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.