Songw Jiang
/
RC_Green
Remote Ctrl
main.cpp@0:61c20540a36f, 2019-12-09 (annotated)
- Committer:
- Ucial
- Date:
- Mon Dec 09 06:23:37 2019 +0000
- Revision:
- 0:61c20540a36f
Remote Control of Green
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ucial | 0:61c20540a36f | 1 | #include "mbed.h" |
Ucial | 0:61c20540a36f | 2 | #include "nRF24L01P.h" |
Ucial | 0:61c20540a36f | 3 | |
Ucial | 0:61c20540a36f | 4 | uint8_t txdata[32] ; |
Ucial | 0:61c20540a36f | 5 | float L_X; |
Ucial | 0:61c20540a36f | 6 | float L_Y; |
Ucial | 0:61c20540a36f | 7 | float R_X; |
Ucial | 0:61c20540a36f | 8 | float R_Y; |
Ucial | 0:61c20540a36f | 9 | int Yaw; |
Ucial | 0:61c20540a36f | 10 | int Roll; |
Ucial | 0:61c20540a36f | 11 | int Pitch; |
Ucial | 0:61c20540a36f | 12 | int Power; |
Ucial | 0:61c20540a36f | 13 | int ii; |
Ucial | 0:61c20540a36f | 14 | int SendCount; |
Ucial | 0:61c20540a36f | 15 | |
Ucial | 0:61c20540a36f | 16 | Ticker tick; |
Ucial | 0:61c20540a36f | 17 | nRF24L01P nrf24_PB_15(PB_15,PB_14,PB_13,PB_6,PB_5,PB_7); |
Ucial | 0:61c20540a36f | 18 | AnalogIn myIOPA_0(PA_0); |
Ucial | 0:61c20540a36f | 19 | AnalogIn myIOPA_1(PA_1); |
Ucial | 0:61c20540a36f | 20 | AnalogIn myIOPB_0(PB_0); |
Ucial | 0:61c20540a36f | 21 | AnalogIn myIOPB_1(PB_1); |
Ucial | 0:61c20540a36f | 22 | |
Ucial | 0:61c20540a36f | 23 | uint8_t Get_Checksum(uint8_t mydata[]) |
Ucial | 0:61c20540a36f | 24 | { |
Ucial | 0:61c20540a36f | 25 | uint8_t i; |
Ucial | 0:61c20540a36f | 26 | uint8_t checksum=0; |
Ucial | 0:61c20540a36f | 27 | uint8_t length = mydata[3]; |
Ucial | 0:61c20540a36f | 28 | |
Ucial | 0:61c20540a36f | 29 | for(i=0;i<length+2;i++) |
Ucial | 0:61c20540a36f | 30 | checksum ^= (mydata[3+i]&0xFF); |
Ucial | 0:61c20540a36f | 31 | return checksum; |
Ucial | 0:61c20540a36f | 32 | } |
Ucial | 0:61c20540a36f | 33 | |
Ucial | 0:61c20540a36f | 34 | void tickhandle() |
Ucial | 0:61c20540a36f | 35 | { |
Ucial | 0:61c20540a36f | 36 | //500Hz task |
Ucial | 0:61c20540a36f | 37 | SendCount = SendCount + 1; |
Ucial | 0:61c20540a36f | 38 | nrf24_PB_15.NRF24L01_IRQ(); |
Ucial | 0:61c20540a36f | 39 | if(SendCount%5==0) |
Ucial | 0:61c20540a36f | 40 | { |
Ucial | 0:61c20540a36f | 41 | //100Hz task |
Ucial | 0:61c20540a36f | 42 | nrf24_PB_15.NRF_Send_TX(txdata,32); |
Ucial | 0:61c20540a36f | 43 | } |
Ucial | 0:61c20540a36f | 44 | } |
Ucial | 0:61c20540a36f | 45 | |
Ucial | 0:61c20540a36f | 46 | int main() |
Ucial | 0:61c20540a36f | 47 | { |
Ucial | 0:61c20540a36f | 48 | |
Ucial | 0:61c20540a36f | 49 | for(ii = 1; ii <= 32; ii++) |
Ucial | 0:61c20540a36f | 50 | txdata[(ii - 1)] = 0; |
Ucial | 0:61c20540a36f | 51 | txdata[0] = 36; |
Ucial | 0:61c20540a36f | 52 | txdata[1] = 77; |
Ucial | 0:61c20540a36f | 53 | txdata[2] = 60; |
Ucial | 0:61c20540a36f | 54 | txdata[3] = 16; |
Ucial | 0:61c20540a36f | 55 | txdata[4] = 105; |
Ucial | 0:61c20540a36f | 56 | txdata[13]=220; |
Ucial | 0:61c20540a36f | 57 | txdata[14]=5; |
Ucial | 0:61c20540a36f | 58 | txdata[15]=220; |
Ucial | 0:61c20540a36f | 59 | txdata[16]=5; |
Ucial | 0:61c20540a36f | 60 | txdata[17]=220; |
Ucial | 0:61c20540a36f | 61 | txdata[18]=5; |
Ucial | 0:61c20540a36f | 62 | txdata[19]=0; |
Ucial | 0:61c20540a36f | 63 | txdata[20]=0; |
Ucial | 0:61c20540a36f | 64 | |
Ucial | 0:61c20540a36f | 65 | SendCount = 0; |
Ucial | 0:61c20540a36f | 66 | L_X=0.0; |
Ucial | 0:61c20540a36f | 67 | L_Y=0.0; |
Ucial | 0:61c20540a36f | 68 | R_X=0.0; |
Ucial | 0:61c20540a36f | 69 | R_Y=0.0; |
Ucial | 0:61c20540a36f | 70 | |
Ucial | 0:61c20540a36f | 71 | tick.attach(&tickhandle,0.002); |
Ucial | 0:61c20540a36f | 72 | while (true) |
Ucial | 0:61c20540a36f | 73 | { |
Ucial | 0:61c20540a36f | 74 | //Paste your code here(Ctrl+V) |
Ucial | 0:61c20540a36f | 75 | L_X = myIOPA_0.read(); |
Ucial | 0:61c20540a36f | 76 | L_Y = myIOPA_1.read(); |
Ucial | 0:61c20540a36f | 77 | R_X = myIOPB_0.read(); |
Ucial | 0:61c20540a36f | 78 | R_Y = myIOPB_1.read(); |
Ucial | 0:61c20540a36f | 79 | |
Ucial | 0:61c20540a36f | 80 | Power = 2000-1000*L_Y; |
Ucial | 0:61c20540a36f | 81 | Yaw = 2000-1000*L_X; |
Ucial | 0:61c20540a36f | 82 | Pitch = 2000-1000*R_Y; |
Ucial | 0:61c20540a36f | 83 | Roll = 2000-1000*R_X; |
Ucial | 0:61c20540a36f | 84 | |
Ucial | 0:61c20540a36f | 85 | txdata[5] = Roll % 256; |
Ucial | 0:61c20540a36f | 86 | txdata[6] = Roll / 256; |
Ucial | 0:61c20540a36f | 87 | txdata[7] = Pitch % 256; |
Ucial | 0:61c20540a36f | 88 | txdata[8] = Pitch / 256; |
Ucial | 0:61c20540a36f | 89 | txdata[9] = Yaw % 256; |
Ucial | 0:61c20540a36f | 90 | txdata[10] = Yaw / 256; |
Ucial | 0:61c20540a36f | 91 | txdata[11] = Power % 256; |
Ucial | 0:61c20540a36f | 92 | txdata[12] = Power / 256; |
Ucial | 0:61c20540a36f | 93 | |
Ucial | 0:61c20540a36f | 94 | txdata[21] = Get_Checksum(txdata); |
Ucial | 0:61c20540a36f | 95 | if(SendCount>500) |
Ucial | 0:61c20540a36f | 96 | { |
Ucial | 0:61c20540a36f | 97 | SendCount=0; |
Ucial | 0:61c20540a36f | 98 | } |
Ucial | 0:61c20540a36f | 99 | } |
Ucial | 0:61c20540a36f | 100 | } |