-
Hi,
ich habe eine Vermutung:
wenn ccrp5.init() im main thread steht und der main thread ja wie in einer Endlosschleife durchlaufen wird, dann bekomme ich ja ständig einen reset der C1 Unit.
Wie kann ich es programmtechnisch hinbekommen dass init() nur ein mal ausgeführt wird?
Ich habe eine idee mit ner while-schleife in eine funktion zu springen und dann den Vergleichswert der Schleife zu ändern, so dass diese nicht mehr ausgeführ wird. Ist aber wenig elegant.
Ich hatte folgendes programmiert:
thread main
{
ccrp5.init();
ccrp5.FWD(200,200);
//sleep 1000; --> dann fährt er entsprechend mit längeren
Zyklen
}
-
Bocksprünge
Hallo UweZ,
... Stimmt, das Problem ist der regelmäßige Neustart (Reset) bei Deinem Programm.
Wenn Du eine Endlosschleife ...
loop { };
... am Ende einfügst, fährt der Robby weiter bis die Batterien schlapp machen.
In den Demos gibt es ein Unterprogramm showDistance(), das anstelle der Endlosschleife etwas sinnvolles tut.
Gruß Dirk
-
Danke Dirk,
habe das ganze mit loop gelöst.
Habe noch eine andere Frage:
Gibt es ausser mit Sleep (vielleicht auch hardware-technische) Lösung die Spannungsspitzen beim Umschalten von einer Laufrichtung in eine andere zu vermindern. Da mehr als 1A kurzfristig fließen und ich zusätzlich noch eine Kamera und ein Funkmodul an Bord hab machen die meisten Netzteile schlapp (--> Überspannungsschutz Spannung --> 0 --> reset des Robys) Mit Akkus zu arbeiten ist für häufige Tests nicht so toll. Außerdem sind diese schnell leer. Ich hatte schon an einen dicken C gedacht (2200µF) parallel zum Netzgerät.
Grüße
Uwe
Hat da jemand schon mal was gemacht?
-
Pause
Hallo UweZ,
vor jedem Fahrtrichtungswechsel sollte eine Pause von 200 ms eingefügt werden.
Gruß Dirk
-
Hallo,
die Pause hatte ich schon eingefügt. Mein 1000mA Netzteil für den Robi macht trotzdem schlapp. Ich werds vermelden wenn ich eine akzeptable Lösung gefunden habe.
Grüße
Uwe