Beginners: please read this post and this post before posting to the forum.
0 Members and 1 Guest are viewing this topic.
servo_1=280
/****************************************************************************** Copyright (c) 2008 www.societyofrobots.com* (please link back if you use this code!)** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as* published by the Free Software Foundation.** Alternatively, this software may be distributed under the terms of BSD* license.*****************************************************************************///Add your code hereint servo_1;int servo_2;void servo_right(void) { servo_1=1119; servo_2=1119; }void servo_left(void) { servo_1=280; servo_2=280; }void servo_middle(void) { servo_1=700; servo_2=700; }void control(void) { while(1) { char cByte = uart1GetByte(); // get byte from UART1 on the axon if (cByte == 'r') // if character received is b then { servo_right(); LED_on(); } if (cByte == 'l') { servo_left(); LED_off(); } if (cByte == 'm') { servo_middle(); } servo_1(servo_1); servo_2(servo_2); }}
int servo_1;int servo_2;void servo_right(void) { servo_1=1119; servo_2=1119; }
long int servo_1=700;void servo_left(void) { while (servo_1>280) //overflow protection { servo_1--; } }void servo_right(void) { while (servo_1<1110) { servo_1++; } }void servo_middle(void) { servo_1=700; }void control(void) { while(1) { char cByte = uart1GetByte(); // get byte from UART1 on the axon if (cByte == 'r') // if character received is r then { servo_right(); } if (cByte == 'l') { servo_left(); } if (cByte == 'm') { servo_middle(); } servo_1(servo_1); rprintf("%d\r\n",servo_1); }}
int gripper=500; char cByte; rprintfInit(uart0SendByte); while(1) { cByte=uart0GetByte(); //get byte from UART0 on the axon if(cByte!=-1)//no new data { if (cByte == 'q') LED_on(); if (cByte == 'w') LED_off(); if (cByte == 'e') gripper=gripper+25; if (cByte == 'r') gripper=gripper-25; servo(PORTH,3,gripper); rprintf("grip:%d photo:%d\r\n",gripper,a2dConvert8bit(0)); delay_ms(50); } }
at the bottom of the infinite while, the term servo_1 is used as an function e.g. servo_1(servo_1);whereas the exact same name servo_1 is being used also as a variable....which is it? and is there maybe some confusion by the compiler that causes your erratic behaviour (the servo's erratic behaviour - not yours)
then do if btye = allthewayrightkeyservoright = 1110if byte = allthewayleftkeyservoleft = 220or whatever values make the servo go all the way. after that, use a loop to send the servo command to the servo for about 1 second, giving it enough time to move to the location
long int servo_1=700;void servo_left(void) { if(servo_1>=900) { while(servo_1>=900) { servo_1--; } } servo_1=280; }void servo_right(void) { servo_1=1119; }void servo_middle(void) { if(servo_1>=900) { while(servo_1>=900) { servo_1--; } } servo_1=700; }void control(void) { while(1) { char cByte = uart1GetByte(); // get byte from UART1 on the axon if (cByte == 'r') // if character received is b then { servo_right(); } if (cByte == 'l') { servo_left(); } if (cByte == 'm') { servo_middle(); } servo_1(servo_1); rprintf("%d\r\n",servo_1); }}
long int my_servo=700;void servo_middle(void) { my_servo=700; delay_ms(20); }void control(void) { while(1) { servo_middle(); } }
long int my_servo=700;void servo_left(void) { my_servo=280; delay_ms(20); }void servo_right(void) { my_servo=1110; delay_ms(20); }void servo_middle(void) { my_servo=700; delay_ms(20); }void control(void) { while(1) { char cByte = uart1GetByte(); // get byte from UART1 on the axon if (cByte == 'm') { servo_middle(); } servo_1(my_servo); rprintf("%d\r\n",my_servo); } }
long int my_servo=700;void servo_left(void) { my_servo=280; }void servo_right(void) { my_servo=1110; }void servo_middle(void) { my_servo=700; }void control(void) { while(1) { if(cByte!=-1)//no new data { if (cByte == 'm') { servo_middle(); } }//end of if servo_1(my_servo); rprintf("%d\r\n",my_servo); delay_ms(50); }//end of while
Ive a funny feeling it may be the uart interrupt. admins code that seems to work has this line:if(cByte!=-1)//no new data {I know that this isnt perfect for your means but by moving servo_1(my_servo);rprintf("%d\r\n",my_servo);outside of the if statement (along with the statutory delay) then it should work for you.also another thing... admin has a delay of 50ms and not 20ms (this can also cause erratic servo behaviour if you got it wrong)Code: [Select]long int my_servo=700;void servo_left(void) { my_servo=280; }void servo_right(void) { my_servo=1110; }void servo_middle(void) { my_servo=700; }void control(void) { while(1) { if(cByte!=-1)//no new data { if (cByte == 'm') { servo_middle(); } }//end of if servo_1(my_servo); rprintf("%d\r\n",my_servo); delay_ms(50); }//end of while
long int my_servo=700;void servo_left(void) { my_servo=280; delay_ms(50); }void servo_right(void) { my_servo=1110; delay_ms(50); }void servo_middle(void) { my_servo=700; delay_ms(50); }void control(void) { while(1) { char cByte = uart1GetByte(); // get byte from UART1 on the axon if(cByte!=-1) { if (cByte == 'r') // if character received is b then { servo_right(); } if (cByte == 'l') { servo_left(); } if (cByte == 'm') { servo_middle(); } } servo_1(my_servo); rprintf("%d\r\n",my_servo); } }
servo_1(my_servo);
int gripper=500; char cByte; rprintfInit(uart0SendByte); while(1) { cByte=uart0GetByte(); //get byte from UART0 on the axon if(cByte!=-1)//no new data { if (cByte == 'q') LED_on(); if (cByte == 'w') LED_off(); if (cByte == 'e') gripper=280;//modified if (cByte == 'r') gripper=1110;//modified servo(PORTH,3,gripper); rprintf("grip:%d photo:%d\r\n",gripper,a2dConvert8bit(0)); delay_ms(50); } }
servo_1(my_servo)
while(1) { cByte=uart1GetByte(); //get byte from UART0 on the axon if(cByte!=-1)//no new data { if (cByte == 'm') gripper=700; if (cByte == 'e') gripper=280;//modified if (cByte == 'r') gripper=1110;//modified servo_1(gripper); rprintf("grip:%d photo:%d\r\n",gripper,a2dConvert8bit(0)); delay_ms(50); } }
long int my_servo=700;void servo_left(void) { my_servo=280; delay_ms(50); }void servo_right(void) { my_servo=1110; delay_ms(50); }void servo_middle(void) { my_servo=700; delay_ms(50); }void control(void) { while(1) { char cByte = uart1GetByte(); // get byte from UART1 on the axon if(cByte!=-1) { if (cByte == 'r') // if character received is b then { servo_right(); } if (cByte == 'l') { servo_left(); } if (cByte == 'm') { servo_middle(); } } servo_1(my_servo); rprintf("%d\r\n",my_servo); }
Didn't I already define this servo in hardware.c? Wouldn't this code mess it up unless I exclude hardware.c and if so how do I do that or what code should I use instead of this?
servo(PORTH,3,gripper);
servo_1(gripper)