Ejemplo n.º 1
0
void fahren2(void){
	if (abstandvorne > 50) 
	{ 
		back = 0;
	}
	ar = abstandrechts;
	av = abstandvorne;
	al = abstandlinks;
	if ((abstandvorne < 30) || (back == 1))
	{ 
		back = 1;
		fahr(-20);
		if (ar > al)
		{
			servo(-10);
		}
		else
		{
			servo(10);
		}
	}
	else 
	{
		fahr(20);
		servo(pReglerServoRechts(ar, al, av));
	}
}
Ejemplo n.º 2
0
robot::robot() :
    left_arm(servo(1, left_arm_min, left_arm_min + arm_range)),
    right_arm(servo(0, right_arm_min, right_arm_min - arm_range)),
    head(servo(2, head_center - head_range, head_center + head_range)),
    torso(servo(3, torso_center - torso_range, torso_center + torso_range)),
    tilt(servo(15, tilt_center - tilt_range, tilt_center + tilt_range)),
    left_eye(rgb_led(4)),
    right_eye(rgb_led(8)),
    chest(led_grid(2, 3, 4, 5)),
    voice(speaker(9)){ }
Ejemplo n.º 3
0
void initializeRobot()
{
servo(dump)=100;
servo(clamp)=0;
servo[score]=120;

forward_initizalize();


  return;
}
Ejemplo n.º 4
0
void main()
{
    lcd("Press SW1");
    sw1_press();
    while(1)
    {
        servo(0,20);
        sleep(2000);
        servo(0,60);
        sleep(2000);

    }
}
Ejemplo n.º 5
0
void main()
{
	unsigned int dist,dist_l,dist_r;
	servo(0,GET_MID);
	lcd("Press SW1");
	sw1_press();
	
	while(1)
	{
		servo(0,GET_MID);
		dist = srf05_dist(ECHO_PB4,PULSE_PB1);
		if(dist>=3 && dist<=12)
		{
			pause();
			
			servo(0,GET_LEFT);
			sleep(2000);
			dist_l = srf05_dist(ECHO_PB4,PULSE_PB1);
			
			servo(0,GET_RIGHT);
			sleep(2000);
			dist_r = srf05_dist(ECHO_PB4,PULSE_PB1);
			servo(0,GET_MID);
			
			if(dist_l>dist_r && dist_l>DIST_MIN)
			{
				turn_left(200);	
			}
			else if(dist_r>dist_l && dist_r>DIST_MIN)
			{
				turn_right(200);	
			}
			else if(dist_r==dist_l && dist_r>DIST_MIN)
			{
				turn_right(200);	
			}
			else
			{
				backward(1000);
				turn_right(500);
			}
			
		}
		else
		{
			forward(10);
		}
		
	}

}
Ejemplo n.º 6
0
int main(int argc, char **argv) {

   if(argc < 5) {
      std::cout << "Invalid number of args." << std::endl;
      return 0;
   }

   auto maxPwm = atof(argv[1]);
   if(maxPwm < 1.34 || maxPwm > 1.7) {
      std::cout << "Max pulse width needs to be in range 1.34-1.7." << std::endl;
      return 0;
   }

   auto pGain = atof(argv[2]);
   if(pGain < 0) {
      std::cout << "Proportional gain needs to be larget than zero." << std::endl;
      return 0;
   }

   auto iGain = atof(argv[3]);
   if(iGain < 0) {
      std::cout << "Integral gain needs to be larget than zero." << std::endl;
      return 0;
   }

   auto dGain = atof(argv[4]);
   if(dGain < 0) {
      std::cout << "Derivative gain needs to be larget than zero." << std::endl;
      return 0;
   }

   drone<servo, pid> d(std::vector<servo>({ 
                         servo(4, 1.2, maxPwm, pins::instance().pwm),
                         servo(5, 1.2, maxPwm, pins::instance().pwm),
                         servo(6, 1.2, maxPwm, pins::instance().pwm),
                         servo(7, 1.2, maxPwm, pins::instance().pwm) }),
                       std::vector<pid>({ 
                         pid(pGain, iGain, dGain),
                         pid(pGain, iGain, dGain),
                         pid(pGain, iGain, dGain) }));
   stupid = &d;

   struct sigaction sigIntHandler;
   sigIntHandler.sa_handler = ting;
   sigemptyset(&sigIntHandler.sa_mask);  
   sigIntHandler.sa_flags = 0;
   sigaction(SIGINT, &sigIntHandler, NULL);
 
   d.run();
}
Ejemplo n.º 7
0
//main///////////////////////////////////////////////////////////////////////////////////////////////
int main(void) {

	//initialize the IO port pins
	//I like to use binary because it's easy to see right away which way pins are set. 
	//Setting a bit to zero makes its corresponding pin behave as an input, 
	//setting to one makes it an output.
	DDRB = 0b001111;
	//Make all the output pins go low:
	PORTB=0;
	//Now we're ready for some real stuff!


	//Infinite loop. The code does whatever is written between here 
	//and the corresponding curly brace  
	//until power is removed or the chip is reset.
	while(1){							

		//define a variable and fill it with a random number from 1 to 30.
		//this will determine how many times the loop is run before the rest period. 	
		unsigned char loop=limited_random(1,30);

		//start the main wiggling loop, using the number from just above:
		for(;loop>0;loop--){
			
			//how many times to call the servo routine
			char reps=limited_random(3,25); 

			//the angle for the servos.
			char x=limited_random(0,180);   
			char y=limited_random(0,180);	
			char z=limited_random(0,180);	
	
			//start the loop that sends a volley of pulses to the servos:
			for(;reps>0;reps--){
				//Actually send the servo pulses now:
				servo(SERVO1,x);	
				servo(SERVO2,y);
				servo(SERVO3,z);
				//Delay a little bit so the servo has 
				//time to execute the command before we send another one:
				delay_us(10000);	
			}
		}
		led_on();
		delay_us(limited_random(1,30)*1000);
		led_off();
	}
}
void ServoInitFunc(void) {
    servo(0);

    ConfigIntTimer1(T1_INT_PRIOR_1 & T1_INT_ON);
    //1msec(4/80Mhz×1×200=0.01msec)
    OpenTimer1(T1_ON & T1_GATE_OFF & T1_PS_1_1 & T1_SYNC_EXT_OFF & T1_SOURCE_INT,200-1);
}
Ejemplo n.º 9
0
void main(void)
{
	DDRE=0xFF;
	//DDRE |= (1<<PE3) | (1<<PE4) | (1<<PE5);
	//int x=63;
	intialize();
	while(1)
    {
	  
	   servo(1,60);
	   _delay_ms(500);
	   servo(1,150);
	   _delay_ms(500);
			  
    }
}
Ejemplo n.º 10
0
void tests::servo_drive_interaction() {
	VS11 servo(3);

	servo.setGoal(0);
	delay(1000);
	servo.setGoal(M_PI/2);
	delay(1000);
	Serial.println("0");

	{
		Drive d;
		d.setMLSpeed(100);
		d.setMRSpeed(100);
		delay(1000);
		servo.setGoal(0);
		delay(1000);
		d.setMLSpeed(-100);
		d.setMRSpeed(-100);
		delay(1000);
		servo.setGoal(M_PI/2);
		delay(1000);
		d.setMLSpeed(0);
		d.setMRSpeed(0);
	}
}
Ejemplo n.º 11
0
/* ==============================================
	main task routine
   ============================================== */
