- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Asuro fährt im Kreis mit neuem Programm Brauche Hilfe!

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Anzeige

    Powerstation Test
    Zitat Zitat von radbruch
    ...
    Ich hatte das für nicht kritisch eingestuft, weil die nachfolgende if-Abfrage ja immer die aktuelle (möglicherweise zuletzt definierte) Variable verwendet. Wenn aber wirklich bei jedem Schleifendurchlauf 32 Bit zusätzlicher Speicher belegt wird, könnte vielleicht irgendein Überlaufeffekt auftreten. Das würde dann aber sehr schnell geschehen und so vielleicht den Eindruck vermitteln, die Messung würde nur zu Beginn stattfinden. Deshalb besser so:

    ...
    Stimmt. Ist auch nicht krittisch. Ich vermutte es wird keine speicherplatz verlieren oder (stack)uberlauf verursachen. Mir ist gelernt das variabelen, vielleich sogar constanten, nur zwisschen die {} klammern gultig sind. Weil die while-schleife damit endet, wird meines wissen diesen speicherplatz dort wieder frei gegeben. Aber bei den nächste durchlauf von while wieder de selbe platz auf neu benutzt. Wie gesagt, kein problem, nur nicht nett. Und habe versucht janse auf diese variabelen gültigkeit aufmerksam zu machen. Die {} klammern stehen in einem program nicht nur fur die lehsbarkeit.

    Meiner Meinung nach ist deshalb der asuro immer noch der beste Einsteigerroboter.
    Ich weiss nicht von jeder andere art von roboter aber ist auch meiner meinung. Aber nur wen man ein bisschen elektronik wissen hat, oder es bekommen wil und gedült dafur hat.

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.02.2010
    Ort
    irgendwo in BW
    Beiträge
    154
    hallo janse,
    ich würde auch probieren, die anzahl der schwarz-weis-übergänge auf jeder seite zu zählen und dann die anzahl zu vergleichen.
    such mal hier im forum, da hatten bestimmt schon viele vor dier des problem.
    gruß josua

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    05.03.2009
    Beiträge
    20
    Hallo Janse,

    wie die Vorgänger schon geschrieben haben, muss man die Odometriesensoren anders abfragen. Das funktioniert ungefähr so

    if ((data[0] < 550) && (flagl == TRUE))
    {
    flagl = FALSE;
    wegl++;
    }
    if ((data[0] > 650) && (flagl == FALSE))
    {
    flagl = TRUE;
    wegl++;
    }

    if ((data[1] < 550) && (flagr == TRUE))
    {
    flagr = FALSE;
    wegr++;
    }
    if ((data[1] > 650) && (flagr == FALSE))
    {
    flagr = TRUE;
    wegr++;
    }

    diff=wegr-wegl;

    Die Schwellenwerte (550, 650) musst du eventuell anpassen auf deinen Asuro.
    Abgesehen davon ist aber ein zweiter Schnitzer in deinem Programm.
    Nämlich der

    :
    }
    while(1);
    return 0;
    }

    Diese while(1); Schleife wird nie mehr verlassen, d.h. das Programm läuft genau einmal durch und rennt dann für immer in dieser Schleife. Also weg damit.

    Viel Spass beim programmieren
    Skroete

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    05.03.2009
    Beiträge
    20
    Hallo Janse,

    ich sehe gerade, daß das Programm ja nie an die zweite while(1); Schleife ran kommt.
    Also letzten Teil der Antwort bitte ignorieren.

    Gruß
    Skroete

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    06.02.2010
    Beiträge
    18
    danke für die vielen antworten. aber wie bekomme ich die daten der odometrie daten heraus gibt es dazu ein Programm?

  6. #16
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ich verwende meist diese Funktion um Werte auszugeben:
    Code:
    // aus: https://www.roboternetz.de/phpBB2/ze...=328394#328394
    void PrintChar(unsigned int x)
    {
       char ergebnis[5]  = {'0','0','0','0','0'};
       while (x >=10000) { ergebnis[0]++; x -=10000; }
       while (x >= 1000) { ergebnis[1]++; x -= 1000; }
       while (x >=  100) { ergebnis[2]++; x -=  100; }
       while (x >=   10) { ergebnis[3]++; x -=   10; }
       ergebnis[4] +=x;
       SerWrite(ergebnis,5);
    }
    Das war zwar ursprünglich für PollSwitch() gedacht, kann so aber auch 16bit-Werte anzeigen. Aufruf der Funktion mit PrintChar(data[0]);

    Gruß

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

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    06.02.2010
    Beiträge
    18
    ok vielen dank aber was muss ich jetzt dafür ändern?

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    01.12.2010
    Beiträge
    10
    Hallo, Janse und bisse weiter?
    Wieder ein Thread wo es sich im Sande verläuft.
    Michael

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen