Engine control program with 3 engines Needs to make a case for each simultaneous engine setting, because of the WAIT after each number of bits have been sent.

Dependencies:   mbed-rtos mbed PinDetect

Fork of FinalMotorControl by Robot Bachelor

Committer:
mjhaugsdal
Date:
Wed Apr 13 10:10:23 2016 +0000
Revision:
4:4d655fdae399
Parent:
3:15be78948724
Child:
5:fdc7a779d525
Made new cases for m_cmd to control speed and direction in the same case;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rlanghbv 0:bd78e433db61 1 #include "mbed.h"
mjhaugsdal 1:a3287196a9b3 2 #include "rtos.h"
rlanghbv 0:bd78e433db61 3
rlanghbv 2:25bcc26f7a5b 4 Serial pc(USBTX, USBRX); // tx, rx
rlanghbv 0:bd78e433db61 5
mjhaugsdal 1:a3287196a9b3 6 //Analog Pins
rlanghbv 0:bd78e433db61 7 DigitalOut IN1(D3);
rlanghbv 0:bd78e433db61 8 DigitalOut IN2(D4);
rlanghbv 0:bd78e433db61 9 DigitalOut IN3(D5);
rlanghbv 0:bd78e433db61 10 DigitalOut IN4(D6);
rlanghbv 0:bd78e433db61 11
mjhaugsdal 1:a3287196a9b3 12 static int fart = 1000;
mjhaugsdal 3:15be78948724 13 static char m_cmd = 'x';
rlanghbv 0:bd78e433db61 14
rlanghbv 0:bd78e433db61 15
rlanghbv 0:bd78e433db61 16 void step4Right()
rlanghbv 0:bd78e433db61 17 {
rlanghbv 0:bd78e433db61 18 IN1=0;
rlanghbv 0:bd78e433db61 19 IN2=1;
rlanghbv 0:bd78e433db61 20 IN3=0;
rlanghbv 0:bd78e433db61 21 IN4=1;
mjhaugsdal 1:a3287196a9b3 22 wait_us(fart); //legg som global variabel "fart"
rlanghbv 0:bd78e433db61 23 IN1=0;
rlanghbv 0:bd78e433db61 24 IN2=1;
rlanghbv 0:bd78e433db61 25 IN3=1;
rlanghbv 0:bd78e433db61 26 IN4=0;
mjhaugsdal 1:a3287196a9b3 27 wait_us(fart);
rlanghbv 0:bd78e433db61 28 IN1=1;
rlanghbv 0:bd78e433db61 29 IN2=0;
rlanghbv 0:bd78e433db61 30 IN3=1;
rlanghbv 0:bd78e433db61 31 IN4=0;
mjhaugsdal 1:a3287196a9b3 32 wait_us(fart);
rlanghbv 0:bd78e433db61 33 IN1=1;
rlanghbv 0:bd78e433db61 34 IN2=0;
rlanghbv 0:bd78e433db61 35 IN3=0;
rlanghbv 0:bd78e433db61 36 IN4=1;
mjhaugsdal 1:a3287196a9b3 37 wait_us(fart);
rlanghbv 0:bd78e433db61 38 }
rlanghbv 0:bd78e433db61 39 void step4Left()
rlanghbv 0:bd78e433db61 40 {
rlanghbv 0:bd78e433db61 41 IN1=1;
rlanghbv 0:bd78e433db61 42 IN2=0;
rlanghbv 0:bd78e433db61 43 IN3=0;
rlanghbv 0:bd78e433db61 44 IN4=1;
mjhaugsdal 1:a3287196a9b3 45 wait_us(fart);
rlanghbv 0:bd78e433db61 46
rlanghbv 0:bd78e433db61 47 IN1=1;
rlanghbv 0:bd78e433db61 48 IN2=0;
rlanghbv 0:bd78e433db61 49 IN3=1;
rlanghbv 0:bd78e433db61 50 IN4=0;
mjhaugsdal 1:a3287196a9b3 51 wait_us(fart);
rlanghbv 0:bd78e433db61 52
rlanghbv 0:bd78e433db61 53 IN1=0;
rlanghbv 0:bd78e433db61 54 IN2=1;
rlanghbv 0:bd78e433db61 55 IN3=1;
rlanghbv 0:bd78e433db61 56 IN4=0;
mjhaugsdal 1:a3287196a9b3 57 wait_us(fart);
rlanghbv 0:bd78e433db61 58
rlanghbv 0:bd78e433db61 59 IN1=0;
rlanghbv 0:bd78e433db61 60 IN2=1;
rlanghbv 0:bd78e433db61 61 IN3=0;
rlanghbv 0:bd78e433db61 62 IN4=1;
mjhaugsdal 1:a3287196a9b3 63 wait_us(fart);
rlanghbv 0:bd78e433db61 64 }
rlanghbv 0:bd78e433db61 65
mjhaugsdal 1:a3287196a9b3 66
mjhaugsdal 1:a3287196a9b3 67 void input(void const *args)
mjhaugsdal 1:a3287196a9b3 68 {
mjhaugsdal 1:a3287196a9b3 69 while(true)
mjhaugsdal 1:a3287196a9b3 70 {
mjhaugsdal 3:15be78948724 71
rlanghbv 2:25bcc26f7a5b 72 if(pc.readable())
mjhaugsdal 3:15be78948724 73 { m_cmd=pc.getc();
mjhaugsdal 3:15be78948724 74
mjhaugsdal 3:15be78948724 75 }
rlanghbv 2:25bcc26f7a5b 76
rlanghbv 2:25bcc26f7a5b 77 Thread::wait(10);
mjhaugsdal 1:a3287196a9b3 78 }
mjhaugsdal 1:a3287196a9b3 79 }
rlanghbv 0:bd78e433db61 80
rlanghbv 0:bd78e433db61 81 int main()
rlanghbv 0:bd78e433db61 82 {
mjhaugsdal 1:a3287196a9b3 83 //Thread 1 has constant feed from usb
rlanghbv 2:25bcc26f7a5b 84 Thread t1(input);
mjhaugsdal 3:15be78948724 85 static char global_direction;
mjhaugsdal 3:15be78948724 86 printf("Started");
mjhaugsdal 3:15be78948724 87
mjhaugsdal 1:a3287196a9b3 88 while (true)
mjhaugsdal 1:a3287196a9b3 89 {
mjhaugsdal 4:4d655fdae399 90 //Thread::wait(5);
mjhaugsdal 3:15be78948724 91
mjhaugsdal 4:4d655fdae399 92 //0 STEPS LEFT AT MAX SPEED
mjhaugsdal 3:15be78948724 93 if (m_cmd == '0')
mjhaugsdal 3:15be78948724 94 {
mjhaugsdal 4:4d655fdae399 95 fart = 1000;
mjhaugsdal 3:15be78948724 96 global_direction = '0';
mjhaugsdal 3:15be78948724 97 step4Left();
mjhaugsdal 4:4d655fdae399 98 //printf("LEFT \n");
mjhaugsdal 3:15be78948724 99 //printf("%c \n" + global_direction);
mjhaugsdal 3:15be78948724 100 }
mjhaugsdal 4:4d655fdae399 101 //1 STEPS RIGHT AT MAX SPEED
mjhaugsdal 3:15be78948724 102 else if (m_cmd == '1')
mjhaugsdal 3:15be78948724 103 {
mjhaugsdal 4:4d655fdae399 104 fart = 1000;
mjhaugsdal 3:15be78948724 105 global_direction = '1';
mjhaugsdal 3:15be78948724 106 step4Right();
mjhaugsdal 3:15be78948724 107 //printf("RIGHT \n");
mjhaugsdal 4:4d655fdae399 108
mjhaugsdal 3:15be78948724 109 }
mjhaugsdal 4:4d655fdae399 110 else
mjhaugsdal 4:4d655fdae399 111 {
mjhaugsdal 4:4d655fdae399 112 global_direction = 'x';
mjhaugsdal 4:4d655fdae399 113 }
mjhaugsdal 3:15be78948724 114 if (m_cmd == 'a')
mjhaugsdal 3:15be78948724 115 {
mjhaugsdal 4:4d655fdae399 116 fart = 2000;
mjhaugsdal 4:4d655fdae399 117 global_direction = '1';
mjhaugsdal 4:4d655fdae399 118 step4Right();
mjhaugsdal 3:15be78948724 119
mjhaugsdal 3:15be78948724 120 }
mjhaugsdal 4:4d655fdae399 121
mjhaugsdal 4:4d655fdae399 122 else if (m_cmd == 'c')
mjhaugsdal 3:15be78948724 123 {
mjhaugsdal 4:4d655fdae399 124 fart = 2000;
mjhaugsdal 4:4d655fdae399 125 global_direction = '0';
mjhaugsdal 4:4d655fdae399 126 step4Left();
mjhaugsdal 3:15be78948724 127 }
mjhaugsdal 3:15be78948724 128 if (global_direction =='0')
mjhaugsdal 1:a3287196a9b3 129 {
mjhaugsdal 1:a3287196a9b3 130 step4Left();
mjhaugsdal 3:15be78948724 131 }
mjhaugsdal 3:15be78948724 132 else if (global_direction == '1')
mjhaugsdal 1:a3287196a9b3 133 {
mjhaugsdal 1:a3287196a9b3 134 step4Right();
mjhaugsdal 3:15be78948724 135 }
mjhaugsdal 4:4d655fdae399 136
mjhaugsdal 1:a3287196a9b3 137 }
mjhaugsdal 1:a3287196a9b3 138
mjhaugsdal 3:15be78948724 139 } //END Main