- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Asuro steigt nicht aus while schleife aus

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Also ich finde es echt bemerkenswert, wie du die Gedanken aufgreifst und weiterdenkst. Selbstverständlich wäre das Ergebniss der letzten Lesung immer noch in odata gespeichert und könnte ohne erneute Lesung verwendet werden. An dieser Stelle habe ich wohl etwas überoptimiert ;)

    ..nur am ende fährt der Asuro wild durch die gegend und betätigt die ganze Zeit den Greifer,..
    Seltsam, vielleicht stimmt an dieser Stelle irgendetwas mit der Tastererkennung nicht. Ein Video wäre prima.

    Noch ein Hinweis zu deinem Ansatz mit den vielen Variablen, was ja eigentlich der Ansatz einer StateMachine ist:

    http://www.rn-wissen.de/index.php/So...#State_Machine
    http://www.google.de/search?q=c+state+machine

    Ach ja, und das habe ich ganz vergessen:

    Willkommen im RN-Forum und Glückwunsch zum asuro.

    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!

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    19.06.2011
    Beiträge
    17
    Also ich habe jetzt das Programm mal so umgeschrieben als wüsste er es nicht mehr, wie findest du das Programm so?

    PHP-Code:
    #include "asuro.h"
    #include "myasuro.h"

    int main(void)
    {
        
    unsigned int odata[2];
        
    unsigned int ldata[2]; // Speicherplatz für Odo- und Linedaten
        
    int i// Integervariable zur freien Verwendung

        
    Init();
        
    FrontLED(ON); // Linienbeleuchtung einschalten
        
    Sleep(255); // warten bis LED volle Helligkeit erreicht hat
        
    LineData(ldata); // ADC anwärmen
        
    while(1)
        {
            
    MotorSpeed(200,200); // und losfahren

            
    while(PollSwitch() == 0// folge der Linie bis zum ersten Hinderniss
            
    {
                
    LineData(ldata);
                if (
    ldata [0] > ldata [1])
                {
                    
    MotorSpeed(200,100);
                }
                else
                {
                    
    MotorSpeed(100,200);
                }
                
    Sleep(100); // Regelung etwas dämpfen
            
    }
            
    MotorSpeed(0,0); // anhalten weil Hinderniss erkannt wurde
            
    Msleep(500);

            
    OdometrieData(odata); // Becherfarbe ermitteln
            
    if (odata[0] > 950)
            {
                for (
    i=0i<20i++) // Becher aufnehmen (Servoimpuls 20x senden)
                
    {
                    
    BackLED(OFF,ON);
                    
    Msleep(1); // Impulslänge 1ms
                    
    BackLED(OFF,OFF);
                    
    Msleep(19); // Impulspause 19
                
    }
                
    MotorSpeed(0,200); // hell bedeutet nach links abbiegen
                
    StatusLED(YELLOW);
            }
            else
            {
                for (
    i=0i<20i++) // Becher aufnehmen (Servoimpuls 20x senden)
                
    {
                    
    BackLED(OFF,ON);
                    
    Msleep(1); // Impulslänge 1ms
                    
    BackLED(OFF,OFF);
                    
    Msleep(19); // Impulspause 19ms
                
    }
                
    MotorSpeed(200,0); // dunkel bedeutet nach rechts abbiegen
                
    StatusLED(RED);
            }

            
    Msleep(1000); // eine Sekunde drehen
            
    StatusLED(GREEN); //fertig
            
    MotorSpeed(200,200); // weiterfahren (und hoffen, dass die Linie noch da ist ;)
            
            
    while(PollSwitch() == 0// folge der Linie bis zum zweiten Hinderniss
            
    {
                
    LineData(ldata);
                if (
    ldata [0] > ldata [1])
                {    
                    
    MotorSpeed(200,100);
                }
                else
                {    
                    
    MotorSpeed(100,200);
                }
                
    Sleep(100);
            }

            
    MotorSpeed(0,0); // nochmals anhalten
            
    Msleep(500);

            for (
    i=0i<20i++) // und Becher wieder ablegen
            
    {
                
    BackLED(OFF,ON);
                
    Msleep(2); // Impulslänge 2ms
                
    BackLED(OFF,OFF);
                
    Msleep(18); // Prima!
            
    }
            
            
    OdometrieData(odata); // Becherfarbe ermitteln
            
    if (odata[0] > 950)
            {
                
    MotorSpeed(0,200); // hell bedeutet nach links abbiegen
                
    StatusLED(YELLOW);
            }
            else
            {
                
    MotorSpeed(200,0); // dunkel bedeutet nach rechts abbiegen
                
    StatusLED(RED);
            }
            
    Msleep(1000); // eine Sekunde drehen
            
    StatusLED(GREEN); //fertig
            
    MotorSpeed(200,200); 
        }
        return(
    0);

    Geändert von radbruch (19.06.2011 um 20:59 Uhr) Grund: Code-Tags eingefügt

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.06.2011
    Beiträge
    17
    Noch eine Sache zu der State Machine, ich verstehe nicht so ganz was ich damit machen soll was meinst du damit?

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Jetzt ist es doppelt gemoppelt. Wenn du ldata und odata getrennt verwendest, steht der letzte Wert (vom Aufnehmen des Bechers) noch in odata[0]. Aber prinzipiell sollte es auch so funtionieren, wenn der Becher nach dem Abstellen noch die selben ODO-Werte erzeugt. Funktioniert es denn nun mit deiner Änderung zufriedenstellend?

    Eine Statemachine beschreibt ein Programm das in mehreren aufeinanderfolgenden Schritten ausgeführt wird. Wenn ein Schritt erledigt ist wird der nächste Schritt ausgeführt. Das war wohl im Ansatz auch der Sinn von deinem while(a)...
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.06.2011
    Beiträge
    17
    Hier noch ein kurzes Filmchen was der Asuro jetzt macht:
    Igendwie unerklärlich, ich greife einmal kurz ein, damit die Sensoren sicher auf der Linie sind.
    http://www.facebook.com/?ref=home#!/...90419&comments

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    19.06.2011
    Beiträge
    17
    kannst du mir vielleicht erklären warum der sowas macht??

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Blöderweise habe ich keinen Facebook-Acount...
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken facebook-acount.gif  
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    19.06.2011
    Beiträge
    17
    Wie kann ich dann einen Film hier reinstellen

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von kmikesch Beitrag anzeigen
    Wie kann ich dann einen Film hier reinstellen
    Hochladen zu zbs, Youtube? Kein Profil benötigt für schauen.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    19.06.2011
    Beiträge
    17

    Odometrie

    Hallo,
    Ich möchte hier nur noch kurz auf mein neues Thema hinweißen, auf das ich in diesem Thema hinweißen möchte es gent darum, wie man auf ein schon gemessenes Odometrieergebniss nochmals zugereifen kann.
    Bitte entweder hier oder im anderen Thema antworten.
    Vielen dank
    Hier das andere Thema: https://www.roboternetz.de/community...ten-2x-abrufen

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. FOR-Schleife von -1 bis +1 nicht möglich?
    Von V:X im Forum Robby RP6
    Antworten: 3
    Letzter Beitrag: 29.12.2010, 16:16
  2. Helligkeit des Dimmers steigt nicht linear an
    Von 8undzwanzigs im Forum PIC Controller
    Antworten: 28
    Letzter Beitrag: 14.11.2010, 14:18
  3. While Schleife funktioniert nicht!
    Von Wiederstand im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 18.08.2010, 18:37
  4. Antworten: 1
    Letzter Beitrag: 09.03.2009, 14:19
  5. While-Schleife geht nicht!!!
    Von Undergroundi im Forum Asuro
    Antworten: 14
    Letzter Beitrag: 22.12.2007, 20:34

Stichworte

Berechtigungen

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

12V Akku bauen