- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 7 von 7

Thema: RP6 Code schreiben

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.08.2010
    Beiträge
    33

    RP6 Code schreiben

    Anzeige

    Praxistest und DIY Projekte
    hallo

    bin neu in die robotik eingestiegen (RP6). habe auch gleich eine frage: Wie integriere ich ein servo code(von radbruch) 2. in ein bestehenden code 1. mein problem ist das ich kein make file erstellen kann. d.h wie kann ich die codes verbinden. meine codes lauten:

    1.
    Code:
    #include "RP6RobotBaseLib.h" 
    
    
    void acsStateChanged(void)
    {
    	// Print messages to UART:
    	writeString_P("ACS state changed   L: ");
    	
    	if(obstacle_left)  // Left "sensor" has detected something
    		writeChar('o');
    	else
    		writeChar(' ');
    		
    	writeString_P(" | R: ");
    	rotate(40, RIGHT, 90, BLOCKING);
    
    	if(obstacle_right) // Right "sensor" has detected something
    		writeChar('o');
    	else
    		writeChar(' ');
    	
    	writeString_P(" | L: ");
    	rotate(0, LEFT, 0, BLOCKING);
    	
    	
    	if(obstacle_right && obstacle_left) // left AND right sensor have detected something...
    		writeString_P("   MIDDLE!");
    		
    	writeChar('\n');
    		moveAtSpeed(0,0);        //Bremsen
    move(50, FWD, DIST_MM(6000), BLOCKING);  //zurückfahren
    rotate(40, RIGHT, 320, BLOCKING);          //Drehen
    move(50, FWD, DIST_MM(6000), BLOCKING);//Vorwärts (am Hindernis vorbei) fahren
    rotate(40, LEFT, 320, BLOCKING);   //zurückdrehen
    //dann geradeaus weiter 
    	// -----------------------------------------------------------
    	
    	
    	if(obstacle_left && obstacle_right) // Obstacle in the middle?
    		statusLEDs.byte = 0b100100;
    	else
    		statusLEDs.byte = 0b000000;
    	statusLEDs.LED5 = obstacle_left;
    	statusLEDs.LED4 = (!obstacle_left);  // Inverted LED5!
        statusLEDs.LED2 = obstacle_right;
    	statusLEDs.LED1 = (!obstacle_right);  // Inverted LED2!
    	
    	// Update the LED values:
    	updateStatusLEDs(); // The LEDs are turned on/off here! __Not__ in the lines above!	
    }
    
    
    void bumpersStateChanged(void)
    {
    	writeString_P("Bumpers state changed!   BPL: ");
      
    	if(bumper_left)  // Left Bumper
    		writeChar('o');
    	else
    		writeChar(' ');
    	move(50, BWD, DIST_MM(100), BLOCKING);  //zurückfahren
    		
    	writeString_P(" | BPR: ");
    	
    	if(bumper_right) // Right Bumper
    		writeChar('o');
    	else
    		writeChar(' ');
    	move(50, BWD, DIST_MM(100), BLOCKING);  //zurückfahren
    		
    	writeChar('\n');
    }
    
    
    /*****************************************************************************/
    // Main - The program starts here:
    
    int main(void)
    {
    	initRobotBase(); // Always call this first! The Processor will not work
    					 // correctly otherwise. 
    
    	// Write Message to UART:
        writeString_P("\nRP6 ACS - Testprogram\n");
    	writeString_P("_____________________\n\n");
    
    	setLEDs(0b111111);
    	mSleep(1000);
    	setLEDs(0b001001);
    	
    	// ---------------------------
    	// Register Event Handlers:
    	
    	// Set ACS state changed event handler:
    	ACS_setStateChangedHandler(acsStateChanged);
    	
    	// Set Bumpers state changed event handler:
    	BUMPERS_setStateChangedHandler(bumpersStateChanged);
    
    	// ---------------------------
    	
    	powerON(); 
    
    	// ---------------------------
    
    	setACSPwrMed(); // 
    	
    	
    	// setACSPwrLow(); // Low power
    	// setACSPwrHigh(); // High Power
    	
    	// ---------------------------
    	
    	// Main loop
    	while(true) 
    	{		
    		
    		task_RP6System();
    		
    	}
    	return 0;
    }
    2.
    Code:
    // Servoansteuerung mit sleep(), Servoimpuls an ADC0, 2 Positionen 10.1.09 mic
    
    #include "RP6RobotBaseLib.h"
    
    uint8_t i;
    
    int main(void)
    {
       initRobotBase();   // initialisieren
       DDRA |= 1;         // Datenrichtung Port A Bit 0 (das ist ADC0) auf Ausgang
    
       while(true)
       {
          for(i=0;i<100; i++) // 100 mal Impuls für Position 1 senden
          {
             PORTA |= 1;
             sleep(10);
             PORTA &= ~1;
             sleep(200-10);
          }
          for(i=0;i<100; i++) // 100 mal Impuls für Position 2 senden
          {
             PORTA |= 1;
             sleep(20);
             PORTA &= ~1;
             sleep(200-20);
          }
       }
       return(0);
    }
    danke

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    29
    Beiträge
    661
    ich würds doch einfach normal reinkopieren an die Stelle die du haben möchtest.

    PS: nur die for-Schleife
    MfG Martinius

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.08.2010
    Beiträge
    33
    ok. danke für die schnelle antwort. teste es gleich mal.
    MfG Raw

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.08.2010
    Beiträge
    33
    so, ich habe verschidene varianten ausprobiert. scheint nicht zu klappen. habe ständig fehler: Process Exit Code: 2. kann man wie oben erwähnt: "nur die for-schleife" genauer definieren, oder zeigen wie es im code aussehen sollte. thx

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo,

    > mein problem ist das ich kein make file erstellen kann.

    --> Nimm einfach ein passendes vorhandenes von den RP6 Beispielprogrammen und ändere es um!


    > Process Exit Code: 2

    Das sagt nur DAS ein Fehler da ist. Du musst schon die vollständige Compilerausgabe und den Code posten sonst kann man dazu nichts sagen.

    MfG,
    SlyD

    PS: Es gibt hier ein RP6 Forum!
    Ein Mod könnte den Thread hier mal dahin verschieben.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    29
    Beiträge
    661
    sorry hab vergessen das du uint8_t i; auch kopieren must sonst funkt die schleife nicht
    MfG Martinius

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    03.08.2010
    Beiträge
    33
    danke. funktioniert zwar noch nicht reibungslos, kann aber damit arbeiten. super forum.

Berechtigungen

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

Labornetzteil AliExpress