Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:fb01b60e139b, 2018-08-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |