Communication between two serial ports and control direction of motor through the serial terminal.
Dependencies: C12832_lcd mbed-rtos mbed
Diff: main.cpp
- Revision:
- 0:b8435cfc1bba
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Apr 30 19:23:22 2014 +0000 @@ -0,0 +1,66 @@ +#include "mbed.h" +#include "rtos.h" +#include "C12832_lcd.h" +#include "DebouncedIn.h" + + +DigitalOut myled(LED1); +DigitalOut dir_pin(LED4); +DebouncedIn dir_fwd(p15); +DebouncedIn dir_rev(p12); +Serial Wifi_Tx(p9,p10); +Serial Wifi_Rx(p28,p27); +Serial pc(USBTX,USBRX); +C12832_LCD lcd; + +bool dir; + +void Serial_Tx(void const *args) { + while (1){ + while (pc.readable()) + { + Wifi_Tx.putc(pc.getc()); + } + Thread::wait(1000); + } +} + +void Serial_Rx(void const *) { + char c; + while (1) { + while (Wifi_Rx.readable()) + { + c = Wifi_Rx.getc(); + lcd.printf("%c",c); + if (c == 'F') + dir = 1; + else if (c == 'R') + dir = 0; + } + Thread::wait (10); + } +} + +void dir_control(void const *) { + while (1) { + if ((dir_fwd || dir) && !dir_rev) { + dir_pin = 1; + dir = 1; + } + else if (dir_rev || !dir) { + dir_pin = 0; + dir = 0; + } + Thread::wait(10); + } + +} +int main() { + Thread serial_tx(Serial_Tx); + Thread serial_rx(Serial_Rx); + Thread Direction_Control(dir_control); + while(1) { + myled = !myled; + Thread::wait(500); + } +}