Robin R. schrieb:
> 900ms ist doch schon relativ gut. Vermutlich werden mehrere
> Bytes am Ende zusammen übertragen, so dass er die 200 nur eine
> einzige loop() Iteration lang setzt. Und das draw() in Processing
> wird vermutlich auch "nur" mit 60fps oder sowas aufgerufen.
> Dh. es liegt immer länger 0 an den Pin an als 200.
>
> Ich würde vorschlagen, dass du gleich mehrere Bytes überträgst,
> inklusive dem angestrebten Timing (also die delays auch).
> Dann lässt du den Controller das Timing mit delays/timern
> erledigen.
>
> Das auf PC-Seite zu machen kann zu langsam sein, alleine ein
> Schreibzugriff auf den COM-Port kann ein paar ms verbraten.
> Und dann wird draw() vermutlich wirklich rate-limited aufgerufen,
> also alle 16ms.
>
> Ambesten du guckst die mal an, was da auf der Seriellen-Schnittstelle
> raus kommt (einfach mal 2 USB<->RS232 verbinden). Noch besser wäre es,
> wenn du mit einem Oszilloskop mal den Pin vom Arduino/Controller
> ansiehst.
Vielen Dank für die Antwort.Wenn ich erlich bin, verstehe ich das aber
nicht ganz. Die LED wird ja nur geschaltet, wenn der PC sendet,
ansonsten wird das ganze ja übersprungen.
Bei den Programm handelt es sich übrigens um ein Beispielcode aus der
Processing Entwicklungsumgebung.
Ursprünglich ganz ohne delays.
"mouseX" gibt hier einfach einen Wert von 0-255 zurück.
Im Internet gibt es auch ein Video, dort geht es auch ohne delays in
weicher Echtzeit.
<c>
void draw() {
for (int i = 0; i < 256; i++) {
stroke(i);
line(i, 0, i, 150);
}
port.write(mouseX);
}
</c>
https://www.youtube.com/watch?v=a8ZB1fnEi_4