int main(void) {
	pool_memadd((uint32_t)pool, sizeof(pool));

#ifdef DEBUG
	dbg.start();
#endif
	int val;
	float degrees;

	CAdc vr(AD5);		// use A5 for VR
	CServo servo(PWM1);	// use PWM1 for Servo Motor

	vr.begin();
	servo.begin();

	// Enter an endless loop
	while(1){
 	 	 val = vr.read(0.1, 8);
 	 	 degrees = AD2Degrees(val);
 	 	 servo = degrees;

#ifdef DEBUG
 	 	 if ( dbg.isDebugMode() ) {
 	 		 dbg.println("ADC=%d, Degrees=%f\n", val, degrees);
 	 	 }
#endif
 	 	 sleep(100);
	}
	return 0 ;
}
Ejemplo n.º 12
0
void Output::parse(char *c){
  int n,s,m,a;
  Output *t;
  
  switch(sscanf(c,"%d %d %d %d",&n,&s,&m,&a)){
    
    case 2:                     // argument is string with id number of output followed by zero (LOW) or one (HIGH)
      t=get(n);
      if(t!=NULL)
        t->activate(s);
      else
        INTERFACE.print("<X>");
      break;

    case 3:                     // argument is string with id number of output followed by a pin number and invert flag
      create(n,s,m,1);
    break;

    case 4:
      servo(n, m, a);
    break;

    case 1:                     // argument is a string with id number only
      remove(n);
    break;
    
    case -1:                    // no arguments
      show(1);                  // verbose show
    break;
  }
}
Ejemplo n.º 13
0
void expand() {
	
	servo(1, STL);
	delayMs(100);
	servo(5, STR);
	delayMs(100);
/*	servo(4, SBL);
	delayMs(100);
	servo(6, SBR);
	delayMs(100);
*/	
	servoOff(1);
//	servoOff(4);
	servoOff(5);
//	servoOff(6);
}
Ejemplo n.º 14
0
int main() {
    Dynamixel servo(3, 9600);
    usleep(100000);
    servo.set_position(1023);
    usleep(1000000);
    servo.set_position(0);

    return 0;
}
Ejemplo n.º 15
0
void GatePos(int deg)
{
  int i;

  for (i = 0; i < 2; i++)
  	{
  	servo(i, WProportion(deg, 0, 90, rgcAngle[2*i], rgcAngle[2*i+1]));
  	}
}
Ejemplo n.º 16
0
void Gate(int fDown)
{
  int i;

  for (i = 0; i < 2; i++)
    {
    servo(i, rgcGate[i*2 + fDown]); 
    }
  fGateDown = fDown;
}
Ejemplo n.º 17
0
// <== Eigene Funktion und Bedingungen formulieren / schreiben
void fahren1(void){
	ar = abstandrechts;
	av = abstandvorne;
	al = abstandlinks;
	
	if (av > 50) 
	{ 
		back = 0;
	}
	
	if ((av < 45) || (back == 1))
	{ 
		back = 1;
		fahr(-20);
		if (ar > al)
		{
			servo(-10);
		}
		else
		{
			servo(10);
		}
	}
	else 
	{
		fahr(30);
		if (av < 200) 
		{
			fahr(18);
			if (ar > al)
			{
				servo(10);
			}
			else
			{
				servo(-10);
			}
		}
		else if (al > 60)
		{ 
			servo(((ar)*m1)/m2 - 19);
		}
		else if (ar > 60)
		{
			servo(((ar)*m1)/m2 - 19);
		}
		else
		{
			servo(((ar - al)*10)/30);
		}
	}
}
Ejemplo n.º 18
0
void Enriduino::start(){
  if (Serial.available()){
     serial[i++] = Serial.read();  
  }
  if (serial[i-1]==126){
    i=0;
    pinmode();
    Write();
    Read();
    AWrite();
    ARead();
    servo();
    servoWrite();
  }
}
Ejemplo n.º 19
0
void tests::servo() {
	VS11 servo(3);

	servo.setGoal(0);
	delay(500);
	Serial.println("+90");
	servo.setGoal(M_PI/2);
	delay(500);
	Serial.println("-90");
	servo.setGoal(-M_PI/2);
	delay(500);
	Serial.println("0");
	servo.setGoal(0);

}
Ejemplo n.º 20
0
void ServoRange()
{
  int pos;
  int portServ = 0;

  while (!stop_button())
    {
    if (start_button())
      {
      portServ = 1 - portServ;
      while (start_button());
      }
    pos = ScaleKnob(30, 3960);
    printf("Servo: %d\n", pos);
    servo(portServ, pos);
    }
  while (stop_button());
}
Ejemplo n.º 21
0
void main()
{
	unsigned char pos=20;
	while(1)
	{
		lcd("Position: %d   ",pos);
		servo(0,pos);
		if(sw1()==0)
		{
			pos++;
			sleep(100);
		}
		if(sw2()==0)
		{
			pos--;
			sleep(100);
		}
	}
}
Ejemplo n.º 22
0
void Output::activate(int s){
  data.oStatus=(s>0);                                               // if s>0, set status to active, else inactive
  if (data.pin >= 62 && data.pin < 70)
    servo(data.pin - 62, data.oStatus ^ bitRead(data.iFlag,0));
  else
    digitalWrite(data.pin,data.oStatus ^ bitRead(data.iFlag,0));      // set state of output pin to HIGH or LOW depending on whether bit zero of iFlag is set to 0 (ACTIVE=HIGH) or 1 (ACTIVE=LOW)
  if(num>0)
    EEPROM.put(num,data.oStatus);
  INTERFACE.print("<Y");
  INTERFACE.print(data.id);
  if(data.oStatus==0)
    INTERFACE.print(" 0>");
  else
    INTERFACE.print(" 1>"); 
  Serial2.print("<Y");
  Serial2.print(data.id);
  if(data.oStatus==0)
    Serial2.print(" 0>");
  else
    Serial2.print(" 1>"); 
}
Ejemplo n.º 23
0
int main(void){
	Led0 led0;
	Sw0 sw0;sw0.setupDigitalIn();
	Sw1 sw1;sw1.setupDigitalIn();
	Sw2 sw2;sw2.setupDigitalIn();
	Sw3 sw3;sw3.setupDigitalIn();
	Blink blink0(led0);blink0.setup();blink0.time(200);
	Serial1 serial1;	serial1.setup(115200);
	Serial0 serial0;
	Servo servo(serial0);servo.setup();
	int data=0;
	int flag=0;
	float deg=0.00;
	long long int time=0;
	long long int timer=0;
	long long int servotime=0;
	int i=0;

	while(1){
		blink0.cycle();
		for(i=0;i<1000;i++){
			servo.setAngle(0,130);
			while(serial0.charAvailable()){
				servo.rec(0,serial0.readChar());
				//serial1.printf("%d\n",serial0.readChar());
			}
			wait(1);
		}
		for(i=0;i<1000;i++){
			servo.setAngle(0,-130);
			while(serial0.charAvailable()){
				servo.rec(0,serial0.readChar());
			}
			wait(1);
		}
	}
}
Ejemplo n.º 24
0
int main(void)
{
	Led3 led0;
	Sw0 sw0;sw0.setupDigitalIn();
	Blink blink0(led0);blink0.setup();blink0.time(200);
	Pwm0 pwm0;
	Servo servo(pwm0);servo.setup(20,270,1.5,2.3);
	Serial0 serial;
	serial.setup(115200);
	float deg=0;
	float duty=0;
	int flag=0;
	long long int time=0;
	long long int tim=0;
	//Set_duty(SERVO_TIM_CH,0);
	wait(500);
	while(1){
		blink0.cycle();
		for(deg=-25;deg<115;deg+=10){
			servo.duty(deg);
			servo.cycle();
			//led0.digitalToggle();
			//serial0.printf("%f\n",deg);
			wait(25);
		}
		for(deg=115;deg>-25;deg-=10){
			servo.duty(deg);
				servo.cycle();
			//led0.digitalToggle();
		//	serial0.printf("%f\n",deg);
			wait(25);
		}
		/*if(millis()-tim>=10){
			tim=millis();
			if(serial.charAvailable()){
				flag=true;
				char key=serial.readChar();
				serial.printf("key %c\n",key);
				if(key=='d'){
					deg+=5.0;
					deg=floatlimit(-25,deg,115);
				}else if(key=='a'){
					deg-=5.0;
					deg=floatlimit(-25,deg,115);
				}else if(key=='w'){
					deg=0;
				}
				serial.printf("deg %.2f",deg);
				servo.duty(deg);
			}
		}
		if(flag)servo.cycle();*/
		/*if(millis()-time>=500){
			time=millis();
			if(!sw0.digitalRead()){
				switch (flag) {
					case 0:
						flag=1;
						deg=-135;
						duty=0.7/30;
						break;
					case 1:
						flag=2;
						deg=135;
						duty=2.3/30;
						break;
					case 2:
						flag=0;
						deg=0;
						duty=1.5/30;
						break;
					default:
						break;
				}
				servo_move(deg);
				//Set_duty(SERVO_TIM_CH,duty);
				serial.printf("%f\n",deg);
			}
		}*/
	}
}
void test_oscope(void)
	{
	int se0,se1,se2,se3,se4,se5,se6,se7,se8;
	int se9,se10,se11,se12,se13,se14,se15;



	LED_on();

	if (button_pressed())
		LED_off();


	//pulse each fast for oscope testing
	//right row
	servo(PORTC,0,360);
	servo(PORTC,1,360);
	servo(PORTC,2,360);
	servo(PORTC,3,360);
	servo(PORTC,4,360);
	servo(PORTC,5,360);
	servo(PORTC,6,360);
	servo(PORTC,7,360);

	servo(PORTJ,6,360);
	
	servo(PORTA,0,360);
	servo(PORTA,1,360);
	servo(PORTA,2,360);
	servo(PORTA,3,360);
	servo(PORTA,4,360);
	servo(PORTA,5,360);
	servo(PORTA,6,360);
	servo(PORTA,7,360);
	
	//left row
	servo(PORTE,2,360);
	servo(PORTE,3,360);
	servo(PORTE,4,360);
	servo(PORTE,5,360);
	servo(PORTE,6,360);
	servo(PORTE,7,360);
	
	servo(PORTH,2,360);
	servo(PORTH,3,360);
	servo(PORTH,4,360);
	servo(PORTH,5,360);
	servo(PORTH,6,360);


	//top row
	se0=a2dConvert8bit(0);
	se1=a2dConvert8bit(1);
	se2=a2dConvert8bit(2);
	se3=a2dConvert8bit(3);
	se4=a2dConvert8bit(4);
	se5=a2dConvert8bit(5);
	se6=a2dConvert8bit(6);
	se7=a2dConvert8bit(7);
	se8=a2dConvert8bit(8);
	se9=a2dConvert8bit(9);
	se10=a2dConvert8bit(10);
	se11=a2dConvert8bit(11);
	se12=a2dConvert8bit(12);
	se13=a2dConvert8bit(13);
	se14=a2dConvert8bit(14);
	se15=a2dConvert8bit(0x0f);//15


	rprintfInit(uart1SendByte);
	rprintf("0:%d 1:%d 2:%d 3:%d 4:%d 5:%d 6:%d 7:%d \r\n",se0,se1,se2,se3,se4,se5,se6,se7);
	rprintf("8:%d 9:%d 10:%d 11:%d 12:%d 13:%d 14:%d 15:%d \r\n",se8,se9,se10,se11,se12,se13,se14,se15);

	rprintfInit(uart0SendByte);
	rprintf(" 0");
	rprintfInit(uart2SendByte);
	rprintf(" 2");
	rprintfInit(uart3SendByte);
	rprintf(" 3");


	delay_cycles(65500);
	}
Ejemplo n.º 26
0
// This closes the claw;
void Robot::closeClaws()
{
  servo(SERVO_RIGHT, CLOSERIGHTANGLE);
  servo(SERVO_LEFT, CLOSELEFTANGLE); 
}
Ejemplo n.º 27
0
void Robot::openClaws()
{
  servo(SERVO_RIGHT, OPENRIGHTANGLE);
  servo(SERVO_LEFT, OPENLEFTANGLE);
}
Ejemplo n.º 28
0
void forward(unsigned int delay)
{
	servo(0,SERVO_MID+SERVO_SPEED);
	servo(1,SERVO_MID-SERVO_SPEED);
	sleep(delay);
}
Ejemplo n.º 29
0
void turn_right(unsigned int delay)
{
	servo(0,SERVO_MID+SERVO_SPEED);
	servo(1,SERVO_MID+SERVO_SPEED);
	sleep(delay);
}
Ejemplo n.º 30
0
void turn_left(unsigned int delay)
{
	servo(0,SERVO_MID-SERVO_SPEED);
	servo(1,SERVO_MID-SERVO_SPEED);
	sleep(delay);
}