terry LAI / Mbed 2 deprecated ESDC2014-pwm

Dependencies:   mbed

Fork of ESDC2014 by terry LAI

Committer:
terryLAI
Date:
Fri Jul 04 16:08:29 2014 +0000
Revision:
5:098e6a44bd94
Parent:
4:a377ecb9364f
can work

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 0:3417ca0a36c0 37 MySerial IntelToMbed(p13, p14); //uart port between Intel Board and Mbed
TonyYI 0:3417ca0a36c0 38 MySerial MbedToArduino(p28, p27); //uart port between Mbed and Arduino
TonyYI 0:3417ca0a36c0 39 MyPwmOut lifter_pwmUp(p21);
TonyYI 0:3417ca0a36c0 40 MyPwmOut lifter_pwmDown(p22);
TonyYI 0:3417ca0a36c0 41 MyDigitalOut lifter_enable(p23);
TonyYI 0:3417ca0a36c0 42 MyInterruptIn lifter_encoder_A(p18);
TonyYI 0:3417ca0a36c0 43 MyDigitalIn lifter_encoder_B(p17);
TonyYI 0:3417ca0a36c0 44
TonyYI 0:3417ca0a36c0 45 MyPwmOut camera_platform_pwmRoll(p24);//roll min counter clockwise, max clockwise
TonyYI 0:3417ca0a36c0 46 MyPwmOut camera_platform_pwmPitch(p26);//pitch min down, max up, mid 1700
TonyYI 0:3417ca0a36c0 47 MyPwmOut camera_platform_pwmYaw(p25);//yaw min right, max left, mid 1500
TonyYI 0:3417ca0a36c0 48
TonyYI 0:3417ca0a36c0 49 MyDigitalOut buzzer_pin(p29);
TonyYI 0:3417ca0a36c0 50 Buzzer buzzer(&buzzer_pin);
terryLAI 4:a377ecb9364f 51
terryLAI 4:a377ecb9364f 52
terryLAI 5:098e6a44bd94 53 MySerial CompassData(p9, p10); ////uart port between compass and Mbed
TonyYI 0:3417ca0a36c0 54
terryLAI 5:098e6a44bd94 55 Communication com(&DEBUG, &IntelToMbed, &MbedToArduino, &CompassData);
TonyYI 0:3417ca0a36c0 56 Lifter lifter(&lifter_enable, &lifter_pwmUp, &lifter_pwmDown, &lifter_encoder_A, &lifter_encoder_B);
TonyYI 0:3417ca0a36c0 57 Camera_platform camera_platform(&camera_platform_pwmRoll, &camera_platform_pwmPitch, &camera_platform_pwmYaw);
TonyYI 0:3417ca0a36c0 58
TonyYI 0:3417ca0a36c0 59 void IntelToMbedRxHandler()
TonyYI 0:3417ca0a36c0 60 {
TonyYI 0:3417ca0a36c0 61 //__disable_irq();//disable interupt when receiving data from XBEE_UART
TonyYI 0:3417ca0a36c0 62 uint8_t _x = IntelToMbed.getc();
TonyYI 0:3417ca0a36c0 63 com.putToBuffer(_x, 0); //function inside Communication::
TonyYI 0:3417ca0a36c0 64 //__enable_irq();
TonyYI 0:3417ca0a36c0 65 }
TonyYI 0:3417ca0a36c0 66 void MbedToArduinoRxHandler()
TonyYI 0:3417ca0a36c0 67 {
TonyYI 0:3417ca0a36c0 68 //__disable_irq();//disable interupt when receiving data from XBEE_UART
TonyYI 0:3417ca0a36c0 69 uint8_t _x = MbedToArduino.getc();
TonyYI 0:3417ca0a36c0 70 com.putToBuffer(_x, 1); //function inside Communication::
TonyYI 0:3417ca0a36c0 71 //__enable_irq();
TonyYI 0:3417ca0a36c0 72 }
terryLAI 4:a377ecb9364f 73 void CompassDataRxHandler()
TonyYI 3:4306d042af6f 74 {
terryLAI 4:a377ecb9364f 75 //__disable_irq();
TonyYI 3:4306d042af6f 76 uint8_t _x = CompassData.getc();
terryLAI 5:098e6a44bd94 77 com.putToBuffer(_x,2);
TonyYI 3:4306d042af6f 78 //__enable_irq();
TonyYI 3:4306d042af6f 79 }
TonyYI 0:3417ca0a36c0 80
terryLAI 4:a377ecb9364f 81
TonyYI 0:3417ca0a36c0 82 void LifterPulseHandler()
TonyYI 0:3417ca0a36c0 83 {
TonyYI 0:3417ca0a36c0 84 if(lifter.pulseCount < lifter.targetPulseCount)
TonyYI 0:3417ca0a36c0 85 {
TonyYI 0:3417ca0a36c0 86 lifter.pulseCount++;
TonyYI 0:3417ca0a36c0 87 if(lifter.getDir() == 0) //up
TonyYI 0:3417ca0a36c0 88 {
TonyYI 0:3417ca0a36c0 89 lifter.setLifterUp();
TonyYI 0:3417ca0a36c0 90 }
TonyYI 0:3417ca0a36c0 91 else if(lifter.getDir() == 2)//down
TonyYI 0:3417ca0a36c0 92 {
TonyYI 0:3417ca0a36c0 93 lifter.setLifterDown();
TonyYI 0:3417ca0a36c0 94 }
TonyYI 0:3417ca0a36c0 95 }
TonyYI 0:3417ca0a36c0 96 else
TonyYI 0:3417ca0a36c0 97 {
TonyYI 0:3417ca0a36c0 98 lifter.targetPulseCount = 0;
TonyYI 0:3417ca0a36c0 99 lifter.pulseCount = 0;
TonyYI 0:3417ca0a36c0 100 lifter.setLifterStop();
TonyYI 0:3417ca0a36c0 101 }
TonyYI 0:3417ca0a36c0 102 }
TonyYI 0:3417ca0a36c0 103
TonyYI 0:3417ca0a36c0 104 void init_PORT() //used in main() function
TonyYI 0:3417ca0a36c0 105 {
TonyYI 0:3417ca0a36c0 106 DEBUG.baud(9600);
terryLAI 4:a377ecb9364f 107 printf("&CompassData %p...\r\n",&CompassData);
TonyYI 0:3417ca0a36c0 108 IntelToMbed.baud(9600);
TonyYI 0:3417ca0a36c0 109 IntelToMbed.attach(&IntelToMbedRxHandler); //serial interrupt function
TonyYI 0:3417ca0a36c0 110
TonyYI 0:3417ca0a36c0 111 MbedToArduino.baud(9600);
TonyYI 0:3417ca0a36c0 112 MbedToArduino.attach(&MbedToArduinoRxHandler); //serial interrupt function
TonyYI 0:3417ca0a36c0 113
TonyYI 3:4306d042af6f 114 CompassData.baud(56000);
terryLAI 4:a377ecb9364f 115 CompassData.attach(&CompassDataRxHandler);
TonyYI 3:4306d042af6f 116
TonyYI 0:3417ca0a36c0 117 lifter_encoder_A.fall(&LifterPulseHandler); //interrupt
TonyYI 0:3417ca0a36c0 118
TonyYI 0:3417ca0a36c0 119 camera_platform_pwmRoll.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 120 camera_platform_pwmPitch.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 121 camera_platform_pwmYaw.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 122
TonyYI 0:3417ca0a36c0 123 camera_platform_pwmRoll.pulsewidth_us(ROLL_MID);
TonyYI 0:3417ca0a36c0 124 camera_platform_pwmPitch.pulsewidth_us(PITCH_MID);
TonyYI 0:3417ca0a36c0 125 camera_platform_pwmYaw.pulsewidth_us(YAW_MID);
TonyYI 0:3417ca0a36c0 126 }
TonyYI 0:3417ca0a36c0 127
TonyYI 0:3417ca0a36c0 128 #endif