123123123123123123123123123

Dependencies:   mbed

Committer:
TonyYI
Date:
Thu Jul 03 14:52:44 2014 +0000
Revision:
3:4306d042af6f
Parent:
0:3417ca0a36c0
123123

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TonyYI 0:3417ca0a36c0 1 /******************************************************
TonyYI 0:3417ca0a36c0 2
TonyYI 0:3417ca0a36c0 3 ****┏┓ ┏┓
TonyYI 0:3417ca0a36c0 4 **┏┛┻━━━━━━┛┻┓
TonyYI 0:3417ca0a36c0 5 **┃ ┃
TonyYI 0:3417ca0a36c0 6 **┃ ━━━ ┃
TonyYI 0:3417ca0a36c0 7 **┃ ┳┛ ┗┳ ┃
TonyYI 0:3417ca0a36c0 8 **┃ ┃
TonyYI 0:3417ca0a36c0 9 **┃ ''' ┻ ''' ┃
TonyYI 0:3417ca0a36c0 10 **┃ ┃
TonyYI 0:3417ca0a36c0 11 **┗━━┓ ┏━━┛
TonyYI 0:3417ca0a36c0 12 *******┃ ┃
TonyYI 0:3417ca0a36c0 13 *******┃ ┃
TonyYI 0:3417ca0a36c0 14 *******┃ ┃
TonyYI 0:3417ca0a36c0 15 *******┃ ┗━━━━━━━━┓
TonyYI 0:3417ca0a36c0 16 *******┃ ┃━┓
TonyYI 0:3417ca0a36c0 17 *******┃ NO BUG ┏━┛
TonyYI 0:3417ca0a36c0 18 *******┃ ┃
TonyYI 0:3417ca0a36c0 19 *******┗━┓ ┓ ┏━┏━┓ ━┛
TonyYI 0:3417ca0a36c0 20 ***********┃ ┛ ┛ ┃ ┛ ┛
TonyYI 0:3417ca0a36c0 21 ***********┃ ┃ ┃ ┃ ┃ ┃
TonyYI 0:3417ca0a36c0 22 ***********┗━┛━┛ ┗━┛━┛
TonyYI 0:3417ca0a36c0 23
TonyYI 0:3417ca0a36c0 24 This part is added by project ESDC2014 of CUHK team.
TonyYI 0:3417ca0a36c0 25 All the code with this header are under GPL open source license.
TonyYI 0:3417ca0a36c0 26 This program is running on Mbed Platform 'mbed LPC1768' avaliable in 'http://mbed.org'.
TonyYI 0:3417ca0a36c0 27 **********************************************************/
TonyYI 0:3417ca0a36c0 28 #include "mbed.h"
TonyYI 0:3417ca0a36c0 29 #include "define.h"
TonyYI 0:3417ca0a36c0 30
TonyYI 0:3417ca0a36c0 31 #ifndef _PORT_H
TonyYI 0:3417ca0a36c0 32 #define _PORT_H
TonyYI 0:3417ca0a36c0 33
TonyYI 0:3417ca0a36c0 34 MyDigitalOut IntelToMbed_LED(LED1); //uart port LED between Intel Board and Mbed
TonyYI 0:3417ca0a36c0 35 MyDigitalOut MbedToArduino_LED(LED2); //uart port LED between Mbed and Arduino
TonyYI 0:3417ca0a36c0 36 MySerial DEBUG(USBTX, USBRX); //usb serial port between computer and Mbed
TonyYI 3:4306d042af6f 37 MySerial CompassData(p9, p10); ////uart port between compass and Mbed
TonyYI 0:3417ca0a36c0 38 MySerial IntelToMbed(p13, p14); //uart port between Intel Board and Mbed
TonyYI 0:3417ca0a36c0 39 MySerial MbedToArduino(p28, p27); //uart port between Mbed and Arduino
TonyYI 0:3417ca0a36c0 40 MyPwmOut lifter_pwmUp(p21);
TonyYI 0:3417ca0a36c0 41 MyPwmOut lifter_pwmDown(p22);
TonyYI 0:3417ca0a36c0 42 MyDigitalOut lifter_enable(p23);
TonyYI 0:3417ca0a36c0 43 MyInterruptIn lifter_encoder_A(p18);
TonyYI 0:3417ca0a36c0 44 MyDigitalIn lifter_encoder_B(p17);
TonyYI 0:3417ca0a36c0 45
TonyYI 0:3417ca0a36c0 46 MyPwmOut camera_platform_pwmRoll(p24);//roll min counter clockwise, max clockwise
TonyYI 0:3417ca0a36c0 47 MyPwmOut camera_platform_pwmPitch(p26);//pitch min down, max up, mid 1700
TonyYI 0:3417ca0a36c0 48 MyPwmOut camera_platform_pwmYaw(p25);//yaw min right, max left, mid 1500
TonyYI 0:3417ca0a36c0 49
TonyYI 0:3417ca0a36c0 50 MyDigitalOut buzzer_pin(p29);
TonyYI 0:3417ca0a36c0 51 Buzzer buzzer(&buzzer_pin);
TonyYI 3:4306d042af6f 52 COMPASS compass(&CompassData);
TonyYI 0:3417ca0a36c0 53
TonyYI 3:4306d042af6f 54 Communication com(&DEBUG, &IntelToMbed, &MbedToArduino, &compass);
TonyYI 0:3417ca0a36c0 55 Lifter lifter(&lifter_enable, &lifter_pwmUp, &lifter_pwmDown, &lifter_encoder_A, &lifter_encoder_B);
TonyYI 0:3417ca0a36c0 56 Camera_platform camera_platform(&camera_platform_pwmRoll, &camera_platform_pwmPitch, &camera_platform_pwmYaw);
TonyYI 0:3417ca0a36c0 57
TonyYI 0:3417ca0a36c0 58 void IntelToMbedRxHandler()
TonyYI 0:3417ca0a36c0 59 {
TonyYI 0:3417ca0a36c0 60 //__disable_irq();//disable interupt when receiving data from XBEE_UART
TonyYI 0:3417ca0a36c0 61 uint8_t _x = IntelToMbed.getc();
TonyYI 0:3417ca0a36c0 62 com.putToBuffer(_x, 0); //function inside Communication::
TonyYI 0:3417ca0a36c0 63 //__enable_irq();
TonyYI 0:3417ca0a36c0 64 }
TonyYI 0:3417ca0a36c0 65 void MbedToArduinoRxHandler()
TonyYI 0:3417ca0a36c0 66 {
TonyYI 0:3417ca0a36c0 67 //__disable_irq();//disable interupt when receiving data from XBEE_UART
TonyYI 0:3417ca0a36c0 68 uint8_t _x = MbedToArduino.getc();
TonyYI 0:3417ca0a36c0 69 com.putToBuffer(_x, 1); //function inside Communication::
TonyYI 0:3417ca0a36c0 70 //__enable_irq();
TonyYI 0:3417ca0a36c0 71 }
TonyYI 3:4306d042af6f 72 void compassHandler()
TonyYI 3:4306d042af6f 73 {
TonyYI 3:4306d042af6f 74 //__disable_irq();//disable interupt when receiving data from XBEE_UART
TonyYI 3:4306d042af6f 75 uint8_t _x = CompassData.getc();
TonyYI 3:4306d042af6f 76 compass.putToBuffer(_x); //function inside Communication::
TonyYI 3:4306d042af6f 77 //__enable_irq();
TonyYI 3:4306d042af6f 78 }
TonyYI 0:3417ca0a36c0 79
TonyYI 0:3417ca0a36c0 80 void LifterPulseHandler()
TonyYI 0:3417ca0a36c0 81 {
TonyYI 0:3417ca0a36c0 82 if(lifter.pulseCount < lifter.targetPulseCount)
TonyYI 0:3417ca0a36c0 83 {
TonyYI 0:3417ca0a36c0 84 lifter.pulseCount++;
TonyYI 0:3417ca0a36c0 85 if(lifter.getDir() == 0) //up
TonyYI 0:3417ca0a36c0 86 {
TonyYI 0:3417ca0a36c0 87 lifter.setLifterUp();
TonyYI 0:3417ca0a36c0 88 }
TonyYI 0:3417ca0a36c0 89 else if(lifter.getDir() == 2)//down
TonyYI 0:3417ca0a36c0 90 {
TonyYI 0:3417ca0a36c0 91 lifter.setLifterDown();
TonyYI 0:3417ca0a36c0 92 }
TonyYI 0:3417ca0a36c0 93 }
TonyYI 0:3417ca0a36c0 94 else
TonyYI 0:3417ca0a36c0 95 {
TonyYI 0:3417ca0a36c0 96 lifter.targetPulseCount = 0;
TonyYI 0:3417ca0a36c0 97 lifter.pulseCount = 0;
TonyYI 0:3417ca0a36c0 98 lifter.setLifterStop();
TonyYI 0:3417ca0a36c0 99 }
TonyYI 0:3417ca0a36c0 100 }
TonyYI 0:3417ca0a36c0 101
TonyYI 0:3417ca0a36c0 102 void init_PORT() //used in main() function
TonyYI 0:3417ca0a36c0 103 {
TonyYI 0:3417ca0a36c0 104 DEBUG.baud(9600);
TonyYI 0:3417ca0a36c0 105
TonyYI 0:3417ca0a36c0 106 IntelToMbed.baud(9600);
TonyYI 0:3417ca0a36c0 107 IntelToMbed.attach(&IntelToMbedRxHandler); //serial interrupt function
TonyYI 0:3417ca0a36c0 108
TonyYI 0:3417ca0a36c0 109 MbedToArduino.baud(9600);
TonyYI 0:3417ca0a36c0 110 MbedToArduino.attach(&MbedToArduinoRxHandler); //serial interrupt function
TonyYI 0:3417ca0a36c0 111
TonyYI 3:4306d042af6f 112 CompassData.baud(56000);
TonyYI 3:4306d042af6f 113 CompassData.attach(&compassHandler);
TonyYI 3:4306d042af6f 114
TonyYI 0:3417ca0a36c0 115 lifter_encoder_A.fall(&LifterPulseHandler); //interrupt
TonyYI 0:3417ca0a36c0 116
TonyYI 0:3417ca0a36c0 117 camera_platform_pwmRoll.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 118 camera_platform_pwmPitch.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 119 camera_platform_pwmYaw.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 120
TonyYI 0:3417ca0a36c0 121 camera_platform_pwmRoll.pulsewidth_us(ROLL_MID);
TonyYI 0:3417ca0a36c0 122 camera_platform_pwmPitch.pulsewidth_us(PITCH_MID);
TonyYI 0:3417ca0a36c0 123 camera_platform_pwmYaw.pulsewidth_us(YAW_MID);
TonyYI 0:3417ca0a36c0 124 }
TonyYI 0:3417ca0a36c0 125
TonyYI 0:3417ca0a36c0 126 #endif