Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ========================================
- *
- * Copyright YOUR COMPANY, THE YEAR
- * All Rights Reserved
- * UNPUBLISHED, LICENSED SOFTWARE.
- *
- * CONFIDENTIAL AND PROPRIETARY INFORMATION
- * WHICH IS THE PROPERTY OF your company.
- *
- * ========================================
- */
- #include "project.h"
- #include "math.h"
- #include "stdio.h"
- #include "stdlib.h"
- #define LEFT (6)
- #define RIGHT (9)
- #define FORW (5)
- #define BACK (10)
- //VARIABLE DECLARATION
- //photodiode
- float brtnes1,brtnes2,brtnes3;
- char s[50];
- int result1;
- int result2;
- int result3;
- char pattern[3] = {};
- char color;
- int n =0;
- //Ultrasonic
- uint16 count = 0;
- //RIGHT
- int rightFRONTDist;
- int rightBACKDist;
- int distArrayRF[3] = {};
- int distArrayRB[3] = {};
- //FRONT
- int frontDist;
- int distArrayF[3] = {};
- //LEFT
- int leftFRONTDist;
- int leftBACKDist;
- int distArrayLF[3] = {};
- int distArrayLB[3] = {};
- int distIndex = 0;
- //Variable declaration for speed and distance travelled
- uint8 period = 255; //For PWM
- uint8 leftSpeed = 200; // defines speed using PWM
- uint8 rightSpeed = 200; // defines speed using PWM
- int wheelCirc =14606 - 944; // revolution of wheel at >>DOESNT MATTER WHAT cmp (125)<< x
- float C = 3.1415 * 2.5*2; // circumference of wheel in cm
- int robotCirc = 25000; // half revolution of robot y
- //Shaft encoder counts
- int16 LeftCount = 0;
- int16 RightCount = 0;
- //Used for termite
- char String[50];
- //Interrupt Handlers
- //Ultrasonic Distance measuring interrupt handler
- CY_ISR(Timer_ISR_Handler){
- //Clearing edgecapture register
- timer_rightFRONT_ReadStatusRegister();
- count = 0;
- count = timer_rightFRONT_ReadCounter();
- rightFRONTDist = (65535-count)/58;
- }
- CY_ISR(Timer_ISR_Handler2){
- //Clearing edgecapture register
- timer_rightBACK_ReadStatusRegister();
- count =0;
- count = timer_rightBACK_ReadCounter();
- rightBACKDist = (65535-count)/58;
- }
- CY_ISR(Timer_ISR_Handler3){
- //Clearing edgecapture register
- Timer_FRONTUS_ReadStatusRegister();
- count = Timer_FRONTUS_ReadCounter();
- frontDist = (65535-count)/58;
- }
- //LEFT
- CY_ISR(Timer_ISR_Handler4){
- //Clearing edgecapture register
- timer_leftFRONT_ReadStatusRegister();
- count = 0;
- count = timer_leftFRONT_ReadCounter();
- leftFRONTDist = (65535-count)/58;
- }
- CY_ISR(Timer_ISR_Handler5){
- //Clearing edgecapture register
- timer_leftBACK_ReadStatusRegister();
- count =0;
- count = timer_leftBACK_ReadCounter();
- leftBACKDist = (65535-count)/58;
- }
- //Prototypes - INDIVIDUAL FUNCTIONS
- void termite();
- void turn(char dir);
- void move(float dist);
- void StopMoving();
- void reverse(float dist);
- void ultrasonic(char side);
- void straighten();
- void adjust(char side);
- void moveUntil(float dist, char speed);
- void up();
- void down();
- void grip();
- void drop();
- void colorSense();
- void setSpeed(int LeftSpeed, int RightSpeed);
- void resetDecoders();
- void getDecoders();
- void showPattern();
- void release();
- void swap(int *xp, int *yp);
- void bubbleSort(int arr[], int n);
- void halfTurn(char direction, float factor);
- void sensePattern();
- void sideDistToWall(float dist, char INout, char side);
- //COMBINED FUNCTIONS
- void lift();
- void moveAlongWall(int fixedDist);
- void moveToPuck(int fixedDist);
- void puckAlign();
- void goToPuck();
- void construct();
- void home();
- void lostboy();
- void checkDist();
- void ultrasonicR();
- void ultrasonicL();
- int main(void)
- {
- //Start components
- CyGlobalIntEnable; /* Enable global interrupts. */
- IDAC8_1_Start();
- TIA_1_Start();
- IDAC8_1_Sleep();
- ADC_DelSig_1_Start();
- //Start components
- UART_1_Start();
- RightWheelDecoder_Start();
- LeftWheelDecoder_Start();
- USrightFRONTisr_StartEx(Timer_ISR_Handler);
- USrightBACKisr_StartEx(Timer_ISR_Handler2);
- USfrontisr_StartEx(Timer_ISR_Handler3);
- USleftFRONTisr_StartEx(Timer_ISR_Handler4);
- USleftBACKisr_StartEx(Timer_ISR_Handler5);
- timer_rightFRONT_Start(); //RIGHT
- timer_rightBACK_Start();
- Timer_FRONTUS_Start();
- timer_leftFRONT_Start(); //LEFT
- timer_leftBACK_Start();
- MotorSpeedControl_Start();
- Servo_Start();
- StopMoving();
- resetDecoders();
- MotorDirectionControl_Write(0);
- LED_Write(1);
- //back and forth lift and stack
- /* 1,2,3,9,4,4,11,10,
- 7,7,11,10,
- 6,9,5,5,7,7,11,10,
- 2,1,3,
- 2,9,4,4,11,10,
- 7,7,6*/
- //reverse and turning test
- //4,4,8,9,5,5
- //Move and adjust test
- //11,10,7,4,4,11,10
- //straight right pick up
- // 8,5,11,10,
- // 7,1,1,3,2,2
- //STRAIGHT RIGHT PICK UP
- //8,11,12,5,11,10,7,11,14,15,11,10,
- //1,1,3,2,2
- int actions[100] = {
- 12
- };
- //
- int flag = 0;
- int i = 0;
- release();
- StepperEnable1_Write(1);
- StepperEnable2_Write(1);
- for(;;)
- {
- sprintf(String, "RF: %d \n",rightFRONTDist);
- UART_1_PutString(String);
- sprintf(String, "RB: %d \n",rightBACKDist);
- UART_1_PutString(String);
- sprintf(String, "FRONT: %d \n",frontDist);
- CyDelay(500);
- UART_1_PutString(String);
- sprintf(String, "LF: %d \n",leftFRONTDist);
- UART_1_PutString(String);
- sprintf(String, "LB: %d \n",leftBACKDist);
- UART_1_PutString(String);
- /* Place your application code here. */
- if(SW_Read() == 0 ){
- flag = ~flag;
- }
- if(flag){
- LED_Write(0);
- switch(actions[i]){
- case 1:CyDelay(100);
- lift();
- break;
- case 2: moveAlongWall(30);
- break;
- case 3:
- // spare
- break;
- case 4: puckAlign();
- break;
- case 5: sensePattern();
- break;
- case 6: sideDistToWall(10 , 'O', 'L');
- break;
- case 7: sideDistToWall( 15 , 'I', 'L');
- break;
- case 8: turn('R');
- break;
- case 9:
- // spare
- break;
- case 10:
- CyDelay(100);
- adjust('L');
- break;
- case 11:
- CyDelay(100);
- ultrasonic('L');
- break;
- case 12:
- CyDelay(100);
- moveUntil(22,'F');
- break;
- case 13: lostboy();
- break;
- }
- i++;
- }
- CyDelay(100);
- }
- }
- void drop(){
- down();
- CyDelay(200);
- down();
- CyDelay(200);
- }
- // stacks the pucks when pucks grabbed
- void construct(){
- CyDelay(100);
- turn('R');
- moveAlongWall(30);
- adjust('R');
- moveUntil(20,'F');
- sideDistToWall( 14.5,'I','R');
- moveUntil(15,'S');
- adjust('R');
- drop();
- release();
- lift();
- }
- void lostboy() // when robot is in puck selection position
- {
- //13,11,12,8turn,15move4,11,10adjust,11,7shuffle14.5,
- // 11,10adjust,17reverse(7),11,16gotopuck,1lift,9reverese
- move(30);
- moveUntil(25,'F');
- // can add shuffle for high accuracy
- CyDelay(100);
- turn('R');
- CyDelay(100);
- adjust('L');
- CyDelay(100);
- move(4);
- CyDelay(100);
- adjust('L'); // if we shuffle dont need this
- CyDelay(100);
- sideDistToWall(14.5,'I','L'); // aligns to puck
- adjust('L');
- reverse(7);
- goToPuck();
- lift();
- reverse(8);
- }
- // Lifts Puck
- void lift(){
- grip();
- CyDelay(200);
- up();
- CyDelay(200);
- up();
- }
- void moveAlongWall(int fixedDist){
- move(fixedDist);
- move(10);
- CyDelay(100);
- moveUntil(21,'F');
- }
- void puckAlign(){
- //first puck
- CyDelay(100);
- turn('R');
- CyDelay(100);
- ultrasonic('L');
- adjust('L');
- CyDelay(100);
- move(15);
- turn('L');
- ultrasonic('L');
- adjust('L');
- }
- void sensePattern(){
- n = 0;
- reverse(7);
- for( n = 0 ; n < 3; n++){
- colorSense();
- pattern[n] = color;
- move(4.5);
- CyDelay(600);
- }
- }
- void sideDistToWall(float dist, char INout, char side){
- int attempt = 0;
- ultrasonic(side);
- char notSide;
- if(side == 'L'){
- notSide = 'R';
- }
- else if(side =='R'){
- notSide = 'L';
- }
- if(INout == 'O'){
- CyDelay(200);
- halfTurn(side,0.35);
- CyDelay(200);
- reverse(20);
- CyDelay(200);
- halfTurn(notSide,0.35);
- CyDelay(200);
- ultrasonic(side);
- adjust(side);
- move(5);
- }else if(INout == 'I'){
- while(attempt ==0){
- while(rightFRONTDist>dist && rightBACKDist>dist){
- attempt = 1;
- CyDelay(200);
- halfTurn(notSide,0.126);
- CyDelay(200);
- reverse(5);
- CyDelay(200);
- halfTurn(side,0.126);
- CyDelay(200);
- ultrasonic(side);
- adjust(side);
- move(5);
- }
- ultrasonic(side);
- }
- }
- }
- void goToPuck(){
- CyDelay(100);
- checkDist();
- CyDelay(100);
- moveUntil(14,'S');
- CyDelay(100);
- ultrasonic('L');
- checkDist();
- drop();
- move(3.5);
- }
- void checkDist(){
- if(frontDist > 14){
- move(0.5);
- }else if(frontDist < 14){
- reverse(0.5);
- }
- }
- //INDIVIDUAL FUNCTIONS
- //ARM FUNCTIONS
- void grip(){
- Servo_WriteCompare(1400);
- }
- void release(){
- Servo_WriteCompare(1225);
- }
- void up(){
- int x = 10000;
- for( int i = 0 ; i <50/8 ; i++){
- A_Write(1);
- Abar_Write(0);
- Bbar_Write(0);
- B_Write(1);
- CyDelayUs(x);
- A_Write(0);
- Abar_Write(1);
- Bbar_Write(0);
- B_Write(1);
- CyDelayUs(x);
- A_Write(0);
- Abar_Write(1);
- Bbar_Write(1);
- B_Write(0);
- CyDelayUs(x);
- A_Write(1);
- Abar_Write(0);
- Bbar_Write(1);
- B_Write(0);
- CyDelayUs(x);
- }
- }
- void down(){
- int x = 10000;
- for( int i = 0 ; i <50/8 ; i++){
- A_Write(1);
- Abar_Write(0);
- Bbar_Write(1);
- B_Write(0);
- CyDelayUs(x);
- A_Write(0);
- Abar_Write(1);
- Bbar_Write(1);
- B_Write(0);
- CyDelayUs(x);
- A_Write(0);
- Abar_Write(1);
- Bbar_Write(0);
- B_Write(1);
- CyDelayUs(x);
- A_Write(1);
- Abar_Write(0);
- Bbar_Write(0);
- B_Write(1);
- CyDelayUs(x);
- }
- }
- //END OF ARM FUNCTIONS
- //COLOR SENSING
- void Turn_on_RLight()
- {
- Red_led_Write(1);
- Green_led_Write(0);
- Blue_led_Write(0);
- }
- void Turn_on_GLight()
- {
- Red_led_Write(0);
- Green_led_Write(1);
- Blue_led_Write(0);
- }
- void Turn_on_BLight()
- {
- Red_led_Write(0);
- Green_led_Write(0);
- Blue_led_Write(1);
- }
- void Turn_off_Light()
- {
- Green_led_Write(0);
- Blue_led_Write(0);
- Red_led_Write(0);
- }
- int resul_record()
- {
- int32 resu=0;
- ADC_DelSig_1_StartConvert();
- ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);
- resu=ADC_DelSig_1_GetResult32();
- return resu;
- }
- float brightness_Mean_calculation()
- {
- int mean;
- int count=0;
- int i;
- for(i=0;i<20;i++)
- {
- count+=abs(ADC_DelSig_1_GetResult32());
- }
- mean=(int) count/20;
- return mean;
- }
- void comp(int brt1,int brt2,int brt3)
- {
- int i;
- if( (brt1>brt2) && (brt1>brt3) )
- {
- for(i=0;i<10;i++)
- {
- Red_led_Write(1);
- CyDelay(100);
- Red_led_Write(0);
- CyDelay(100);
- }
- color = 'R';
- }
- else if ( (brt2>brt1) && (brt2>brt3) )
- {
- for(i=0;i<10;i++)
- {
- Green_led_Write(1);
- CyDelay(100);
- Green_led_Write(0);
- CyDelay(100);
- }
- color = 'G';
- }
- else if( (brt3>brt1) && (brt3>brt2) )
- {
- for(i=0;i<10;i++)
- {
- Blue_led_Write(1);
- CyDelay(100);
- Blue_led_Write(0);
- CyDelay(100);
- }
- color = 'B';
- }
- }
- void colorSense(){
- IDAC8_1_Wakeup();
- Turn_on_RLight();
- CyDelay(50);
- result1 = resul_record();
- //brtnes1=brightness_Mean_calculation();
- Turn_off_Light();
- IDAC8_1_Sleep();
- CyDelay(10);
- IDAC8_1_Wakeup();
- Turn_on_GLight();
- CyDelay(50);
- result2 = resul_record();
- //brtnes2=brightness_Mean_calculation();
- Turn_off_Light();
- IDAC8_1_Sleep();
- CyDelay(10);
- IDAC8_1_Wakeup();
- Turn_on_BLight();
- CyDelay(50);
- result3 = resul_record();
- //brtnes3=brightness_Mean_calculation();
- Turn_off_Light();
- IDAC8_1_Sleep();
- CyDelay(500);
- comp(result1,result2,result3);
- CyDelay(500);
- }
- void showPattern(){
- for(int i = 0; i <3 ; i++){
- if(pattern[i] == 'R'){
- Red_led_Write(1);
- CyDelay(500);
- Red_led_Write(0);
- }else if(pattern[i] == 'G'){
- Green_led_Write(1);
- CyDelay(500);
- Green_led_Write(0);
- }else if(pattern[i] == 'B'){
- Blue_led_Write(1);
- CyDelay(500);
- Blue_led_Write(0);
- }
- CyDelay(500);
- }
- }
- //END OF COLOR SENSING
- //MOTOR
- //MOVEMENT
- void adjust(char side){
- int frnt;//distances of side ultrasonics
- int bck;
- int direction;//TURNING DIRECTION
- int oppDirection;
- ultrasonic('L');
- if(side == 'L'){
- frnt = leftFRONTDist;
- bck = leftBACKDist;
- direction = LEFT;
- oppDirection = RIGHT;
- }else if( side =='R'){
- frnt = rightFRONTDist;
- bck = rightBACKDist;
- direction = RIGHT;
- oppDirection = LEFT;
- }
- MotorDirectionControl_Write(direction);
- while( ((frnt-0.5)-bck) > 0 ){
- rightSpeed = 100;
- leftSpeed = 0;
- setSpeed(leftSpeed,rightSpeed);
- CyDelay(50);
- StopMoving();
- ultrasonic(side);
- }
- MotorDirectionControl_Write(oppDirection);
- while( (rightBACKDist - (rightFRONTDist-0.5))>0 ){
- rightSpeed = 0;
- leftSpeed = 100;
- setSpeed(leftSpeed,rightSpeed);
- CyDelay(50);
- StopMoving();
- ultrasonic(side);
- }
- StopMoving();
- }
- //Functions
- //For debuggings purposes
- void termite(){
- sprintf(String, "sidefront: %d \n",rightFRONTDist);
- UART_1_PutString(String);
- sprintf(String, "sideback: %d \n",rightBACKDist);
- UART_1_PutString(String);
- sprintf(String, "FRONT: %d \n",frontDist);
- UART_1_PutString(String);
- //sprintf(String, "SE2: %d \n",RightCount);
- //UART_1_PutString(String);
- }
- //Ultrasonic
- void ultrasonicR(){
- CyDelay(50);
- int n= 0;
- for ( n = 0 ; n <3 ; n ++){
- while(ECHO_rightFRONT_Read() == 0){
- TRIG_rightFRONT_Write(1);
- CyDelayUs(10);
- TRIG_rightFRONT_Write(0);
- }
- distArrayRF[n] = rightFRONTDist;
- CyDelay(100);
- while(ECHO_rightBACK_Read() == 0){
- TRIG_rightBACK_Write(1);
- CyDelayUs(10);
- TRIG_rightBACK_Write(0);
- }
- distArrayRB[n] = rightBACKDist;
- CyDelay(100);
- while(ECHO_FRONT_Read() == 0){
- TRIG_FRONT_Write(1);
- CyDelayUs(10);
- TRIG_FRONT_Write(0);
- }
- distArrayF[n] = frontDist;
- CyDelay(100);
- }
- bubbleSort(distArrayRF, 3);
- bubbleSort(distArrayRB, 3);
- bubbleSort(distArrayF, 3);
- rightFRONTDist = distArrayRF[1];
- rightBACKDist = distArrayRB[1];
- frontDist = distArrayF[1];
- }
- void ultrasonicL(){
- CyDelay(50);
- int n= 0;
- for ( n = 0 ; n <3 ; n ++){
- while(ECHO_leftFRONT_Read() == 0){
- TRIG_leftFRONT_Write(1);
- CyDelayUs(10);
- TRIG_leftFRONT_Write(0);
- }
- distArrayLF[n] = leftFRONTDist;
- CyDelay(100);
- while(ECHO_leftBACK_Read() == 0){
- TRIG_leftBACK_Write(1);
- CyDelayUs(10);
- TRIG_leftBACK_Write(0);
- }
- distArrayLB[n] = leftBACKDist;
- CyDelay(100);
- while(ECHO_FRONT_Read() == 0){
- TRIG_FRONT_Write(1);
- CyDelayUs(10);
- TRIG_FRONT_Write(0);
- }
- distArrayF[n] = frontDist;
- CyDelay(100);
- }
- bubbleSort(distArrayLF, 3);
- bubbleSort(distArrayLB, 3);
- bubbleSort(distArrayF, 3);
- leftFRONTDist = distArrayLF[1];
- leftBACKDist = distArrayLB[1];
- frontDist = distArrayF[1];
- }
- void ultrasonic(char side){
- if(side == 'L'){
- ultrasonicL();
- }
- else if(side == 'R'){
- ultrasonicR();
- }
- }
- void swap(int *xp, int *yp)
- {
- int temp = *xp;
- *xp = *yp;
- *yp = temp;
- }
- // A function to implement bubble sort
- void bubbleSort(int arr[], int n)
- {
- int i, j;
- for (i = 0; i < n-1; i++)
- // Last i elements are already in place
- for (j = 0; j < n-i-1; j++)
- if (arr[j] > arr[j+1])
- swap(&arr[j], &arr[j+1]);
- }
- void turn(char direction){
- resetDecoders();
- getDecoders();
- switch(direction){
- case 'L':
- MotorDirectionControl_Write(LEFT);
- while(abs(RightCount)<13900 && abs(LeftCount)<13900){setSpeed(170,170);getDecoders();}
- StopMoving();
- break;
- case 'R':
- MotorDirectionControl_Write(RIGHT);
- while(abs(RightCount)<13900 && abs(LeftCount)<13900){setSpeed(170,170);getDecoders();}
- StopMoving();
- break;
- }
- resetDecoders();
- }
- void halfTurn(char direction, float factor){
- resetDecoders();
- getDecoders();
- switch(direction){
- case 'L':
- MotorDirectionControl_Write(LEFT);
- while(abs(RightCount)<13900*factor && abs(LeftCount)<13900*factor)
- {setSpeed(170,170);getDecoders();}
- StopMoving();
- break;
- case 'R':
- MotorDirectionControl_Write(RIGHT);
- while(abs(RightCount)<13900*factor && abs(LeftCount)<13900*factor)
- {setSpeed(170,170);getDecoders();}
- StopMoving();
- break;
- }
- resetDecoders();
- }
- //Move forward dist cm
- void move(float dist){
- //Number of cirumferences to move a distance of dist
- float factor = dist/C;
- int targetCount = factor* wheelCirc;
- int rightSpeed = 140;
- int leftSpeed = 140;
- int diff = 0;
- int switchToRIGHT = 1;
- int switchToLEFT = 1;
- resetDecoders();
- getDecoders();
- MotorDirectionControl_Write(FORW);
- setSpeed(leftSpeed,rightSpeed);
- //Forward
- while(LeftCount<targetCount && RightCount < targetCount ){
- setSpeed(leftSpeed,rightSpeed);
- diff = RightCount - LeftCount;
- if(diff > 0){ //deviating left //turn right
- if(switchToRIGHT){
- leftSpeed = rightSpeed +1;
- switchToRIGHT = 0;
- switchToLEFT = 1;
- }else if(!switchToRIGHT){
- leftSpeed ++;
- }
- }else if(diff < 0){ //deviating right //turn left
- if(switchToLEFT){
- leftSpeed = rightSpeed;
- switchToRIGHT = 1;
- switchToLEFT = 0;
- }else if(!switchToLEFT){
- leftSpeed -= 1;
- }
- }
- getDecoders();
- CyDelay(50);
- }
- StopMoving();
- }//END OF FIXED MOVEMENT FORWARD
- void moveUntil(float dist, char speed){
- int rightSpeed = 100;
- int leftSpeed = 100;
- int del;
- int diff = 0;
- int switchToRIGHT = 1;
- int switchToLEFT = 1;
- ultrasonic('L');
- if(speed =='F'){
- del = 200;
- }else{
- del = 50;
- }
- MotorDirectionControl_Write(FORW);
- resetDecoders();
- getDecoders();
- ultrasonic('L');
- setSpeed(leftSpeed,rightSpeed);
- while(frontDist>(dist)){
- setSpeed(leftSpeed,rightSpeed);
- diff = RightCount - LeftCount;
- if(diff > 0){ //deviating left //turn right
- if(switchToRIGHT){
- leftSpeed = rightSpeed +1;
- switchToRIGHT = 0;
- switchToLEFT = 1;
- }else if(!switchToRIGHT){
- leftSpeed ++;
- }
- }else if(diff < 0){ //deviating right //turn left
- if(switchToLEFT){
- leftSpeed = rightSpeed;
- switchToRIGHT = 1;
- switchToLEFT = 0;
- }else if(!switchToLEFT){
- leftSpeed -= 1;
- }
- }
- getDecoders();
- CyDelay(del);
- StopMoving();
- ultrasonic('L');
- // sprintf(String, "dist; %d \n", frontDist);
- //UART_1_PutString(String);
- }
- StopMoving();
- //sprintf(String, "dist; %d \n", frontDist);
- // UART_1_PutString(String);
- }//END OF MOVEMENT UNTIL DISTANCE SENSED
- //REVERSE
- void reverse(float dist){
- float factor = dist/C;
- int targetCount = factor* wheelCirc;
- int rightSpeed = 170;
- int leftSpeed = 170;
- int switchToRIGHT = 1;
- int switchToLEFT = 1;
- int diff = 0;
- resetDecoders();
- getDecoders();
- setSpeed(leftSpeed,rightSpeed);
- MotorDirectionControl_Write(BACK);
- while(abs(LeftCount)<targetCount && abs(RightCount) <targetCount ){
- setSpeed(leftSpeed,rightSpeed);
- diff = RightCount - LeftCount;
- if(diff < 0){ //deviating left //turn right
- if(switchToRIGHT){
- leftSpeed = rightSpeed +1;
- switchToRIGHT = 0;
- switchToLEFT = 1;
- }else if(!switchToRIGHT){
- leftSpeed ++;
- }
- }else if(diff > 0){ //deviating right //turn left
- if(switchToLEFT){
- leftSpeed = rightSpeed;
- switchToRIGHT = 1;
- switchToLEFT = 0;
- }else if(!switchToLEFT){
- leftSpeed -= 1;
- }
- }
- getDecoders();
- CyDelay(100);
- }
- StopMoving();
- resetDecoders();
- }//END OF REVERSE
- //Stop moving
- void StopMoving(){
- MotorSpeedControl_WriteCompare1(0);
- MotorSpeedControl_WriteCompare2(0);
- }
- void resetDecoders(){
- LeftWheelDecoder_SetCounter(0);
- RightWheelDecoder_SetCounter(0);
- }
- void getDecoders(){
- LeftCount = LeftWheelDecoder_GetCounter();
- RightCount = RightWheelDecoder_GetCounter();
- }
- void setSpeed(int LeftSpeed,int RightSpeed){
- MotorSpeedControl_WriteCompare1(LeftSpeed);
- MotorSpeedControl_WriteCompare2(RightSpeed);
- }
- /* [] END OF FILE */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement