- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 14

Thema: Eure Meinung bitte

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2011
    Beiträge
    15
    So, neuer Anlauf!
    Ich habe jetzt die Odometrie mit dem Linienfolger verbunden.
    Dabei dient der Linienfolger zur Erkennung von Tischkanten. Somit soll der ASURO
    Auf verschieden großen Flächen fahren können ohne irgendwo runter zu fallen.
    Code:
    #include "asuro.h" 
    int main(void) 
    {   
    unsigned int data[2];     
    Init();
    while(1)
    {       
    OdometrieData(data);    
    	if (data [0] || data [1] < (70))
        {StatusLED(GREEN);}    
    
    else
    	{StatusLED(RED);}
    
    LineData(data);
    if (data[0] < data[1])
    		{ 
             BackLED(ON,ON); 
    		 }
    else
    	{
    	BackLED(OFF,OFF);
    	}
    }
    }
    Ich habe noch keine Werte o.ä. eingesetzt da ich zuerst testen wollte wie die beiden Programme zusammenarbeiten.
    Meine Frage ist wie man den ASURO über die Odometrie dazu bringt, sich zu drehen und dann weiter zu fahren, wieder zu drehen usw.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2011
    Beiträge
    15
    Mittlerweile habe ich die Vermutung, dass mein ASURO die Programme nicht mehr richtig durchspielt.
    Zum test sollten die LEDs alle abwechselnd blinken, solange bis der ASURO ausgeschaltet wird.
    Nach dem flashen, wie könnte es anders sein, leuchteten alle LED gleichzeitig. Natürlich tat sich dann nichts mehr.
    Ich habe schon verschiedene Möglichkeiten mit return und while ausprobiert(an verschiedenen Stellen im Programm etc.)
    leider blieb der Erfolg des Ganzen auf der Strecke.
    Kann es vielleicht damit zusammen hängen, dass die Batterien leer sind oder kurz davor stehen?

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Leider kann die Odometrie nicht Funktionieren wann den BackLEDs angeschaltet werden. Die Schaltungen sind Verknüpft. Die Odometrie LEDS müssen aus weil sonnst die BackLEDs kein minus Potential bekommen an den Kathoden.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Tobias Stosius Beitrag anzeigen
    Mittlerweile habe ich die Vermutung, dass mein ASURO die Programme nicht mehr richtig durchspielt.
    Zum test sollten die LEDs alle abwechselnd blinken, solange bis der ASURO ausgeschaltet wird.
    Nach dem flashen, wie könnte es anders sein, leuchteten alle LED gleichzeitig. Natürlich tat sich dann nichts mehr.
    Ich habe schon verschiedene Möglichkeiten mit return und while ausprobiert(an verschiedenen Stellen im Programm etc.)
    leider blieb der Erfolg des Ganzen auf der Strecke.
    Kann es vielleicht damit zusammen hängen, dass die Batterien leer sind oder kurz davor stehen?
    Ohne dein Programm gesehen zu haben können wir nicht Beurteilen ob es ein Software-Problem ist. Aber es ist möglich das den eingebaute Bootloader Programm eine zu niedrige Batteriespannung misst, und dann den StatusLED auf Rot schaltest. Dann soll auch biss abschalten "VL" gesendet werden über den IR-verbindung. Aber ich kann mich nicht erinnern ob alle der andere LEDs auch gleichzeitig angeschaltet werden. Weil das wurde den Batterie noch schneller leer machen. Das macht mir kein Sinn.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2011
    Beiträge
    15
    Also im Grunde ist es egal welches Programm ich schreibe...
    Als test nehmen ich mal ein aktuelles:
    Code:
    #include "myasuro.h"
    #include "asuro.h"
    
    int main()
    {
     	 Init();
     	 EncoderInit();    
    	while (1);
      	{
     	 Go(300,150);
         Turn(90,150);
      	 }
      return 0;
    }
    Bei diesem Beispiel leuchtet die StatusLED vom ASURO Grün und mehr tut sich nicht weder anstumpen noch drohen noch bitten oder betteln hilft. Stur wie ein Panzer der Kollege...

    Bei dieser Form hier bewegt sich der ASURO ein mal nach vorne und dreht sich in die entsprechende Richtung und bleibt dann stehen, wieder leuchtet die LED Grün:
    Code:
    #include "myasuro.h"
    #include "asuro.h"
    
    int main()
    {
     	 Init();
     	 EncoderInit();    
    	
      	
     	 Go(300,150);
         Turn(90,150);
      	
    	while (1);
      return 0;
    }

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Tobias Stosius Beitrag anzeigen
    Also im Grunde ist es egal welches Programm ich schreibe...
    Als test nehmen ich mal ein aktuelles:
    Code:
    #include "myasuro.h"
    #include "asuro.h"
    
    int main()
    {
     	 Init();
     	 EncoderInit();    
    	while (1);
      	{
     	 Go(300,150);
         Turn(90,150);
      	 }
      return 0;
    }
    Bei diesem Beispiel leuchtet die StatusLED vom ASURO Grün und mehr tut sich nicht weder anstumpen noch drohen noch bitten oder betteln hilft. Stur wie ein Panzer der Kollege...
    Doch ein Software Problemm! Also nicht egal:

    while (1);

    Das hier oben ist ein sehr Kompaktes Endloss-schleife. Asuro kommt hier nicht raus. Und weil am ende von den Init-funktion die StatusLED Grün schaltet ist. Macht er nichts weiter und Erklärt deine Erfindungen. Die {}-Klammern haben keine weitere Einfluss mehr auf den Ablauf von das Programm. Lössung: ; weg!

    Bei dieser Form hier bewegt sich der ASURO ein mal nach vorne und dreht sich in die entsprechende Richtung und bleibt dann stehen, wieder leuchtet die LED Grün:
    Code:
    #include "myasuro.h"
    #include "asuro.h"
    
    int main()
    {
     	 Init();
     	 EncoderInit();    
    	
      	
     	 Go(300,150);
         Turn(90,150);
      	
    	while (1);
      return 0;
    }
    Genau so hier. Erst eine strecke mit Go, danach ein Drehung von eine bestimmte Winkel. Danach geht er Fest in ein Endloss-schleife. Diese Variant ist aber gut. Weil Asuro nimmer das Befehl return 0; ausführen soll. Lösung: die Go und Turn Funktion Eindinden in eine weitere While-schleife:
    Code:
    ...
      while (1)
      {
        Go(300,150);
        Turn(90,150);
      } // Ende von den While-endloss schleife
    
      while (1); // Eine weitere, aber überflussige, endloss-schleife zur behebung das ausfuhren der return Befehl.
    
     return 0;
    } //Ende Main-Funktion
    Geändert von Valen (31.05.2011 um 12:05 Uhr)

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    while (1);

    er schleift sich in einer leeren Schleife zu tode!

    das Semikolon sagt ihm dass deine Schleife da beendet ist die geschweiften Klammern ignoriert er einfach!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2011
    Beiträge
    15
    Oh man... Vielen Dank!!
    Ich kenne mich noch nicht so 100%ig aus. Da mangelt es noch an
    dem ein oder anderen Baustein.
    Wenn ich das jetzt richtig verstanden habe sorgt das Semikolon dafür, dass die
    Schleife beendet wird und der Teil der in geschweiften Klammern steht weg fällt.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Tobias Stosius Beitrag anzeigen
    Oh man... Vielen Dank!!
    Ich kenne mich noch nicht so 100%ig aus. Da mangelt es noch an
    dem ein oder anderen Baustein.
    Wenn ich das jetzt richtig verstanden habe sorgt das Semikolon dafür, dass die
    Schleife beendet wird und der Teil der in geschweiften Klammern steht weg fällt.
    Nein, die Semikolon gibt das ende an von was in dem Schleife ausgeführt werden soll. Weil da zwischen while(1) und den Semikolon nichts steht, macht er auch nichts in den Endloss-schleife.

    while(1);
    =
    'Solange 1 (nicht gleich 0 ist), mache: Nichts ;'

    Die Code zwischen geschweiften Klammern ist wirklich ein Teil von sein Programm (diese Code steht sogar wirklich in sein Flash-gehirn). Aber beim ablaufen kommt er dort einfach nicht.
    Geändert von Valen (31.05.2011 um 12:33 Uhr)

Ähnliche Themen

  1. Ein Neuer braucht Eure Meinung!
    Von cnc-ba im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 1
    Letzter Beitrag: 11.02.2010, 18:03
  2. Ein Neuer braucht Eure Meinung!
    Von cnc-ba im Forum Umfragen
    Antworten: 1
    Letzter Beitrag: 11.02.2010, 17:04
  3. Schnell: Eure meinung zählt
    Von asurofreak. im Forum Buchempfehlungen
    Antworten: 3
    Letzter Beitrag: 02.07.2009, 07:16
  4. Eure Meinung zum Robo008 Board?!
    Von grind im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 07.06.2007, 23:00
  5. Eure Meinung zum Fahrgestell des RP5
    Von EDatabaseError im Forum Mechanik
    Antworten: 11
    Letzter Beitrag: 22.10.2006, 18:58

Stichworte

Berechtigungen

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

12V Akku bauen