- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Mein erstes Programm

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2010
    Ort
    Oberplatz
    Alter
    29
    Beiträge
    12

    Mein erstes Programm

    Hallo,

    ich bin neu hin und wollte mal fragen ob ihr mein selbst geschriebenes Programm mal durch schauen könnst ob es auch wirklich geht ^^

    Code:
    #include "RP6RobotBaseLib.h"
    
    int main(void)
    {
    	intRobotBase();
    	powerON();
    
    	moveAtSpeed(50,50)
    	getLeftSpeed(30,50)
    	getRightSpeed(50,30)
    	startStopwatch1();
    
    	while(true)
    	{
    		if(getStopwatch1() > 4000)
    		{
    		if(getDirection() == FWD)
    			changeDirection(LEFT);
    		else if(getDirection() == LEFT)
    			changeDirection(RIGHT);
    		else if(getDircetion() == RIGHT)
    			changeDirection(BWD);
    			setStopwatch1(0);
    	}
    	task_motionControl();
    	task_ADC();
    	}
    	returun 0;
    }

    und ich hätte da noch ein Problem. Und zwar schaut es wiefolgt aus:
    ich habe den Demo ordner auf das laufwerk C:\ entpackt und jetz will ich mein neues programm complieren aber es kommt nur ein ordner names: .dep und da ist eine datei drin.
    Auch wen ich in der make all.bat pause mache verstehe ich den fehler nicht
    Code:
    C:\RP6Examples_20080915\RP6BASE_EXAMPLES\RP6Base_Move9_01>set LANG=C
    
    C:\RP6Examples_20080915\RP6BASE_EXAMPLES\RP6Base_Move9_01>make all
    
    -------- begin --------
    avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
    Copyright (C) 2006 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.
    
    
    Compiling: RP6Base_Move9_01.c
    avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfiel
    ds -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_Mov
    e9_01.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gn
    u99 -MD -MP -MF .dep/RP6Base_Move9_01.o.d RP6Base_Move9_01.c -o RP6Base_Move9_01
    .o
    RP6Base_Move9_01.c: In function 'main':
    RP6Base_Move9_01.c:5: warning: implicit declaration of function 'intRobotBase'
    RP6Base_Move9_01.c:9:20: error: macro "getLeftSpeed" passed 2 arguments, but tak
    es just 0
    RP6Base_Move9_01.c:9: error: expected ';' before 'getLeftSpeed'
    RP6Base_Move9_01.c:10:21: error: macro "getRightSpeed" passed 2 arguments, but t
    akes just 0
    RP6Base_Move9_01.c:21: warning: implicit declaration of function 'getDircetion'
    RP6Base_Move9_01.c:28: error: 'returun' undeclared (first use in this function)
    RP6Base_Move9_01.c:28: error: (Each undeclared identifier is reported only once
    RP6Base_Move9_01.c:28: error: for each function it appears in.)
    RP6Base_Move9_01.c:28: error: expected ';' before numeric constant
    RP6Base_Move9_01.c:29:2: warning: no newline at end of file
    make: *** [RP6Base_Move9_01.o] Error 1
    
    C:\RP6Examples_20080915\RP6BASE_EXAMPLES\RP6Base_Move9_01>pause
    Drücken Sie eine beliebige Taste . . .
    könntet ihr mir vielleicht helfen?

    MfG Michael K.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Hallo Michael,

    RP6Base_Move9_01.c:5: warning: implicit declaration of function 'intRobotBase'
    Soll die funktion vielleicht initRobotBase heißen? Der Compiler kennt nämlich (laut Meldung) keine intRobotBase

    RP6Base_Move9_01.c:9:20: error: macro "getLeftSpeed" passed 2 arguments, but takes just 0
    getLeftSpeed() erwartet scheinbar keine Parameter ...

    RP6Base_Move9_01.c:21: warning: implicit declaration of function 'getDircetion'
    Tippfehler, soll wohl getDirection lauten

    RP6Base_Move9_01.c:28: error: 'returun' undeclared (first use in this function)
    Tippfehler, sollte return heißen

    mfG
    Markus

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2010
    Ort
    Oberplatz
    Alter
    29
    Beiträge
    12
    Ah danke aber was heißt das :
    getLeftSpeed() erwartet scheinbar keine Parameter?

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Auf die schnelle und ungetestet:

    Code:
    #include "RP6RobotBaseLib.h"
    
    uint8_t Fahrtrichtung = FWD;
    
    int main(void)
    {
       initRobotBase();
       powerON();
    
       changeDirection(Fahrtrichtung);
       moveAtSpeed(50,50);
       //getLeftSpeed(30,50)
       //getRightSpeed(50,30)
       startStopwatch1();
    
       while(true)
       {
          if(getStopwatch1() > 4000)
          {
       		setStopwatch1(0); // !!!
          	if(Fahrtrichtung == FWD) Fahrtrichtung = LEFT;
          		else if(Fahrtrichtung == LEFT) Fahrtrichtung = RIGHT;
          			else if(Fahrtrichtung == RIGHT) Fahrtrichtung = BWD;
          				else if(Fahrtrichtung == BWD) Fahrtrichtung = FWD;
          	changeDirection(Fahrtrichtung);
       	}
       	task_motionControl();
       	task_ADC();
       }
       return 0;
    }
    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!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2010
    Ort
    Oberplatz
    Alter
    29
    Beiträge
    12
    radbruch könntest du vlt eine kurze erklärung dahinter schreiben wär nett

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Zitat Zitat von xMichiiix
    Ah danke aber was heißt das :
    getLeftSpeed() erwartet scheinbar keine Parameter?
    Du rufst das ganze so auf: getLeftSpeed(30,50)
    Das sind also zwei Parameter (30 und 50). Der Compiler beschwert sich darüber dass getLeftSpeed aber exakt 0 Parameter erwartet, du also nichts reinstecken sollst.
    Macht ja auch Sinn bei einer Funktion (eigentlich ist es ja ein Makro) die nur etwas zurückgeben soll (das gibt zumindest der Name vor)

    mfG
    Markus

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2010
    Ort
    Oberplatz
    Alter
    29
    Beiträge
    12
    ah jetz gehts )) danke

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2010
    Ort
    Oberplatz
    Alter
    29
    Beiträge
    12
    hab noch eine frage: muss ich immer mein programm in die RP6Base_Move9_01_uncommented.c und in die RP6Base_Move9_01.c eintrangen ?

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2010
    Ort
    Oberplatz
    Alter
    29
    Beiträge
    12
    Code:
    #include "RP6RobotBaseLib.h"
    #include "RP6ControlLib.h" 
    
    void runningLight(void)
    {
    	static uint8_t runLight = 1; 
    	static uint8_t dir; 
    	
    	if(getStopwatch4() > 100)
    	{
    		setLEDs(runLight); 
    	
    		if(dir == 0)
    			runLight <<= 1; 
    		else
    			runLight >>= 1;
    			
    		if(runLight > 7 ) 
    			dir = 1;			
    		else if (runLight < 2 ) 
    			dir = 0;
    
    		setStopwatch4(0);
    	}
    }
    
    void takeABreakAfterSomeTime(void)
    {
    	static uint8_t putScreenOnceOnly; 
    
    	if(getStopwatch5() > 24000)
    	{
    		clearLCD();
    		startStopwatch3();
    		startStopwatch4();
    		setStopwatch5(0); 
    		sound(160,20,20);
    		sound(220,40,0);
    	}
    	else if(getStopwatch5() > 22000)
    	{
    		if(!putScreenOnceOnly)
    		{
    			showScreenLCD("ok lass uns", "gehen!");
    			putScreenOnceOnly = 1;
    		}
    	}
    	else if(getStopwatch5() > 16000)
    	{
    		if(isStopwatch1Running()) 
    		{
    			stopStopwatch1();
    			stopStopwatch2();
    			showScreenLCD("ich moechte", "ein shirt brechen!");
    			putScreenOnceOnly = 0;
    			sound(220,40,20);
    			sound(160,40,0);
    		}
    	}
    }
    
    
    void bumpersStateChanged(void)
    {
    		writeString_P("\nBumper Status hat sich geaendert:\n");
    	if(bumper_left)
    		writeString_P(" - Linker Bumper gedrueckt!\n");
    	else
    		writeString_P(" - Linker Bumper nicht gedrueckt.\n");
    	if(bumper_right)
    		writeString_P(" - Rechter Bumper gedrueckt!\n");
    	else
    		writeString_P(" - Rechter Bumper nicht gedrueckt.\n");
    }
       
    int main(void)
    {
       initRobotBase();
       initRP6Control();
       initLCD(); 
       BUMPERS_setStateChangedHandler(bumpersStateChanged);
       setLEDs(0b111111);
       powerON();
    
       moveAtSpeed(50,50);
       //getLeftSpeed(50,30)
       //getRightSpeed(30,50)
       startStopwatch1();
       startStopwatch2();
       startStopwatch3();
       startStopwatch4();
       setLEDs(0b000000);
    
       while(true)
       {
          if(getStopwatch1() > 4000)
          {
    			move(60, FWD, DIST_MM(300), true); // 30cm Vorwärts fahren
    				rotate(30, LEFT, 180, true); // um 180° nach links drehen
    			move(60, FWD, DIST_MM(300), true); // 30cm Vorwärts fahren
    				rotate(30, LEFT, 90, true); // um 90° nach links drehen
    			move(60,FWD,DIST_MM(200), true);
    				rotate(30, RIGHT, 45, true);
    		setStopwatch1(0);
          }
    		if(getStopwatch2() > 300)
    	{
    			writeString_P("\nADC Lichtsensor Links: ");
    			writeInteger(adcLSL, DEC);
    			writeString_P("\nADC Lichtsensor Rechts: ");
    			writeInteger(adcLSL, DEC);
    			writeString_P("\nADC Akku: ");
    			writeInteger(adcBat, DEC);
    			writeChar('\n');
    		if(adcBat < 600)
    			writeString_P("Warnung! Akku ist bald leer!\n");
    		setStopwatch2(0);
    	}
    		if(getStopwatch3() > 300)
    		{
    			showScreenLCD("################", "################");
    			mSleep(1500);
    			showScreenLCD("Ich bin RP6 ein", "inilligenter Roboter");
    			mSleep(2500);
    			shwoScreenLCD("Dies war ein Test");
    			mSleep(5000);
    			setStopwatch3(0);			
    		}
          task_motionControl();
    	  task_ADC();
    	  task_Bumpers();
    	  runLCDText();
    	  runningLight();
       }
       return 0;
    }
    könnte mir einer sagen was an den programm falsch ist ? =(

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    DAS geht gar nicht:

    #include "RP6RobotBaseLib.h"
    #include "RP6ControlLib.h"

    Entweder ist das Programm für die RP6-Base oder für das M32. Beides gleichzeitig ist Unsinn.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen