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:
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?

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 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