- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 41

Thema: RP6 Linienfolger

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2013
    Beiträge
    8
    Zitat Zitat von radbruch Beitrag anzeigen
    Hallo

    Echt krass was die Lampe bringt. Das Programm ist immer noch minimal, aber das Ergebniss ist trotzdem prima:

    Bild hier  
    http://www.youtube.com/watch?v=r2VC2YF7ycM

    Code:
    // Einfaches Linienfolgen mit RP6-Sensoren (Test der Funktion 2)     6.3.2008 mic
    
    #include "RP6RobotBaseLib.h"
    
    // Achtung! Die PWM-Werte werden hier OHNE Rampe verändert!
    void setMotorPWM(uint8_t power_links, uint8_t power_rechts)
    {
    extern uint8_t mleft_ptmp, mright_ptmp;
    
    	if(power_links > 210) power_links = 210;
    	if(power_rechts > 210) power_rechts = 210;
    	mleft_power=mleft_ptmp=power_links;
    	mright_power=mright_ptmp=power_rechts;
    
    	OCR1BL = power_links;
    	OCR1AL = power_rechts;
    
    	if(power_links || power_rechts)
    		TCCR1A = (1 << WGM11) | (1 << COM1A1) | (1 << COM1B1);
    	else
    		TCCR1A = 0;
    }
    int main(void)
    {
    	initRobotBase();
    	while(1)
    	{
    		writeInteger(readADC(ADC_LS_L), 10);
    		writeString_P(" - ");
    		writeInteger(readADC(ADC_LS_R), 10);
    		writeString_P("\n\r");
    		if (readADC(ADC_LS_L) > readADC(ADC_LS_R))
    		{
    		   setLEDs(4);
    			setMotorPWM(100,50);
    		}
    		else
    		{
    			setLEDs(32);
    		   setMotorPWM(50,100);
    		}
    		mSleep(100);
    	}
    	return(0);
    }
    Der "Reflektor" ist ein Blatt Papier, die Werte auf den Fliesen sind über 800!

    Gruß

    mic


    Wie kann ich hier veranlassen das der Robby rückwärts statt vorwärts fährt?

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

    Die Drehrichtungen der Antriebe kann man mit setMotorDir() aus der Library RP6RobotBaseLib.c festlegen:

    Code:
    /**
     * Sets the rotation direction of both motors.
     *
     * DO NOT CHANGE THE DIRECTION OF THE MOTORS WHILE THEY
     * ARE RUNNING AT HIGH SPEEDS!!! 
     * It will not instantly damage the motors/gears, but they will  
     * wear out much faster if you do it at high speeds - better wait 
     * until speed has slowed down - and change direction AFTER this.
     *
     * -------------------------------------------------------------
     * IT IS A BETTER IDEA NOT TO USE THIS FUNCTION AT ALL!
     * Use moveAtSpeed together with task_motionControl instead.
     * YOU CAN NOT USE setMotorPower AND setMotorDir WHEN YOU USE 
     * task_motionControl!  This will not work!
     * -------------------------------------------------------------
     *
     * task_motionControl also ensures that the direction is changed
     * slowly and only after the motors have stopped!
     *
     * Example:
     *          // DO NOT perform these commands directly after each
     *			// other in your programs - this is just a LIST of possible
     *			// combinations:
     *			setMotorDir(FWD,FWD); // Move forwards
     *			setMotorDir(BWD,FWD); // Rotate right
     *			setMotorDir(FWD,BWD); // Rotate left
     *			setMotorDir(BWD,BWD); // Move backwards
     *
     */
    void setMotorDir(uint8_t left_dir, uint8_t right_dir)
    {
    	mleft_dir = left_dir;
    	mright_dir = right_dir;
    	mleft_des_dir = left_dir;
    	mright_des_dir = right_dir;
    	if(left_dir)
    		PORTC |= DIR_L;
    	else
    		PORTC &= ~DIR_L;
    	if(right_dir)
    		PORTC |= DIR_R;
    	else
    		PORTC &= ~DIR_R;
    }
    Wie beschrieben sollten die Drehrichtungen nicht bei Vollgas umgeschaltet werden!

    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!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2013
    Beiträge
    8
    könntest du mir anhand dem Programm welches ich gesendet habe, aufzeigen? lg

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hi EK9,

    sorry, aber da wirst du selber ran müssen. In dem Forum wird keiner für dich den Code umschreiben
    Schau mal in die Anleitung und in die Beispielprogramme. Dort findest du viele Beispiele und Erklärungen zu den ganzen Funktionen, auch zu setMotorDir() usw.

    Ist gar nicht so schwer, und durch ausprobieren lernst du mehr als durch ablesen.
    Wenns dann scheitert, hilft dir hier sicherlich jeder herauszufinden, warum!

Berechtigungen

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

12V Akku bauen