- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 18

Thema: SRF05 mit Servo auf RP6 Control M32

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    18.06.2011
    Ort
    Hechingen
    Alter
    51
    Beiträge
    20
    Hallo,

    vielen Dank für Eure Hilfe. Jetzt funktioniert alles wie es soll. Ich habe die Stopwatch- und die Servo-Lib aus diesem Forum und Code für den Sensor aus dem holländischen Arexx-Forum verwendet und angepasst. Als nächstes werde ich mich mit der Kommunikation zwischen RP6 Base und RP6 Control befassen.


    Hier ist der Code:

    Code:
    #include "./RP6Lib/RP6control/RP6ControlServoLib.h"
    #include "./RP6Lib/RP6common/RP6Stopwatch0Lib.h"
    #include "RP6ControlUltrasonic.h"
    
    volatile uint16_t pos = 0;
    
    //ULTRASONIC FUNCTIONS #######################################
    
    void task_US_SW()
    {
    	uint16_t range;
    	//MEASURING
    	DDRC |= IO_PC3;						// IO_PC3 Ausgang
    	PORTC |= (1<<PORTC3);				// IO_PC3 high  IO_PC3;
    	_delay_us(10);						// 10uS warten
    	PORTC &= (0<<PORTC3);				// IO_PC3 low  ~IO_PC3;
    		
    	DDRC &= ~IO_PC3;					// IO_PC3 Eingang
    	while(!(PINC & IO_PC3));			// Warten bis steigende Flanke an IO_PC3
    	setStopwatch01(0);
    	while(PINC & IO_PC3);				// Warten bis fallende Flanke an IO_PC3 
    	range = getStopwatch01() * 1.67;	// Wert der Stoppuhr * 1,67 = Abstand in cm.
    			
    	displayData(range);
    	//MEASURING END	
    }
    
    
    void displayData(uint16_t r)
    {
    	
    	writeString_P("Abstand:");
    	writeInteger(r, DEC);
    	writeString_P(" cm\n");
    	
    	sound(170,40,0);
    }
    
    //END OF ULTRASONIC FUNCTIONS ################################
    
    int main(void)
    {  
    	initRP6Control();
    
    	setLEDs(0b111111);
    	mSleep(500);
    	setLEDs(0b000000);
    
    	initSERVO(SERVO1);
    
    	startStopwatch2();
    	startStopwatch01();
    	
    	while(true)  
    	{
    		if (getStopwatch2() > 2000) {	// Alle 2000ms Servo drehen
    			
    			if (pos == 0) {
    				servo1_position = 0;
    			}
    			if (pos == 1) {
    				servo1_position = MIDDLE_POSITION;
    			}
    			if (pos == 2) {
    				servo1_position = RIGHT_TOUCH;
    			}
    			if (pos == 3) {
    				servo1_position = MIDDLE_POSITION;
    			}
    			
    			pos++;
    			if (pos > 3) {pos = 0;}
    			
    			setStopwatch2(0);
    			
    			task_US_SW();	
    		}
    		task_SERVO();		
    		
    		mSleep(3);
    		
    	}
    	return 0;
    }
    Und hier sind meine Einstellungen für den Servo aus der RP6ControlServoLib.h:
    Code:
    #define LEFT_TOUCH			56
    #define RIGHT_TOUCH			42
    #define MIDDLE_POSITION		(RIGHT_TOUCH / 2)
    #define PULSE_REPETITION           17			
    #define F_TIMER1			50000
    Geändert von Jordi (31.05.2015 um 09:28 Uhr) Grund: code-tags eingefügt

Ähnliche Themen

  1. Verkaufe RP 6 Roboter mit RP6 Control M32 und allerhand Zubehör
    Von andij84 im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 5
    Letzter Beitrag: 17.01.2014, 19:16
  2. Antworten: 5
    Letzter Beitrag: 15.03.2012, 18:03
  3. LCD am RP6 Control M32
    Von tobuc0 im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 02.10.2009, 21:34
  4. Antworten: 5
    Letzter Beitrag: 05.03.2008, 18:46
  5. RP6 CONTROL M32 - stand alone benutzen? also ohne RP6
    Von dirtyklaus im Forum Robby RP6
    Antworten: 6
    Letzter Beitrag: 16.01.2008, 22:56

Stichworte

Berechtigungen

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

Labornetzteil AliExpress