-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Stopwatch auslesen

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540

    Stopwatch auslesen

    Anzeige

    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.

    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;
    }
    wenn ich das jetzt starte, kommt die schrift mit den punkten, aber als wert der stopuhr wird immer 0 angegeben!

    kann mir jemand sagen, was da falsch sein könnte?

    danke schonmal im voraus

    roboman

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    writeInteger(getStopwatch1(), DEC);

    und mit setStopwatch1(wert); wird die StopWatch gestellt.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540
    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?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    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

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540
    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

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    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;
    }

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    ... ich wollte nur, dass der am anfang eine sekunde wartet und dann die zeit ausgibt.
    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).

    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

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540
    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

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo roboman,
    ... mein programm soll einfach nur alle 1,458 sec den wert der stopwatch ausspucken! funktioniert jetzt auch super, dank radbruchs hilfe!
    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.

    Gruß Dirk

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540
    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.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •