Remote Ctrl

Dependencies:   mbed nRF24L01P

Committer:
Ucial
Date:
Mon Dec 09 06:23:37 2019 +0000
Revision:
0:61c20540a36f
Remote Control of Green

Who changed what in which revision?

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