Ticket #69: example.c

File example.c, 1.6 KB (added by cleon, 9 months ago)

Simple program to set different speeds for each stepper motor at the same time

Line 
1#include "config.h"
2#include "stdlib.h"
3#include "string.h"
4#include <stdio.h>
5
6#define LEFT_ENGINE   0
7#define RIGHT_ENGINE  1
8#define MIN_SPEED   10
9#define MAX_SPEED   30
10#define STEP      1
11
12void Run( ) {
13 
14  int Left, Center, Right;
15
16  Usb_SetActive( 1 );
17  // Define robot name
18  System_SetName( "R23");
19  // Fix for initial negative stepping
20  Stepper_SetPosition(  LEFT_ENGINE,    100000);
21  Stepper_SetPosition(  RIGHT_ENGINE,   100000);
22  while ( true ) {
23    Right   = AnalogIn_GetValue(0);
24    Center  = AnalogIn_GetValue(1);
25    Left  = AnalogIn_GetValue(2);
26    // FRONT 1 - 0 - 1
27    if ( Left > 1000 && Center < 10 && Right > 1000 ) {
28      Stepper_SetSpeed( LEFT_ENGINE,    MAX_SPEED );
29      Stepper_Step(     LEFT_ENGINE,    STEP );
30      Stepper_SetSpeed(   RIGHT_ENGINE,   MAX_SPEED );
31      Stepper_Step(     RIGHT_ENGINE,   STEP );
32    // LEFT 0 - 1 - 1
33    // ***** Problem is in these next two if's, where I want to set different speeds for each steeper *****
34    } else if ( Left < 10 && Center > 1000 && Right > 1000 ) {
35      Stepper_SetSpeed( LEFT_ENGINE,    MIN_SPEED );
36      Stepper_Step(     LEFT_ENGINE,    STEP );
37      Stepper_SetSpeed( RIGHT_ENGINE,   MAX_SPEED );
38      Stepper_Step(     RIGHT_ENGINE,   STEP );
39    // RIGHT 1 - 1 - 0
40    } else if ( Left > 1000 && Center > 1000 && Right < 10 ) {
41      AppLed_SetState( 0, 0 ); AppLed_SetState( 1, 1 ); AppLed_SetState( 2, 1 );
42      Stepper_SetSpeed( LEFT_ENGINE,    MAX_SPEED );
43      Stepper_Step(     LEFT_ENGINE,    STEP );
44      Stepper_SetSpeed( RIGHT_ENGINE,   MIN_SPEED );
45      Stepper_Step(     RIGHT_ENGINE,   STEP );
46    } else {
47      Stepper_SetActive( 0, 0 );
48      Stepper_SetActive( 1, 0 );
49    }
50  }
51}