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
main.cpp@3:15be78948724, 2016-04-08 (annotated)
- Committer:
- mjhaugsdal
- Date:
- Fri Apr 08 13:27:08 2016 +0000
- Revision:
- 3:15be78948724
- Parent:
- 2:25bcc26f7a5b
- Child:
- 4:4d655fdae399
Program for controlling stepper motors with threads.; Thanks to rlanghbv
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:15be78948724 | 90 | |
mjhaugsdal | 3:15be78948724 | 91 | |
mjhaugsdal | 3:15be78948724 | 92 | if (m_cmd == '0') |
mjhaugsdal | 3:15be78948724 | 93 | { |
mjhaugsdal | 3:15be78948724 | 94 | global_direction = '0'; |
mjhaugsdal | 3:15be78948724 | 95 | step4Left(); |
mjhaugsdal | 3:15be78948724 | 96 | //printf("%c \n" + global_direction); |
mjhaugsdal | 3:15be78948724 | 97 | } |
mjhaugsdal | 3:15be78948724 | 98 | else if (m_cmd == '1') |
mjhaugsdal | 3:15be78948724 | 99 | { |
mjhaugsdal | 3:15be78948724 | 100 | global_direction = '1'; |
mjhaugsdal | 3:15be78948724 | 101 | step4Right(); |
mjhaugsdal | 3:15be78948724 | 102 | //printf("RIGHT \n"); |
mjhaugsdal | 3:15be78948724 | 103 | } |
mjhaugsdal | 3:15be78948724 | 104 | if (m_cmd == 'a') |
mjhaugsdal | 3:15be78948724 | 105 | { |
mjhaugsdal | 3:15be78948724 | 106 | fart = 1000; |
mjhaugsdal | 3:15be78948724 | 107 | |
mjhaugsdal | 3:15be78948724 | 108 | } |
mjhaugsdal | 3:15be78948724 | 109 | else if (m_cmd == 'b') |
mjhaugsdal | 3:15be78948724 | 110 | { |
mjhaugsdal | 3:15be78948724 | 111 | fart = 5000; |
mjhaugsdal | 3:15be78948724 | 112 | } |
mjhaugsdal | 3:15be78948724 | 113 | if (global_direction =='0') |
mjhaugsdal | 1:a3287196a9b3 | 114 | { |
mjhaugsdal | 1:a3287196a9b3 | 115 | step4Left(); |
mjhaugsdal | 3:15be78948724 | 116 | } |
mjhaugsdal | 3:15be78948724 | 117 | else if (global_direction == '1') |
mjhaugsdal | 1:a3287196a9b3 | 118 | { |
mjhaugsdal | 1:a3287196a9b3 | 119 | step4Right(); |
mjhaugsdal | 3:15be78948724 | 120 | } |
mjhaugsdal | 3:15be78948724 | 121 | else |
mjhaugsdal | 1:a3287196a9b3 | 122 | { |
mjhaugsdal | 3:15be78948724 | 123 | global_direction = 'x'; |
mjhaugsdal | 3:15be78948724 | 124 | } |
mjhaugsdal | 1:a3287196a9b3 | 125 | } |
mjhaugsdal | 1:a3287196a9b3 | 126 | |
mjhaugsdal | 3:15be78948724 | 127 | } //END Main |