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:
rlanghbv
Date:
Thu Apr 07 11:05:26 2016 +0000
Revision:
2:25bcc26f7a5b
Parent:
1:a3287196a9b3
Child:
3:15be78948724
Using Serial instead of STDIN

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 Mutex stdio_mutex;
mjhaugsdal 1:a3287196a9b3 13 static int fart = 1000;
mjhaugsdal 1:a3287196a9b3 14 static char global_direction;
mjhaugsdal 1:a3287196a9b3 15 static int global_counter;
rlanghbv 0:bd78e433db61 16
rlanghbv 0:bd78e433db61 17
rlanghbv 0:bd78e433db61 18 void step4Right()
rlanghbv 0:bd78e433db61 19 {
rlanghbv 0:bd78e433db61 20 IN1=0;
rlanghbv 0:bd78e433db61 21 IN2=1;
rlanghbv 0:bd78e433db61 22 IN3=0;
rlanghbv 0:bd78e433db61 23 IN4=1;
mjhaugsdal 1:a3287196a9b3 24 wait_us(fart); //legg som global variabel "fart"
rlanghbv 0:bd78e433db61 25 IN1=0;
rlanghbv 0:bd78e433db61 26 IN2=1;
rlanghbv 0:bd78e433db61 27 IN3=1;
rlanghbv 0:bd78e433db61 28 IN4=0;
mjhaugsdal 1:a3287196a9b3 29 wait_us(fart);
rlanghbv 0:bd78e433db61 30 IN1=1;
rlanghbv 0:bd78e433db61 31 IN2=0;
rlanghbv 0:bd78e433db61 32 IN3=1;
rlanghbv 0:bd78e433db61 33 IN4=0;
mjhaugsdal 1:a3287196a9b3 34 wait_us(fart);
rlanghbv 0:bd78e433db61 35 IN1=1;
rlanghbv 0:bd78e433db61 36 IN2=0;
rlanghbv 0:bd78e433db61 37 IN3=0;
rlanghbv 0:bd78e433db61 38 IN4=1;
mjhaugsdal 1:a3287196a9b3 39 wait_us(fart);
rlanghbv 0:bd78e433db61 40 }
rlanghbv 0:bd78e433db61 41 void step4Left()
rlanghbv 0:bd78e433db61 42 {
rlanghbv 0:bd78e433db61 43 IN1=1;
rlanghbv 0:bd78e433db61 44 IN2=0;
rlanghbv 0:bd78e433db61 45 IN3=0;
rlanghbv 0:bd78e433db61 46 IN4=1;
mjhaugsdal 1:a3287196a9b3 47 wait_us(fart);
rlanghbv 0:bd78e433db61 48
rlanghbv 0:bd78e433db61 49 IN1=1;
rlanghbv 0:bd78e433db61 50 IN2=0;
rlanghbv 0:bd78e433db61 51 IN3=1;
rlanghbv 0:bd78e433db61 52 IN4=0;
mjhaugsdal 1:a3287196a9b3 53 wait_us(fart);
rlanghbv 0:bd78e433db61 54
rlanghbv 0:bd78e433db61 55 IN1=0;
rlanghbv 0:bd78e433db61 56 IN2=1;
rlanghbv 0:bd78e433db61 57 IN3=1;
rlanghbv 0:bd78e433db61 58 IN4=0;
mjhaugsdal 1:a3287196a9b3 59 wait_us(fart);
rlanghbv 0:bd78e433db61 60
rlanghbv 0:bd78e433db61 61 IN1=0;
rlanghbv 0:bd78e433db61 62 IN2=1;
rlanghbv 0:bd78e433db61 63 IN3=0;
rlanghbv 0:bd78e433db61 64 IN4=1;
mjhaugsdal 1:a3287196a9b3 65 wait_us(fart);
rlanghbv 0:bd78e433db61 66 }
rlanghbv 0:bd78e433db61 67
mjhaugsdal 1:a3287196a9b3 68
mjhaugsdal 1:a3287196a9b3 69 void input(void const *args)
mjhaugsdal 1:a3287196a9b3 70 {
mjhaugsdal 1:a3287196a9b3 71 while(true)
mjhaugsdal 1:a3287196a9b3 72 {
rlanghbv 2:25bcc26f7a5b 73 //scanf(" %c", &global_direction);
rlanghbv 2:25bcc26f7a5b 74 //global_direction=getchar();
rlanghbv 2:25bcc26f7a5b 75 if(pc.readable())
rlanghbv 2:25bcc26f7a5b 76 { global_direction=pc.getc(); }
rlanghbv 2:25bcc26f7a5b 77
rlanghbv 2:25bcc26f7a5b 78 Thread::wait(10);
mjhaugsdal 1:a3287196a9b3 79 }
mjhaugsdal 1:a3287196a9b3 80 }
rlanghbv 0:bd78e433db61 81
rlanghbv 0:bd78e433db61 82 int main()
rlanghbv 0:bd78e433db61 83 {
mjhaugsdal 1:a3287196a9b3 84 //Thread 1 has constant feed from usb
rlanghbv 2:25bcc26f7a5b 85 Thread t1(input);
mjhaugsdal 1:a3287196a9b3 86 while (true)
mjhaugsdal 1:a3287196a9b3 87 {
rlanghbv 0:bd78e433db61 88 step4Left();
rlanghbv 0:bd78e433db61 89
mjhaugsdal 1:a3287196a9b3 90 /*
mjhaugsdal 1:a3287196a9b3 91 if (global_direction == '0')
mjhaugsdal 1:a3287196a9b3 92 {
mjhaugsdal 1:a3287196a9b3 93 step4Left();
mjhaugsdal 1:a3287196a9b3 94 printf("%c \n" + global_direction);
mjhaugsdal 1:a3287196a9b3 95 } */
mjhaugsdal 1:a3287196a9b3 96 /*else if (global_direction == '1')
mjhaugsdal 1:a3287196a9b3 97 {
mjhaugsdal 1:a3287196a9b3 98 step4Right();
mjhaugsdal 1:a3287196a9b3 99 //printf("RIGHT \n");
mjhaugsdal 1:a3287196a9b3 100 } */
mjhaugsdal 1:a3287196a9b3 101 /* else
mjhaugsdal 1:a3287196a9b3 102 {
mjhaugsdal 1:a3287196a9b3 103 //Do nothing
mjhaugsdal 1:a3287196a9b3 104
mjhaugsdal 1:a3287196a9b3 105 }*/
mjhaugsdal 1:a3287196a9b3 106 }
mjhaugsdal 1:a3287196a9b3 107
mjhaugsdal 1:a3287196a9b3 108 } //END Main