- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Asuro Labyrinth

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    1234567890
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken laby-ausg.jpg  
    Geändert von i_make_it (04.02.2015 um 19:39 Uhr)

  2. #2
    Danke erstmal für die hilfreichen Tipps.
    Mit Funktionen habe ich mich bis jetzt gar nicht so intensiv beschäftigt, aber das wird sich in Zukunft ändern. Dadurch wird wirklich vieles übersichtlicher.

    @Sisor:

    Ich habe dein Programm mal auf meinen Asuro geflashed, aber er macht das gleiche wie bei meiner ursprünglichen Variante. Beim Compilen bin ich aber auf folgende Meldung gestoßen:
    test.c:165: warning: the address of 'isHindernis' will always evaluate as 'true'
    test.c:174: warning: the address of 'isHindernis' will always evaluate as 'true'
    test.c:191: warning: the address of 'isHindernis' will always evaluate as 'true'

    Das heißt doch, dass die Anweisungen, die für den Fall dass kein Hindernis da ist, ausgeführt werden sollten, nie ausgeführt werden, oder? Und genau das sieht man auch am Asuro: Er macht nur das, was er machen soll wenn er auf ein Hindernis stößt: rücksetzen und drehen, nie geradeaus fahren. Ich habe mir den Programmcode noch einmal angesehn, aber auch mit deiner übersichtlichen Variante finde ich den Fehler nicht.


    @i_make_it:

    diesen Fall würde ich beim Labyrinthbau einfach umgehen und nur die Umkehrung davon verwenden, d.h. er kommt in deinem Bild vom Ausgang und fährt in eine Richtung und dann kann er entweder eine Sackgasse finden oder eben den richtigen Weg. Das habe ich mit Papier und Stift auch schon ausprobiert. Wenn mein Programm so funktionieren würde wie es soll, dann müsste das funktionieren. Aber Danke trotzdem für deine Überlegungen.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von KMab Beitrag anzeigen
    @Sisor:

    Ich habe dein Programm mal auf meinen Asuro geflashed, aber er macht das gleiche wie bei meiner ursprünglichen Variante. Beim Compilen bin ich aber auf folgende Meldung gestoßen:
    test.c:165: warning: the address of 'isHindernis' will always evaluate as 'true'
    test.c:174: warning: the address of 'isHindernis' will always evaluate as 'true'
    test.c:191: warning: the address of 'isHindernis' will always evaluate as 'true'
    Ich habe im Code hinter den Aufrufen von isHindernis die Klammern vergessen. Es muss dort isHindernis() stehen, sonst wird nicht die Funktion aufgerufen, sondern die Adresse der Funktion abgeprüft, und da diese vorher definiert wurde, ist sie immer größer 'null' und damit 'true'.

    Die Funktion fragt übrigens ab, ob IRGENDEIN Taster gedrückt wird.

  4. #4
    Das Hinzufügen der Klammern bewirkt zwar dass die Warnungen verschwinden, aber mein Asuro macht trotzdem nichts anderes als vorher.

    Was genau gibt eigentlich die Funktion an das Hauptprogramm weiter? Wie gesagt im Bereich Funktionen bin ich noch nicht so bewandert.

    unsigned char isHindernis() {
    return PollSwitch() || PollSwitch() || PollSwitch();
    }

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Let me google this for you!
    asurowiki: Tasten
    Pollswitches_testen

  6. #6
    Also gibt isHindernis(), je nach dem welche Taster gedrückt sind, einen Wert an das Hauptprogramm? Also z.B. 8 oder 16 oder so?
    Wenn ja müsste da nicht noch verglichen werden, also wenn PollSwitch()>0 dann ist da ein Hindernis?
    Oder verbirgt sich hinter isHindernis() einfach TRUE oder FALSE?

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    while (!isHindernis() ) { }
    Dies ist gleichzusetzen mit :
    while (isHindernis() == 0) { }
    Also solange kein Taster gedrückt ist, Endlosschleife.
    In C entspricht eine 0 'false', jeder andere Wert ist 'true'.
    Z.B. bedeutet
    if(a) tueEtwas();
    'Wenn a nicht 0 ist tueEtwas'

    Teste mal deine Taster auf Funktion mit dem Programm: Pollswitches_testen

Ähnliche Themen

  1. Asuro Programmierung Brauche Hilfe Labyrinth !!!!!!!!!!!!!!!
    Von marcel_asuro im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 07.01.2010, 19:05
  2. Labyrinth
    Von asuro11 im Forum Sensoren / Sensorik
    Antworten: 14
    Letzter Beitrag: 10.05.2009, 12:02
  3. HILFE! Asuro Fährt durch ein "Labyrinth"
    Von Alorom im Forum Open Source Software Projekte
    Antworten: 2
    Letzter Beitrag: 06.04.2009, 14:49
  4. ASURO im Labyrinth, der Film
    Von stochri im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 03.02.2007, 13:13
  5. Antworten: 4
    Letzter Beitrag: 03.05.2005, 18:37

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests