FN
Dependencies: mbed RF24Network RF24
main.cpp@7:77a1606d3b7e, 2019-04-08 (annotated)
- Committer:
- belkaous
- Date:
- Mon Apr 08 12:52:19 2019 +0000
- Revision:
- 7:77a1606d3b7e
- Parent:
- 6:4840dd0ef133
FN
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akashvibhute | 0:3982c0e9eda1 | 1 | #include "mbed.h" |
akashvibhute | 0:3982c0e9eda1 | 2 | #include <RF24Network.h> |
akashvibhute | 2:608cf8c5c55e | 3 | #include <RF24.h> |
guillaume6544 | 6:4840dd0ef133 | 4 | |
akashvibhute | 0:3982c0e9eda1 | 5 | Serial pc(USBTX, USBRX); |
guillaume6544 | 6:4840dd0ef133 | 6 | InterruptIn button(D4); |
guillaume6544 | 6:4840dd0ef133 | 7 | |
guillaume6544 | 5:ddab03ae19aa | 8 | PwmOut mypwm(D5); |
guillaume6544 | 6:4840dd0ef133 | 9 | |
wesleytiem | 4:93d0253a8a32 | 10 | RF24 radio(SPI_MOSI, SPI_MISO, SPI_SCK, D9, SPI_CS ); |
belkaous | 7:77a1606d3b7e | 11 | |
belkaous | 7:77a1606d3b7e | 12 | DigitalIn A(D8); |
belkaous | 7:77a1606d3b7e | 13 | DigitalIn B(D7); |
belkaous | 7:77a1606d3b7e | 14 | DigitalIn C(D6); |
belkaous | 7:77a1606d3b7e | 15 | |
belkaous | 7:77a1606d3b7e | 16 | |
akashvibhute | 0:3982c0e9eda1 | 17 | // Network uses that radio |
akashvibhute | 0:3982c0e9eda1 | 18 | RF24Network network(radio); |
guillaume6544 | 6:4840dd0ef133 | 19 | |
belkaous | 7:77a1606d3b7e | 20 | |
akashvibhute | 0:3982c0e9eda1 | 21 | // Address of our node |
belkaous | 7:77a1606d3b7e | 22 | uint16_t this_node; |
belkaous | 7:77a1606d3b7e | 23 | |
akashvibhute | 0:3982c0e9eda1 | 24 | // Address of the other node |
guillaume6544 | 6:4840dd0ef133 | 25 | const uint16_t other_node = 00; |
guillaume6544 | 6:4840dd0ef133 | 26 | |
akashvibhute | 0:3982c0e9eda1 | 27 | // When did we last send? |
akashvibhute | 0:3982c0e9eda1 | 28 | unsigned long last_sent; |
guillaume6544 | 6:4840dd0ef133 | 29 | |
akashvibhute | 0:3982c0e9eda1 | 30 | // How many have we sent already |
akashvibhute | 0:3982c0e9eda1 | 31 | unsigned long packets_sent; |
guillaume6544 | 6:4840dd0ef133 | 32 | |
akashvibhute | 0:3982c0e9eda1 | 33 | // Structure of our payload |
akashvibhute | 2:608cf8c5c55e | 34 | struct payload_t |
akashvibhute | 0:3982c0e9eda1 | 35 | { |
akashvibhute | 2:608cf8c5c55e | 36 | unsigned long ms; |
akashvibhute | 2:608cf8c5c55e | 37 | unsigned long counter; |
akashvibhute | 0:3982c0e9eda1 | 38 | }; |
guillaume6544 | 6:4840dd0ef133 | 39 | |
guillaume6544 | 5:ddab03ae19aa | 40 | //interruption du NRF24 |
guillaume6544 | 5:ddab03ae19aa | 41 | void pressed() |
guillaume6544 | 5:ddab03ae19aa | 42 | { |
guillaume6544 | 5:ddab03ae19aa | 43 | mypwm.write(0.5); |
guillaume6544 | 5:ddab03ae19aa | 44 | } |
guillaume6544 | 6:4840dd0ef133 | 45 | |
akashvibhute | 2:608cf8c5c55e | 46 | int main() |
akashvibhute | 0:3982c0e9eda1 | 47 | { |
guillaume6544 | 5:ddab03ae19aa | 48 | button.enable_irq(); |
guillaume6544 | 5:ddab03ae19aa | 49 | button.rise(&pressed); |
guillaume6544 | 6:4840dd0ef133 | 50 | mypwm.period_us(40); |
guillaume6544 | 6:4840dd0ef133 | 51 | mypwm.pulsewidth_us(20); |
guillaume6544 | 5:ddab03ae19aa | 52 | mypwm.write(0.0); |
guillaume6544 | 5:ddab03ae19aa | 53 | |
belkaous | 7:77a1606d3b7e | 54 | if((!A.read()) && (!B.read()) && (C.read()) ) this_node = 01; |
belkaous | 7:77a1606d3b7e | 55 | else if(!(A.read()) && (B.read()) && !(C.read()) ) this_node = 02; |
belkaous | 7:77a1606d3b7e | 56 | else this_node = 03; |
belkaous | 7:77a1606d3b7e | 57 | |
wesleytiem | 4:93d0253a8a32 | 58 | pc.baud(115200); |
guillaume6544 | 6:4840dd0ef133 | 59 | wait_ms(500); |
guillaume6544 | 6:4840dd0ef133 | 60 | |
belkaous | 7:77a1606d3b7e | 61 | pc.printf("mBed RF24Network node\r\n"); |
akashvibhute | 0:3982c0e9eda1 | 62 | radio.begin(); |
akashvibhute | 0:3982c0e9eda1 | 63 | network.begin(/*channel*/ 90, /*node address*/ this_node); |
guillaume6544 | 6:4840dd0ef133 | 64 | wait_ms(1000); |
guillaume6544 | 6:4840dd0ef133 | 65 | |
akashvibhute | 2:608cf8c5c55e | 66 | while(1) |
akashvibhute | 0:3982c0e9eda1 | 67 | { |
akashvibhute | 0:3982c0e9eda1 | 68 | // Pump the network regularly |
akashvibhute | 0:3982c0e9eda1 | 69 | network.update(); |
wesleytiem | 4:93d0253a8a32 | 70 | |
akashvibhute | 0:3982c0e9eda1 | 71 | // Is there anything ready for us? |
akashvibhute | 2:608cf8c5c55e | 72 | while ( network.available() ) |
akashvibhute | 0:3982c0e9eda1 | 73 | { |
akashvibhute | 0:3982c0e9eda1 | 74 | // If so, grab it and print it out |
akashvibhute | 0:3982c0e9eda1 | 75 | RF24NetworkHeader header_rx; |
akashvibhute | 0:3982c0e9eda1 | 76 | payload_t payload_rx; |
akashvibhute | 0:3982c0e9eda1 | 77 | network.read(header_rx,&payload_rx,sizeof(payload_rx)); |
wesleytiem | 4:93d0253a8a32 | 78 | pc.printf("Received packet # %d at %d ms\r\n",payload_rx.counter,payload_rx.ms); |
guillaume6544 | 5:ddab03ae19aa | 79 | |
guillaume6544 | 6:4840dd0ef133 | 80 | wait_us(1750); |
guillaume6544 | 5:ddab03ae19aa | 81 | mypwm.write(0.0); |
akashvibhute | 0:3982c0e9eda1 | 82 | } |
guillaume6544 | 6:4840dd0ef133 | 83 | |
akashvibhute | 0:3982c0e9eda1 | 84 | } |
guillaume6544 | 6:4840dd0ef133 | 85 | |
guillaume6544 | 6:4840dd0ef133 | 86 | } |
guillaume6544 | 6:4840dd0ef133 | 87 |