-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Geschwindigkeit einstellen für Dummys

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847

    Geschwindigkeit einstellen für Dummys

    Anzeige

    Hallo Miteinander,

    nachdem mein neuer ASUMO alle Tests bestanden hat habe ich gleich voller Freude die LineDemo (sh. Anhang) geflasht und meine erste Entäuschung erlebt. Der kleine Kerl ist viiiiiiel zu schnell unterwegs um seinen Weg auf der extra ausgedruckten Linientestarena zu finden. Da ich (noch) kein Programmierer bin wäre ich froh wenn mir vorab ein Profi verraten könnte, wie ich bei dem Programm die Geschwindigkeit einstellen kann.

    Danke mal im voraus und bitte Nachsicht üben *schäm*

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    23
    Beiträge
    98
    hallo pinsel120866

    du musst define speed änderen am besten auf ca. 150.

    mfg liggi
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Hallo Liggi,

    danke für die Antwort. Ich habe den Code jetzt folgendermaßen abgeändert:

    Code:
    #include "asuro.h"
    
    #define SPEED  150
    
    int main(void) 
    { 
      LineDemo(); 
      return 0; 
    }
    
    int speedLeft,speedRight;
    unsigned int lineData[2];
    int ADOffset;
    
    void LineLeft (void)
    {
    	speedLeft  += 1;
    	if (speedLeft > 150) speedLeft = 151;
    }
    
    void LineRight (void)
    {
    	speedRight  += 1;
    	if (speedRight > 150) speedRight = 151;
    }
    
    void LineDemo(void)
    {
    int i;
    unsigned char j;
    
    	Init();
    
    	FrontLED(ON);
    	for (j = 0; j < 255; j++) LineData(lineData);
    	LineData(lineData);
    	ADOffset = lineData[0] - lineData[1];
    	speedLeft = speedRight = SPEED;
    	for(;;) {
    		LineData(lineData);
    		i = (lineData[0] - lineData[1]) - ADOffset;
    		if ( i > 4) {
    			StatusLED(GREEN);
    			LineLeft();
    		}
    		else if ( i < -4) {
    			StatusLED(RED);
    			LineRight();
    		}
    		else {
    			StatusLED(OFF);
    			speedLeft = speedRight = SPEED;
    		}
    		MotorSpeed(speedLeft,speedRight);
    	} 
    }
    War anscheinend nichts, der ASURO fährt jetzt schnurgeradeaus - hab ich's falsch gemacht?

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Ich wünsche allen Forums-Usern ein gutes neues Jahr!

    Ich wäre sehr dankbar wenn sich einer der geschätzten Programmierprofis den o.a. Code ansehen und mir einen Tip geben könnte.

    Herzlichen Gruß

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    23
    Beiträge
    98
    das ganze wird nur einmal durch laufen du musst das Programm ungefähr so ändern:
    Code:
    #include "asuro.h" 
    
    #define SPEED  150 
    
    int main(void) 
    { 
      LineDemo(); 
      return 0; 
    } 
    
    int speedLeft,speedRight; 
    unsigned int lineData[2]; 
    int ADOffset; 
    
    void LineLeft (void) 
    { 
       speedLeft  += 1; 
       if (speedLeft > 150) speedLeft = 151; 
    } 
    
    void LineRight (void) 
    { 
       speedRight  += 1; 
       if (speedRight > 150) speedRight = 151; 
    } 
    
    void LineDemo(void) 
    { 
    int i; 
    unsigned char j; 
    
       Init(); 
       while(1) //Endlosschleife
    {
       FrontLED(ON); 
       for (j = 0; j < 255; j++) LineData(lineData); 
       LineData(lineData); 
       ADOffset = lineData[0] - lineData[1]; 
       speedLeft = speedRight = SPEED; 
       for(;;) { 
          LineData(lineData); 
          i = (lineData[0] - lineData[1]) - ADOffset; 
          if ( i > 4) { 
             StatusLED(GREEN); 
             LineLeft(); 
          } 
          else if ( i < -4) { 
             StatusLED(RED); 
             LineRight(); 
          } 
          else { 
             StatusLED(OFF); 
             speedLeft = speedRight = SPEED; 
          } 
          MotorSpeed(speedLeft,speedRight); 
       } 
    } 
    }

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

    Versuche es mal so:
    Code:
    #include "asuro.h"
    
    #define SPEED  150
    
    int speedLeft,speedRight;
    unsigned int lineData[2];
    int ADOffset;
    
    void LineLeft (void)
    {
       if (speedLeft < SPEED) speedLeft  += 1;
          else if (speedRight > 0) speedRight -= 1;
    }
    
    void LineRight (void)
    {
       if (speedRight < SPEED) speedRight  += 1;
          else if (speedLeft > 0) speedLeft -= 1;
    }
    
    void LineDemo(void)
    {
    int i;
    unsigned char j;
    
       Init();
    
       FrontLED(ON);
       for (j = 0; j < 255; j++) LineData(lineData);
       LineData(lineData);
       ADOffset = lineData[0] - lineData[1];
       speedLeft = speedRight = SPEED;
       for(;;) {
          LineData(lineData);
          i = (lineData[0] - lineData[1]) - ADOffset;
          if ( i > 4) {
             StatusLED(GREEN);
             LineLeft();
          }
          else if ( i < -4) {
             StatusLED(RED);
             LineRight();
          }
          else {
             StatusLED(OFF);
             speedLeft = speedRight = SPEED;
          }
          MotorSpeed(speedLeft,speedRight);
       }
    }
    
    int main(void)
    {
      LineDemo();
      return 0;
    }
    for(;;) ist eine Endlosschleife. Beim Start sollten beide Sensoren etwa den selben Untergrund sehen (beide hell oder beide dunkel) damit der Offset (Empfindlichkeitsunterschied) halbwegs richtig ermittelt wird.

    Gruß

    mic

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

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Danke für die Tipps.

    Wenn ich den Code von Radbruch kompiliere, kommt folgendes heraus:

    Code:
    C:\Dokumente und Einstellungen\Administrator.EMSNB008\Desktop\ASURO\ASURO_src\FirstTry>make all 
    set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
    | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
    [ -s test.d ] || rm -f test.d
    test.c:14:78: ../inc/ir-asuro.h: No such file or directory
    test.c:15:30: ../inc/ir-asuro.c: No such file or directory
    -------- 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.
    
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
    test.c:14:78: ../inc/ir-asuro.h: No such file or directory
    test.c:15:30: ../inc/ir-asuro.c: No such file or directory
    test.c: In function `main':
    test.c:21: warning: implicit declaration of function `Init'
    test.c:22: warning: implicit declaration of function `StatusLED'
    test.c:22: error: `RED' undeclared (first use in this function)
    test.c:22: error: (Each undeclared identifier is reported only once
    test.c:22: error: for each function it appears in.)
    test.c:22: warning: implicit declaration of function `Msleep'
    test.c:22: error: `GREEN' undeclared (first use in this function)
    test.c:23: warning: implicit declaration of function `FrontLED'
    test.c:23: error: `ON' undeclared (first use in this function)
    test.c:24: warning: implicit declaration of function `MotorDir'
    test.c:24: error: `FWD' undeclared (first use in this function)
    test.c:27: error: `DDRD' undeclared (first use in this function)
    test.c:27: error: `DDD1' undeclared (first use in this function)
    test.c:28: error: `PORTD' undeclared (first use in this function)
    test.c:28: error: `PD1' undeclared (first use in this function)
    test.c:29: error: `OCR2' undeclared (first use in this function)
    test.c:32: error: `PIND' undeclared (first use in this function)
    test.c:32: error: `PD0' undeclared (first use in this function)
    test.c:34: warning: implicit declaration of function `LineData'
    test.c:35: warning: implicit declaration of function `MotorSpeed'
    test.c:37: warning: implicit declaration of function `BackLED'
    test.c:37: error: `OFF' undeclared (first use in this function)
    test.c:41: error: `RWD' undeclared (first use in this function)
    test.c:46: error: `BREAK' undeclared (first use in this function)
    test.c:48: error: `YELLOW' undeclared (first use in this function)
    test.c:50: warning: implicit declaration of function `Sleep'
    test.c:60:2: warning: no newline at end of file
    make: *** [test.o] Error 1
    
    > Process Exit Code: 2
    Ich verwenden noch die Orginal-Libery von der CD - muss ich upgraden?

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo Pinsel,

    schön dass dein asuro wieder läuft.

    Das Programm funktioniert auch mit der orginalen CD-Lib, allerdings verwende ich verschiedene Versionen davon die ich (Anfängerfehler meinerseits) in einem extra Verzeichniss verwalte.

    Meine Version heist ir-asuro.c und liegt bei mir in ../inc/. ich habe das oben im Code schon geändert, aber du hast wohl schon vor der Änderung das Programm kopiert. Lösung: Nochmal kopieren.

    Übrigends schwingt sich mein asuro mit diesem Programm gelegentlich recht heftig auf. Je geringer der Wert für Speed ist, umso schöner folgt er der Linie.

    Gruß

    mic

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

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Hallo, ihr Beiden,

    jetzt dachte ich, wär schön, so (m)ein erstes asuro-Programm durchs Wohnzimmer zu blitzen, aber - nix da:

    1) Der code von mic von oben,
    2) asuro.h von der CD
    3) Knopf [F7] von AVRStudio.

    Dabei kommt raus:
    Build started 5.1.2008 at 19:36:53
    avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT line-demo.o -MF dep/line-demo.o.d -c ../line-demo.c
    In file included from ../asuro.h:34,
    from ../line-demo.c:7:
    c:/programme/winavr-20070525/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
    ../line-demo.c: In function 'main':
    ../line-demo.c:13: warning: implicit declaration of function 'LineDemo'
    ../line-demo.c: At top level:
    ../line-demo.c:34: warning: conflicting types for 'LineDemo'
    ../line-demo.c:13: warning: previous implicit declaration of 'LineDemo' was here
    avr-gcc.exe -mmcu=atmega8 -Wl,-Map=line-demo.map line-demo.o -o line-demo.elf
    line-demo.o: In function `LineDemo':
    ../line-demo.c:38: undefined reference to `Init'
    ../line-demo.c:41: undefined reference to `FrontLED'
    ../line-demo.c:42: undefined reference to `LineData'
    ../line-demo.c:43: undefined reference to `LineData'
    ../line-demo.c:47: undefined reference to `LineData'
    ../line-demo.c:50: undefined reference to `StatusLED'
    ../line-demo.c:54: undefined reference to `StatusLED'
    ../line-demo.c:58: undefined reference to `StatusLED'
    ../line-demo.c:61: undefined reference to `MotorSpeed'
    make: *** [line-demo.elf] Error 1
    Build failed with 9 errors and 4 warnings...
    Wenn ich nun zusätzlich die <avr/interrupt.h> benutze, dann gibts noch mehr Ärger .

    Was blick ich denn da schon wieder nicht ?
    Ciao sagt der JoeamBerg

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hast Du asuro.c und asuro.h ins Projekt eingebunden? Die Files müssen auf der linken Seite im sichtbar sein.

    Gruß,
    robo

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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