Hawk Eye / Mbed 2 deprecated RcTransmitter

Dependencies:   mbed nRF24L01P

Committer:
spin7ion
Date:
Tue Aug 28 16:57:38 2018 +0000
Revision:
0:fb01b60e139b
Child:
1:a89ab6413920
Initial commit with telem

Who changed what in which revision?

UserRevisionLine numberNew contents of line
spin7ion 0:fb01b60e139b 1 #include "mbed.h"
spin7ion 0:fb01b60e139b 2 #include "nRF24L01P.h"
spin7ion 0:fb01b60e139b 3
spin7ion 0:fb01b60e139b 4 #define CHANNELS_NUMBER 12
spin7ion 0:fb01b60e139b 5 #define CMD_VALUE 65535
spin7ion 0:fb01b60e139b 6 #define CMD_GET_STATUS 1
spin7ion 0:fb01b60e139b 7
spin7ion 0:fb01b60e139b 8 nRF24L01P radio( PB_5, // MOSI
spin7ion 0:fb01b60e139b 9 PB_4, // MISO
spin7ion 0:fb01b60e139b 10 PB_3, // SCK
spin7ion 0:fb01b60e139b 11 PB_7, // CSN
spin7ion 0:fb01b60e139b 12 PB_6, // CE
spin7ion 0:fb01b60e139b 13 PB_8); // IRQ
spin7ion 0:fb01b60e139b 14
spin7ion 0:fb01b60e139b 15
spin7ion 0:fb01b60e139b 16 DigitalOut myled(PA_7);
spin7ion 0:fb01b60e139b 17
spin7ion 0:fb01b60e139b 18 AnalogIn CH1(PC_0);
spin7ion 0:fb01b60e139b 19 AnalogIn CH2(PC_1);
spin7ion 0:fb01b60e139b 20 AnalogIn CH3(PC_2);
spin7ion 0:fb01b60e139b 21 AnalogIn CH4(PC_3);
spin7ion 0:fb01b60e139b 22
spin7ion 0:fb01b60e139b 23 Serial pc(PA_2, PA_3); // tx, rx
spin7ion 0:fb01b60e139b 24
spin7ion 0:fb01b60e139b 25 uint16_t channels[CHANNELS_NUMBER];
spin7ion 0:fb01b60e139b 26 uint16_t buffer [CHANNELS_NUMBER];
spin7ion 0:fb01b60e139b 27
spin7ion 0:fb01b60e139b 28 void readChannels() {
spin7ion 0:fb01b60e139b 29 channels[0]=(uint16_t)(1024*CH1.read());
spin7ion 0:fb01b60e139b 30 channels[1]=(uint16_t)(1024*CH2.read());
spin7ion 0:fb01b60e139b 31 channels[2]=(uint16_t)(1024*CH3.read());
spin7ion 0:fb01b60e139b 32 channels[3]=(uint16_t)(1024*CH4.read());
spin7ion 0:fb01b60e139b 33 }
spin7ion 0:fb01b60e139b 34
spin7ion 0:fb01b60e139b 35 void zeroBuffer(){
spin7ion 0:fb01b60e139b 36 memset(buffer, 0, sizeof(buffer));
spin7ion 0:fb01b60e139b 37 }
spin7ion 0:fb01b60e139b 38
spin7ion 0:fb01b60e139b 39 void askFor(uint16_t query) {
spin7ion 0:fb01b60e139b 40 zeroBuffer();
spin7ion 0:fb01b60e139b 41 buffer[0] = CMD_VALUE;
spin7ion 0:fb01b60e139b 42 buffer[1] = query;
spin7ion 0:fb01b60e139b 43 radio.setTransmitMode();
spin7ion 0:fb01b60e139b 44 int bytesWritten=radio.write( NRF24L01P_PIPE_P1, (char*)buffer, sizeof(buffer) );
spin7ion 0:fb01b60e139b 45
spin7ion 0:fb01b60e139b 46 if (bytesWritten<sizeof(buffer)) {
spin7ion 0:fb01b60e139b 47 pc.printf("Cmd transmit error");
spin7ion 0:fb01b60e139b 48 } else {
spin7ion 0:fb01b60e139b 49 pc.printf("Sent %d bytes\r\n",bytesWritten);
spin7ion 0:fb01b60e139b 50 }
spin7ion 0:fb01b60e139b 51
spin7ion 0:fb01b60e139b 52
spin7ion 0:fb01b60e139b 53 }
spin7ion 0:fb01b60e139b 54
spin7ion 0:fb01b60e139b 55 int main() {
spin7ion 0:fb01b60e139b 56
spin7ion 0:fb01b60e139b 57 pc.baud(115200);
spin7ion 0:fb01b60e139b 58 pc.format();
spin7ion 0:fb01b60e139b 59 pc.printf("Hello world\r\n");
spin7ion 0:fb01b60e139b 60
spin7ion 0:fb01b60e139b 61 radio.setTxAddress(0xDEADBEEF0F);
spin7ion 0:fb01b60e139b 62 radio.setRxAddress(0xDEADC0DE0F);
spin7ion 0:fb01b60e139b 63 radio.setRfFrequency(2405);
spin7ion 0:fb01b60e139b 64 radio.setRfOutputPower(NRF24L01P_TX_PWR_MINUS_18_DB);
spin7ion 0:fb01b60e139b 65 radio.powerUp();
spin7ion 0:fb01b60e139b 66 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
spin7ion 0:fb01b60e139b 67 pc.printf( "nRF24L01+ Channel : %d \r\n", (radio.getRfFrequency() - NRF24L01P_MIN_RF_FREQUENCY ) & 0x7F );
spin7ion 0:fb01b60e139b 68 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
spin7ion 0:fb01b60e139b 69 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
spin7ion 0:fb01b60e139b 70 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
spin7ion 0:fb01b60e139b 71 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", radio.getRxAddress() );
spin7ion 0:fb01b60e139b 72 radio.setTransmitMode();
spin7ion 0:fb01b60e139b 73 radio.setTransferSize( CHANNELS_NUMBER*sizeof(uint16_t) );
spin7ion 0:fb01b60e139b 74 radio.enable();
spin7ion 0:fb01b60e139b 75
spin7ion 0:fb01b60e139b 76 //CH1.read()
spin7ion 0:fb01b60e139b 77 //CH2.read()
spin7ion 0:fb01b60e139b 78 //CH3.read()
spin7ion 0:fb01b60e139b 79 //CH4.read()
spin7ion 0:fb01b60e139b 80
spin7ion 0:fb01b60e139b 81 while(1) {
spin7ion 0:fb01b60e139b 82 readChannels();
spin7ion 0:fb01b60e139b 83 radio.setTransmitMode();
spin7ion 0:fb01b60e139b 84 //pc.printf("Sent: %d bytes",radio.write( NRF24L01P_PIPE_P1, test, 1 ));
spin7ion 0:fb01b60e139b 85 int bytesWritten=radio.write( NRF24L01P_PIPE_P0, (char*)channels, 2*CHANNELS_NUMBER );
spin7ion 0:fb01b60e139b 86
spin7ion 0:fb01b60e139b 87 if (bytesWritten<2*CHANNELS_NUMBER){
spin7ion 0:fb01b60e139b 88 pc.printf("Transmit error");
spin7ion 0:fb01b60e139b 89 }
spin7ion 0:fb01b60e139b 90 askFor(CMD_GET_STATUS);
spin7ion 0:fb01b60e139b 91 //wait(0.1);
spin7ion 0:fb01b60e139b 92 radio.setReceiveMode();
spin7ion 0:fb01b60e139b 93 //wait(0.1);
spin7ion 0:fb01b60e139b 94 while( !radio.readable() );
spin7ion 0:fb01b60e139b 95 {
spin7ion 0:fb01b60e139b 96 pc.printf("Availiable %d\r\n",radio.readable());
spin7ion 0:fb01b60e139b 97 zeroBuffer();
spin7ion 0:fb01b60e139b 98 int rxDataCnt = radio.read( NRF24L01P_PIPE_P0, (char*)buffer, sizeof( buffer ) );
spin7ion 0:fb01b60e139b 99 pc.printf("Telem %s\r\n",(char*)buffer);
spin7ion 0:fb01b60e139b 100 }
spin7ion 0:fb01b60e139b 101 //wait(0.5);
spin7ion 0:fb01b60e139b 102
spin7ion 0:fb01b60e139b 103 /*myled = 1;
spin7ion 0:fb01b60e139b 104 wait(0.01);
spin7ion 0:fb01b60e139b 105 myled = 0;
spin7ion 0:fb01b60e139b 106 wait(0.01);*/
spin7ion 0:fb01b60e139b 107 }
spin7ion 0:fb01b60e139b 108 }