init

Dependencies:   mbed nRF24L01P

Committer:
ViriJay
Date:
Fri Jan 18 13:24:59 2019 +0000
Revision:
3:673862dea889
Parent:
2:8dc7ee41e9a7
timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ViriJay 0:7c3fd90d5bd9 1 #include "mbed.h"
ViriJay 0:7c3fd90d5bd9 2 #include "nRF24L01P.h"
ViriJay 2:8dc7ee41e9a7 3 #include <chrono>
ViriJay 0:7c3fd90d5bd9 4
ViriJay 1:053b63d70298 5 //Init Pins
ViriJay 0:7c3fd90d5bd9 6 SPI spi(D11, D12, D13);
ViriJay 0:7c3fd90d5bd9 7 DigitalOut cs(D10, 1);
ViriJay 0:7c3fd90d5bd9 8 nRF24L01P my_nrf24l01p(D11, D12, D13, D8, D9, D7); // mosi, miso, sck, csn, ce, irq
ViriJay 0:7c3fd90d5bd9 9
ViriJay 0:7c3fd90d5bd9 10 #define TRANSFER_SIZE 2
ViriJay 1:053b63d70298 11 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
ViriJay 1:053b63d70298 12 int txDataCnt = 0;
ViriJay 1:053b63d70298 13 int rxDataCnt = 0;
ViriJay 1:053b63d70298 14
ViriJay 3:673862dea889 15 bool transmitter = true;
ViriJay 3:673862dea889 16
ViriJay 1:053b63d70298 17 bool ackknowledged = true;
ViriJay 0:7c3fd90d5bd9 18
ViriJay 1:053b63d70298 19 void init() {
ViriJay 1:053b63d70298 20
ViriJay 1:053b63d70298 21 // Display the (default) setup of the nRF24L01+ chip
ViriJay 1:053b63d70298 22 printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
ViriJay 1:053b63d70298 23 printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
ViriJay 1:053b63d70298 24 printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
ViriJay 1:053b63d70298 25 printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
ViriJay 1:053b63d70298 26 printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
ViriJay 1:053b63d70298 27
ViriJay 1:053b63d70298 28 printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
ViriJay 1:053b63d70298 29
ViriJay 1:053b63d70298 30 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
ViriJay 1:053b63d70298 31
ViriJay 1:053b63d70298 32 my_nrf24l01p.setReceiveMode();
ViriJay 1:053b63d70298 33 my_nrf24l01p.enable();
ViriJay 1:053b63d70298 34
ViriJay 1:053b63d70298 35 setLed(led);
ViriJay 0:7c3fd90d5bd9 36 }
ViriJay 0:7c3fd90d5bd9 37
ViriJay 1:053b63d70298 38
ViriJay 1:053b63d70298 39 void readNRF() {
ViriJay 1:053b63d70298 40 // If we've received anything in the nRF24L01+...
ViriJay 1:053b63d70298 41 if ( my_nrf24l01p.readable() ) {
ViriJay 1:053b63d70298 42
ViriJay 1:053b63d70298 43 // ...read the data into the receive buffer
ViriJay 1:053b63d70298 44 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
ViriJay 1:053b63d70298 45
ViriJay 1:053b63d70298 46 if (rxData[0] == 0) {
ViriJay 1:053b63d70298 47 printf("Received request for %d\n\r", rxData[1]);
ViriJay 1:053b63d70298 48 txData[0] = 1;
ViriJay 1:053b63d70298 49 txData[1] = rxData[1];
ViriJay 1:053b63d70298 50 led = rxData[1];
ViriJay 1:053b63d70298 51 setLed(led);
ViriJay 1:053b63d70298 52 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE );
ViriJay 1:053b63d70298 53 printf("Sent ack for %d\n\r", rxData[1]);
ViriJay 1:053b63d70298 54 }
ViriJay 1:053b63d70298 55 if (rxData[0] == 1) {
ViriJay 1:053b63d70298 56 printf("Received acknowledgment for %d\n\r", rxData[1]);
ViriJay 1:053b63d70298 57 ackknowledged = true;
ViriJay 1:053b63d70298 58 setLed(rxData[1]);
ViriJay 1:053b63d70298 59 }
ViriJay 1:053b63d70298 60 }
ViriJay 1:053b63d70298 61 }
ViriJay 1:053b63d70298 62
ViriJay 1:053b63d70298 63 void sendNumber(int number) {
ViriJay 1:053b63d70298 64
ViriJay 1:053b63d70298 65 // ...add it to the transmit buffer
ViriJay 1:053b63d70298 66 txData[0] = 0;
ViriJay 1:053b63d70298 67 txData[1] = led;
ViriJay 1:053b63d70298 68
ViriJay 1:053b63d70298 69 ackknowledged = false;
ViriJay 1:053b63d70298 70
ViriJay 1:053b63d70298 71 while (!ackknowledged) {
ViriJay 1:053b63d70298 72 printf("Sending request for led: %d\n\r", led);
ViriJay 1:053b63d70298 73 // Send the transmitbuffer via the nRF24L01+
ViriJay 1:053b63d70298 74 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE );
ViriJay 1:053b63d70298 75 readNRF();
ViriJay 1:053b63d70298 76 wait(0.5);
ViriJay 1:053b63d70298 77 }
ViriJay 1:053b63d70298 78 }
ViriJay 1:053b63d70298 79
ViriJay 2:8dc7ee41e9a7 80 void startTest() {
ViriJay 3:673862dea889 81 std::chrono::time_point<std::chrono::system_clock> start, end;
ViriJay 2:8dc7ee41e9a7 82 // start timer
ViriJay 3:673862dea889 83 start = std::chrono::system_clock::now();
ViriJay 2:8dc7ee41e9a7 84 // loop { send getal
ViriJay 2:8dc7ee41e9a7 85 // wacht op ack }
ViriJay 2:8dc7ee41e9a7 86 // send FIN
ViriJay 2:8dc7ee41e9a7 87 // wacht op FIN ACK
ViriJay 2:8dc7ee41e9a7 88 // stop timer
ViriJay 3:673862dea889 89 end = std::chrono::system_clock::now();
ViriJay 3:673862dea889 90 std::chrono::duration<double> duration = end - start;
ViriJay 3:673862dea889 91 std::cout << "Test duration: " << duration.count() << " seconds\n";
ViriJay 1:053b63d70298 92 }
ViriJay 1:053b63d70298 93
ViriJay 1:053b63d70298 94 int main() {
ViriJay 1:053b63d70298 95 init();
ViriJay 3:673862dea889 96
ViriJay 3:673862dea889 97 if (transmitter) {
ViriJay 3:673862dea889 98 startTest();
ViriJay 3:673862dea889 99 } else {
ViriJay 3:673862dea889 100 //listen ofzo
ViriJay 3:673862dea889 101 }
ViriJay 1:053b63d70298 102
ViriJay 0:7c3fd90d5bd9 103 while (true) {
ViriJay 1:053b63d70298 104 readButton();
ViriJay 1:053b63d70298 105 readNRF();
ViriJay 1:053b63d70298 106 wait(0.1);
ViriJay 0:7c3fd90d5bd9 107 }
ViriJay 0:7c3fd90d5bd9 108 }