Hawk Eye
/
ROVReceiver
Receiver for rc ROV
main.cpp
- Committer:
- spin7ion
- Date:
- 2018-08-28
- Revision:
- 0:a8a417d50cc7
- Child:
- 1:e11cc38ef502
File content as of revision 0:a8a417d50cc7:
#include "mbed.h" #include "nRF24L01P.h" #define CHANNELS_NUMBER 12 #define CMD_VALUE 65535 #define CMD_GET_STATUS 1 //DigitalOut myled(LED1); #define SERVO_MAX 2500 #define SERVO_MIN 800 #define SERVO_CENTER SERVO_MAX-SERVO_MIN Serial pc(USBTX, USBRX); // tx, rx nRF24L01P radio(D11, D12, D13, D10, D9, D8); // mosi, miso, sck, csn, ce, irq uint16_t channels[CHANNELS_NUMBER]; uint16_t buffer [CHANNELS_NUMBER]; //PwmOut v_servo(PTC2); void zeroBuffer(){ memset(buffer, 0, sizeof(buffer)); } int main() { //v_servo.period_us(20000); // servo requires a 20ms period //v_servo.pulsewidth_us(SERVO_CENTER); //v_servo.pulsewidth_us(pulse); // servo position determined by a pulsewidth between 1-2ms radio.powerUp(); pc.baud(115200); pc.printf("We all live in a yellow submarine!\r\n"); radio.setRxAddress(0xDEADBEEF0F); radio.setTxAddress(0xDEADC0DE0F); radio.setRfFrequency(2405); radio.powerUp(); pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() ); pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() ); pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() ); pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() ); pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", radio.getRxAddress() ); radio.setTransferSize( CHANNELS_NUMBER*sizeof(uint16_t) ); radio.setReceiveMode(); radio.enable(); pc.printf("Greetings, capitain!\r\n"); while (1) { while( !radio.readable() ); { int rxDataCnt = radio.read( NRF24L01P_PIPE_P0, (char*)buffer, sizeof( buffer ) ); if (buffer[0] == CMD_VALUE) { pc.printf("Command: %d\r\n", buffer[1]); switch(buffer[1]){ case CMD_GET_STATUS: zeroBuffer(); strcpy((char*)buffer,"I'm alive"); radio.setTransmitMode(); //wait(0.1); int bytesWritten = radio.write( NRF24L01P_PIPE_P0, (char*)buffer, sizeof( buffer ) ); if (bytesWritten<2*CHANNELS_NUMBER){ pc.printf("Transmit error\r\n"); } else { pc.printf("Sent telemetry: %s\r\n",(char*)buffer); } radio.setReceiveMode(); //wait(0.1); break; } } else { for(int i=0; i<CHANNELS_NUMBER; i++){ channels[i] = buffer[i]; } pc.printf("received channels: %d %d %d %d\n\r", channels[0],channels[1],channels[2],channels[3]); } } } }