writeInteger(getStopwatch1(), DEC);
und mit setStopwatch1(wert); wird die StopWatch gestellt.
Hallo,
ich würde gerne mit einem programm die stopuhr aus dem rp6 lesen.
ich habe jetzt ein kleinen program geschrieben, dass folgendes tun soll:
1.:stopwatch starten.
2.:ausgeben, dass die stopwatch gelesen wird, was mit laufenden punkten gezeigt wird.
3.:den aktuellen wert der stopuhr angeben
und 4.: eine pause machen.
wenn ich das jetzt starte, kommt die schrift mit den punkten, aber als wert der stopuhr wird immer 0 angegeben!Code:#include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); startStopwatch1(); while (true) { static uint16_t stopwatch1; if(getStopwatch1() > 1000) { writeString_P("Stopuhr wird gelesen."); mSleep(400); writeString_P("."); mSleep(400); writeString_P("."); mSleep(400); writeString_P("\n"); writeInteger(stopwatch1, DEC); writeChar('\n'); mSleep(1458); } } return 0; }
kann mir jemand sagen, was da falsch sein könnte?
danke schonmal im voraus
roboman
writeInteger(getStopwatch1(), DEC);
und mit setStopwatch1(wert); wird die StopWatch gestellt.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
ist es normal, dass die nur bis ca 30 sec zählt?
und kann man den wert auf dem rp6 speichern, um ihn später auszulesen?
Hallo Roboman93,
wenn du mit ...
if(getStopwatch1() > 1000) {
'machwas'}
... etwas tun willst, dann bedeutet das, dass du etwa alle 1000ms, also etwa jede Sekunde, 'machwas' ausführst.
Ist es das, was du wolltest?
Auf jeden Fall must du dann noch am Ende setStopwatch1(0) einfügen, um die Stopwatch zurückzusetzen:
if(getStopwatch1() > 1000) {
'machwas'
setStopwatch1(0);}
Gruß Dirk
ne, ich wollte nur, dass der am anfang eine sekunde wartet und dann die zeit ausgibt. die ungerade zahl unten ist nur dafür da, damit net immer das gleiche rauskommt
So vielleicht?
Code:#include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); startStopwatch1(); while (true) { if(getStopwatch1() > 1000) { while(1) { writeString_P("Stopuhr wird gelesen."); mSleep(400); writeString_P("."); mSleep(400); writeString_P("."); mSleep(400); writeString_P("\n"); writeInteger((uint16_t)getStopwatch1(), DEC); writeChar('\n'); mSleep(1458); } } } return 0; }
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Am Anfang wird wirklich 1000ms gewartet, zumindest, wenn man einen Stand von Null für die Stopwatch1 annimmt (du setzt sie anfangs nicht auf Null).... ich wollte nur, dass der am anfang eine sekunde wartet und dann die zeit ausgibt.
Wenn dann der Stopwatch1-Wert größer als 1000 ist, also 1001 bis 32767, dann werden die Punkte bei jedem Schleifendurchlauf ausgegeben und Stopwatch1 gelesen (wenn du die Änderungen von radbruch machst).
Das geschieht bei jedem Schleifendurchlauf.
Frage ist, was da ausgegeben werden soll? Das geht so schnell, dass man da nichts rechtes lesen kann.
Was willst du also ausgeben? Eine Zahl jede Sekunde oder jede 0,1s? Überleg noch mal, was dein Programm machen soll.
Gruß Dirk
mein programm soll einfach nur alle 1,458 sec den wert der stopwatch ausspucken! funktioniert jetzt auch super, dank radbruchs hilfe!
aber wie kann man diese werte auf dem rp6 speichern? bitte um hilfe
roboman
Hallo roboman,
Das macht das Programm von radbruch nicht. Für mich ist nicht erkennbar, wie alle 1,458 s die Stopwatch ausgelesen wird. Nach dem "Warum" wage ich gar nicht zu fragen.... mein programm soll einfach nur alle 1,458 sec den wert der stopwatch ausspucken! funktioniert jetzt auch super, dank radbruchs hilfe!
Gruß Dirk
guck mal mein prog an: da fängt die schleife an, wenn 1000 ms verganden sind
dann sagt er: "stopuhr wird gelesen."
dann noch 2 punkte.
dann ein zeilenumbruch und dann den wert der stopuhr in dezimal.
dann noch ein zeilenumbruch und jetzt, pass auf:
dann kommt eine pause von 1,458 sec, nach der die schleife von vorne beginnt!
ausgegeben wird dann folgendes:
Stopuhr wird gelesen...
1863
Stopuhr wird gelesen...
4285
Stopuhr wird gelesen...
6707
Stopuhr wird gelesen...
9128
Stopuhr wird gelesen...
11550
Stopuhr wird gelesen...
13972
Stopuhr wird gelesen...
16394
Stopuhr wird gelesen...
18817
Stopuhr wird gelesen.
Lesezeichen