Communication between two serial ports and control direction of motor through the serial terminal.

Dependencies:   C12832_lcd mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }