Communication between two serial ports and control direction of motor through the serial terminal.
Dependencies: C12832_lcd mbed-rtos mbed
main.cpp@0:b8435cfc1bba, 2014-04-30 (annotated)
- Committer:
- bhakti08
- Date:
- Wed Apr 30 19:23:22 2014 +0000
- Revision:
- 0:b8435cfc1bba
The program does the following:; 1. Communication between two serial ports on the MBED; 2. Control ON/OFF of a LED(The pin can be used as direction control of the motor) using the joystick and the serial communication;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bhakti08 | 0:b8435cfc1bba | 1 | #include "mbed.h" |
bhakti08 | 0:b8435cfc1bba | 2 | #include "rtos.h" |
bhakti08 | 0:b8435cfc1bba | 3 | #include "C12832_lcd.h" |
bhakti08 | 0:b8435cfc1bba | 4 | #include "DebouncedIn.h" |
bhakti08 | 0:b8435cfc1bba | 5 | |
bhakti08 | 0:b8435cfc1bba | 6 | |
bhakti08 | 0:b8435cfc1bba | 7 | DigitalOut myled(LED1); |
bhakti08 | 0:b8435cfc1bba | 8 | DigitalOut dir_pin(LED4); |
bhakti08 | 0:b8435cfc1bba | 9 | DebouncedIn dir_fwd(p15); |
bhakti08 | 0:b8435cfc1bba | 10 | DebouncedIn dir_rev(p12); |
bhakti08 | 0:b8435cfc1bba | 11 | Serial Wifi_Tx(p9,p10); |
bhakti08 | 0:b8435cfc1bba | 12 | Serial Wifi_Rx(p28,p27); |
bhakti08 | 0:b8435cfc1bba | 13 | Serial pc(USBTX,USBRX); |
bhakti08 | 0:b8435cfc1bba | 14 | C12832_LCD lcd; |
bhakti08 | 0:b8435cfc1bba | 15 | |
bhakti08 | 0:b8435cfc1bba | 16 | bool dir; |
bhakti08 | 0:b8435cfc1bba | 17 | |
bhakti08 | 0:b8435cfc1bba | 18 | void Serial_Tx(void const *args) { |
bhakti08 | 0:b8435cfc1bba | 19 | while (1){ |
bhakti08 | 0:b8435cfc1bba | 20 | while (pc.readable()) |
bhakti08 | 0:b8435cfc1bba | 21 | { |
bhakti08 | 0:b8435cfc1bba | 22 | Wifi_Tx.putc(pc.getc()); |
bhakti08 | 0:b8435cfc1bba | 23 | } |
bhakti08 | 0:b8435cfc1bba | 24 | Thread::wait(1000); |
bhakti08 | 0:b8435cfc1bba | 25 | } |
bhakti08 | 0:b8435cfc1bba | 26 | } |
bhakti08 | 0:b8435cfc1bba | 27 | |
bhakti08 | 0:b8435cfc1bba | 28 | void Serial_Rx(void const *) { |
bhakti08 | 0:b8435cfc1bba | 29 | char c; |
bhakti08 | 0:b8435cfc1bba | 30 | while (1) { |
bhakti08 | 0:b8435cfc1bba | 31 | while (Wifi_Rx.readable()) |
bhakti08 | 0:b8435cfc1bba | 32 | { |
bhakti08 | 0:b8435cfc1bba | 33 | c = Wifi_Rx.getc(); |
bhakti08 | 0:b8435cfc1bba | 34 | lcd.printf("%c",c); |
bhakti08 | 0:b8435cfc1bba | 35 | if (c == 'F') |
bhakti08 | 0:b8435cfc1bba | 36 | dir = 1; |
bhakti08 | 0:b8435cfc1bba | 37 | else if (c == 'R') |
bhakti08 | 0:b8435cfc1bba | 38 | dir = 0; |
bhakti08 | 0:b8435cfc1bba | 39 | } |
bhakti08 | 0:b8435cfc1bba | 40 | Thread::wait (10); |
bhakti08 | 0:b8435cfc1bba | 41 | } |
bhakti08 | 0:b8435cfc1bba | 42 | } |
bhakti08 | 0:b8435cfc1bba | 43 | |
bhakti08 | 0:b8435cfc1bba | 44 | void dir_control(void const *) { |
bhakti08 | 0:b8435cfc1bba | 45 | while (1) { |
bhakti08 | 0:b8435cfc1bba | 46 | if ((dir_fwd || dir) && !dir_rev) { |
bhakti08 | 0:b8435cfc1bba | 47 | dir_pin = 1; |
bhakti08 | 0:b8435cfc1bba | 48 | dir = 1; |
bhakti08 | 0:b8435cfc1bba | 49 | } |
bhakti08 | 0:b8435cfc1bba | 50 | else if (dir_rev || !dir) { |
bhakti08 | 0:b8435cfc1bba | 51 | dir_pin = 0; |
bhakti08 | 0:b8435cfc1bba | 52 | dir = 0; |
bhakti08 | 0:b8435cfc1bba | 53 | } |
bhakti08 | 0:b8435cfc1bba | 54 | Thread::wait(10); |
bhakti08 | 0:b8435cfc1bba | 55 | } |
bhakti08 | 0:b8435cfc1bba | 56 | |
bhakti08 | 0:b8435cfc1bba | 57 | } |
bhakti08 | 0:b8435cfc1bba | 58 | int main() { |
bhakti08 | 0:b8435cfc1bba | 59 | Thread serial_tx(Serial_Tx); |
bhakti08 | 0:b8435cfc1bba | 60 | Thread serial_rx(Serial_Rx); |
bhakti08 | 0:b8435cfc1bba | 61 | Thread Direction_Control(dir_control); |
bhakti08 | 0:b8435cfc1bba | 62 | while(1) { |
bhakti08 | 0:b8435cfc1bba | 63 | myled = !myled; |
bhakti08 | 0:b8435cfc1bba | 64 | Thread::wait(500); |
bhakti08 | 0:b8435cfc1bba | 65 | } |
bhakti08 | 0:b8435cfc1bba | 66 | } |