terry LAI / Mbed 2 deprecated ESDC2014-pwm

Dependencies:   mbed

Fork of ESDC2014 by terry LAI

Committer:
terryLAI
Date:
Fri Jul 04 13:05:15 2014 +0000
Revision:
4:a377ecb9364f
Parent:
3:4306d042af6f
Child:
5:098e6a44bd94
test;

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"
terryLAI 4:a377ecb9364f 30 #include "compass.h"
TonyYI 0:3417ca0a36c0 31
TonyYI 0:3417ca0a36c0 32 #ifndef _PORT_H
TonyYI 0:3417ca0a36c0 33 #define _PORT_H
TonyYI 0:3417ca0a36c0 34
TonyYI 0:3417ca0a36c0 35 MyDigitalOut IntelToMbed_LED(LED1); //uart port LED between Intel Board and Mbed
TonyYI 0:3417ca0a36c0 36 MyDigitalOut MbedToArduino_LED(LED2); //uart port LED between Mbed and Arduino
TonyYI 0:3417ca0a36c0 37 MySerial DEBUG(USBTX, USBRX); //usb serial port between computer 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);
terryLAI 4:a377ecb9364f 52
terryLAI 4:a377ecb9364f 53
terryLAI 4:a377ecb9364f 54 Compass compass(CompassData);
TonyYI 0:3417ca0a36c0 55
TonyYI 3:4306d042af6f 56 Communication com(&DEBUG, &IntelToMbed, &MbedToArduino, &compass);
TonyYI 0:3417ca0a36c0 57 Lifter lifter(&lifter_enable, &lifter_pwmUp, &lifter_pwmDown, &lifter_encoder_A, &lifter_encoder_B);
TonyYI 0:3417ca0a36c0 58 Camera_platform camera_platform(&camera_platform_pwmRoll, &camera_platform_pwmPitch, &camera_platform_pwmYaw);
TonyYI 0:3417ca0a36c0 59
TonyYI 0:3417ca0a36c0 60 void IntelToMbedRxHandler()
TonyYI 0:3417ca0a36c0 61 {
TonyYI 0:3417ca0a36c0 62 //__disable_irq();//disable interupt when receiving data from XBEE_UART
TonyYI 0:3417ca0a36c0 63 uint8_t _x = IntelToMbed.getc();
TonyYI 0:3417ca0a36c0 64 com.putToBuffer(_x, 0); //function inside Communication::
TonyYI 0:3417ca0a36c0 65 //__enable_irq();
TonyYI 0:3417ca0a36c0 66 }
TonyYI 0:3417ca0a36c0 67 void MbedToArduinoRxHandler()
TonyYI 0:3417ca0a36c0 68 {
TonyYI 0:3417ca0a36c0 69 //__disable_irq();//disable interupt when receiving data from XBEE_UART
TonyYI 0:3417ca0a36c0 70 uint8_t _x = MbedToArduino.getc();
TonyYI 0:3417ca0a36c0 71 com.putToBuffer(_x, 1); //function inside Communication::
TonyYI 0:3417ca0a36c0 72 //__enable_irq();
TonyYI 0:3417ca0a36c0 73 }
terryLAI 4:a377ecb9364f 74 void CompassDataRxHandler()
TonyYI 3:4306d042af6f 75 {
terryLAI 4:a377ecb9364f 76 //__disable_irq();
TonyYI 3:4306d042af6f 77 uint8_t _x = CompassData.getc();
terryLAI 4:a377ecb9364f 78 compass.putToBuffer(_x);
TonyYI 3:4306d042af6f 79 //__enable_irq();
TonyYI 3:4306d042af6f 80 }
TonyYI 0:3417ca0a36c0 81
terryLAI 4:a377ecb9364f 82
TonyYI 0:3417ca0a36c0 83 void LifterPulseHandler()
TonyYI 0:3417ca0a36c0 84 {
TonyYI 0:3417ca0a36c0 85 if(lifter.pulseCount < lifter.targetPulseCount)
TonyYI 0:3417ca0a36c0 86 {
TonyYI 0:3417ca0a36c0 87 lifter.pulseCount++;
TonyYI 0:3417ca0a36c0 88 if(lifter.getDir() == 0) //up
TonyYI 0:3417ca0a36c0 89 {
TonyYI 0:3417ca0a36c0 90 lifter.setLifterUp();
TonyYI 0:3417ca0a36c0 91 }
TonyYI 0:3417ca0a36c0 92 else if(lifter.getDir() == 2)//down
TonyYI 0:3417ca0a36c0 93 {
TonyYI 0:3417ca0a36c0 94 lifter.setLifterDown();
TonyYI 0:3417ca0a36c0 95 }
TonyYI 0:3417ca0a36c0 96 }
TonyYI 0:3417ca0a36c0 97 else
TonyYI 0:3417ca0a36c0 98 {
TonyYI 0:3417ca0a36c0 99 lifter.targetPulseCount = 0;
TonyYI 0:3417ca0a36c0 100 lifter.pulseCount = 0;
TonyYI 0:3417ca0a36c0 101 lifter.setLifterStop();
TonyYI 0:3417ca0a36c0 102 }
TonyYI 0:3417ca0a36c0 103 }
TonyYI 0:3417ca0a36c0 104
TonyYI 0:3417ca0a36c0 105 void init_PORT() //used in main() function
TonyYI 0:3417ca0a36c0 106 {
TonyYI 0:3417ca0a36c0 107 DEBUG.baud(9600);
terryLAI 4:a377ecb9364f 108 printf("&CompassData %p...\r\n",&CompassData);
TonyYI 0:3417ca0a36c0 109 IntelToMbed.baud(9600);
TonyYI 0:3417ca0a36c0 110 IntelToMbed.attach(&IntelToMbedRxHandler); //serial interrupt function
TonyYI 0:3417ca0a36c0 111
TonyYI 0:3417ca0a36c0 112 MbedToArduino.baud(9600);
TonyYI 0:3417ca0a36c0 113 MbedToArduino.attach(&MbedToArduinoRxHandler); //serial interrupt function
TonyYI 0:3417ca0a36c0 114
TonyYI 3:4306d042af6f 115 CompassData.baud(56000);
terryLAI 4:a377ecb9364f 116 CompassData.attach(&CompassDataRxHandler);
TonyYI 3:4306d042af6f 117
TonyYI 0:3417ca0a36c0 118 lifter_encoder_A.fall(&LifterPulseHandler); //interrupt
TonyYI 0:3417ca0a36c0 119
TonyYI 0:3417ca0a36c0 120 camera_platform_pwmRoll.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 121 camera_platform_pwmPitch.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 122 camera_platform_pwmYaw.period_ms(20); //20ms periodic, 1000us to 2000us
TonyYI 0:3417ca0a36c0 123
TonyYI 0:3417ca0a36c0 124 camera_platform_pwmRoll.pulsewidth_us(ROLL_MID);
TonyYI 0:3417ca0a36c0 125 camera_platform_pwmPitch.pulsewidth_us(PITCH_MID);
TonyYI 0:3417ca0a36c0 126 camera_platform_pwmYaw.pulsewidth_us(YAW_MID);
TonyYI 0:3417ca0a36c0 127 }
TonyYI 0:3417ca0a36c0 128
TonyYI 0:3417ca0a36c0 129 #endif