- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Hilfe für einen "Blutigen" Anfänger

  1. #1

    Hilfe für einen "Blutigen" Anfänger

    Anzeige

    E-Bike
    Ein "Hallo" an alle

    Ich bin neu hier in der Gegend und besitze seit kurzem einen Aruso
    Bis jetzt ging alles glatt aber ich hänge mit meinem Projekt fest.
    Aufbau top - Flashen top aber...
    sobalt ich einen anderen fertigen File übertrage, rührt er sich nicht mehr.
    Der Selbsttest von der CD Rom ist der einzigste File der funzt.
    ....und der läuft einwandfrei.
    Eigendlich brauche ich nur die Funktion der Linenverfolgung.
    Was mache ich falsch ?

    Gruß Lamameister

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.063
    was willst du denn flashen? zeig mal deinen programmcode...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #3
    hallo damaltor
    schau mal was das ist
    Ich habe den verdacht das beim wandeln von dem C quellcode in die Hex was schief läuft.
    Wie oder was gibt es zu beachten.?
    Danke im vorraus

    Quellcode
    zb. diesen hier:
    Code:
    #include "asuro.h"
    
    #define SPEED  0x8F
    
    int speedLeft,speedRight;
    unsigned int lineData[2];
    int ADOffset;
    
    void LineLeft (void)
    {
      speedLeft  += 1;      /* links mehr Gas geben */
      if (speedLeft > 0xFE) speedLeft = 0xFF;
    }
    
    void LineRight (void)
    {
      speedRight  += 1;     /* rechts mehr Gas geben */
      if (speedRight > 0xFE) speedRight = 0xFF;
    }
    
    int main(void)
    {
      int i;
      unsigned char j;
    
      Init();
    
      FrontLED(ON);
      for (j = 0; j < 0xFF; j++) LineData(lineData);
      LineData(lineData);
      ADOffset = lineData[LEFT] - lineData[RIGHT];     
      speedLeft = speedRight = SPEED;
      for(;;) {
        LineData(lineData);
        i = (lineData[LEFT] - lineData[RIGHT]) - ADOffset;
        if ( i > 4) {
          StatusLED(GREEN);
          LineLeft();
        }
        else if ( i < -4) {
          StatusLED(RED);
          LineRight();
        }
        else {
          StatusLED(OFF);
          speedLeft = speedRight = SPEED;
        }
        MotorSpeed(speedLeft,speedRight);
      }
      return 0;
    }

  4. #4
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.063
    ich habe deinen beitrag geändert (bitte benutze ab sofort den code button beim posten von quellcode!) und meinen namen geändert XD

    bei diesem code steht der roboter still.

    das problem ist, dass die geschwindigkeiten immer wieter erhöht werden. du gragst zwar ab, ob die geschwindigkeiten größer als 0xFE werden (bei dieser gelegenheit: warum eigentlich hex-zahlen? man muss ein zeichen mehr tippen, und man spart nichts ein für das programm. eigentlich wird es dadurch nicht übersichtlicher.), und setzt sie dann auf 0xFF. beim nächsten erhöhungsdurchlauf werden die speedwerte jedoch wieder +1 gerechnet (oxFF + 1 = 0x00), und damit steht der roboter.

    die Variable ADOffset ist nicht definiert worden.

    ich glaube ausserdem nicht dass der compiler for(; akzeptiert. setze an diese stelle lieber while(1).

    das sind einige grobe fehler. eigetlich dürfte die kompilierung nicht klappen, schon allein weil die variable nicht deklariert ist. kommt beim kompilieren keine fehlemeldung? welche ausgabe bekommst du beim kompilieren? bitte poste auch diese mit dem code button.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  5. #5

    Richtig ! der Robo steht still !

    Hi damaltor
    besten dank für deine Antwort.
    soweit verstehe ich das ja aber wiederrum verstehe ich nicht warum andere solche codes die nicht funzen auf ihrer website zur verfügung bzw zum download stellen?!?!
    Ich musst gestehen das ich noch nicht in der Lage bin selber zu schreiben - aufgrung mangels wissen...... aber es kann doch nicht so schwierig sein eine Linienverfolgung bei möglichst geringer Geschwindigkeit entstehen zu lassen. ( Wo gibt es soetwas) ))
    Alles was ich bis jetzt kompiliert habe kommt beim kompilieren ohne fehlemeldung. Aller Anfang ist schwer
    Danke für deinen Hinweis ... ich lerne immer mehr - oder-?!
    Gruß lamameister



    Code:
    D:\Dokumente und Einstellungen\Eigene Dateien\Asuro\asuro_src\ASURO_src\FirstTry>make all 
    -------- begin -------- 
    avr-gcc --version 
    avr-gcc (GCC) 3.3.1 
    Copyright (C) 2003 Free Software Foundation, Inc. 
    This is free software; see the source for copying conditions. There is NO 
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
    
    Size before: 
    test.elf : 
    section size addr 
    .text 1512 0 
    .data 0 8388704 
    .bss 1 8388704 
    .noinit 0 8388705 
    .eeprom 0 8454144 
    .stab 3120 0 
    .stabstr 1763 0 
    Total 6396 
    
    
    Size after: 
    test.elf : 
    section size addr 
    .text 1512 0 
    .data 0 8388704 
    .bss 1 8388704 
    .noinit 0 8388705 
    .eeprom 0 8454144 
    .stab 3120 0 
    .stabstr 1763 0 
    Total 6396 
    
    
    Errors: none 
    -------- end -------- 
    
    > Process Exit Code: 0

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.05.2007
    Ort
    Giessen und Fulda
    Alter
    39
    Beiträge
    81
    Weil die alle schw*l sind, die haben nur scheiße auf ihrer CD.
    ich hatte am anfang die selben Probleme mit deren mist, den ganzen rotz kannste vergessen, brauchste eh net, lad die die aktuelle lib runter und nimm dir als hilfe beim programmieren die HELP-File von der LIB, die funktionen sind da gut ersichtlich und so sachen wie linienverfolgung-test kannste dir da mal allegemein angucken, aber nicht direkt verwenden

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.063
    beherrsch dich, Mr.Roboto...


    lamameister:
    wo hsat du den code denn her? die compilation ergab keinen fehler, also scheint doch alles in butter zu sein.

    fertige codes runterzuladen, die man nicht versteht, und deren fehler man nicht findet, ist sinnlos. wir werden dir auch keine fertigen codes geben - entweder du findest die im forum, oder du musst doch selbst ran.

    mach dir mal einen plan: was muss denn passieren, damit asuro auf der linie bleibt? wie man das in einen programmcode fasst, das können wir später mal schauen. mach dir zuerst mal einen ungefähren plan, indem du schrittweise beschreibst was passieren muss.
    wenn du am ende das programm selbst geschrieben hast, ist es besser weil du dann wirklich was gelernt hast, das verstehst was er tut und warum er das tut, und weil du selbst nach fehlern suchen kannst.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.07.2007
    Beiträge
    349
    Hallo!

    @lamameister und Mr.Roboto:
    Ich hab das Programm gerade getestet!
    Es ist fehlerfrei und lässt sich ohne irgendwelche Probleme übersetzen.

    Auch am Asuro funktioniert es, wenn auch nicht so gut wie wastes PID Regler. Ich würde dir diesen empfehlen da er wirklich sehr sauber arbeitet!

    Also nicht immer gleich über andere schimpfen wenn der Fehler bei Euch selbst liegt. Da hat jemand anderer vielleicht viel Arbeit reingelegt...
    Seit froh dass so viele Quellcodes öffentlich zugänglich sind.


    @damaltor:

    die Variable ADOffset ist nicht definiert worden.

    ich glaube ausserdem nicht dass der compiler for(;Zwinkern akzeptiert. setze an diese stelle lieber while(1).
    ADOffset sowie ein paar andere Variablen sind global definiert worden.
    for(;;) ist gleichwertig mit while(1), allerdings ist while(1) eindeutig die "schönere" Schreibweise.

    Übrigens hast du deinen Namen noch nicht genug ausgebessert :-D


    Grüße,
    Harri
    Grüße,
    Harri

  9. #9
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.063
    wusst edoch dass da was net stimmt... XD jetz is besser
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo zusammen,
    erst einmal schließe ich mich damaltor an: Mr.Roboto etwas mehr sinnvolles bitte!

    @lamameister
    Es wurde dir empfohlen, dass du dir die 'aktuelle LIB' runterladen sollt.
    Wenn du tatsächlich ein absoluter Anfänger bist, dann lass es im Moment erst einmal lieber sein, da die Installation der LIB noch weitere Probleme für dich bringen wird. Bleib erst einmal bei der Software, die zum Asuro mitgeliefert wurde. (Ist so schon schwer genug.)

    damaltor hat dich ja schon darauf hingewiesen. (Ja, ich gebe ihm Code. Tschuldigung damaltor)
    Hier das was er meint: Achte auf das 'speedLeft = 0xFE'
    Code:
    void LineLeft (void)
    {
      speedLeft  += 1;      /* links mehr Gas geben */
      if (speedLeft > 0xFE) speedLeft = 0xFE;
    }
    Wie damaltor schreibt, würde der Wert von speedLeft in einem weiteren Durchlauf erhöht, so dass er dann 0xFF + 1 = 0 wird. Das ist eben eine Vollbremsung.

    P.S: Und es ist doch sehr, sehr schwierig eine Linie wirklich gut zu verfolgen.


    Dann noch zu dem ADOffsetwert mal ein kleines Bild, da hier etwas Erklärung dazu gehört. (Lasst ADOffset einfach weg, wenn ihr eine Linie unter dem Sensor habt.)
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken img_2680-1.jpg  
    Lieber Asuro programieren als arbeiten gehen.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress