FN

Dependencies:   mbed RF24Network RF24

Committer:
guillaume6544
Date:
Thu Feb 14 10:58:23 2019 +0000
Revision:
5:bfef4ea383be
Parent:
4:f70f3b565af0
Child:
6:d46e3c0c8d35
send

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akashvibhute 0:3982c0e9eda1 1 #include "mbed.h"
akashvibhute 0:3982c0e9eda1 2 #include <RF24Network.h>
akashvibhute 2:926b93a68399 3 #include <RF24.h>
akashvibhute 0:3982c0e9eda1 4
akashvibhute 0:3982c0e9eda1 5 Serial pc(USBTX, USBRX);
guillaume6544 5:bfef4ea383be 6 InterruptIn button(D4);
akashvibhute 0:3982c0e9eda1 7
wesleytiem 4:f70f3b565af0 8 RF24 radio(SPI_MOSI, SPI_MISO, SPI_SCK, D9, SPI_CS );
guillaume6544 5:bfef4ea383be 9 Timer timer;
guillaume6544 5:bfef4ea383be 10 unsigned int temps;
guillaume6544 5:bfef4ea383be 11 int a=0;
guillaume6544 5:bfef4ea383be 12
guillaume6544 5:bfef4ea383be 13 void pressed()
guillaume6544 5:bfef4ea383be 14 {
guillaume6544 5:bfef4ea383be 15 button.disable_irq();
guillaume6544 5:bfef4ea383be 16 timer.stop();
guillaume6544 5:bfef4ea383be 17 temps = timer.read_us();
guillaume6544 5:bfef4ea383be 18 printf("distance=%f\r\n",(temps-100.0)*340.0/1000000.0);
guillaume6544 5:bfef4ea383be 19 wait_ms(3);
guillaume6544 5:bfef4ea383be 20 timer.reset();
guillaume6544 5:bfef4ea383be 21 //a=0;
guillaume6544 5:bfef4ea383be 22 //button.enable_irq();
guillaume6544 5:bfef4ea383be 23 }
akashvibhute 0:3982c0e9eda1 24
akashvibhute 0:3982c0e9eda1 25 // Network uses that radio
akashvibhute 0:3982c0e9eda1 26 RF24Network network(radio);
akashvibhute 0:3982c0e9eda1 27
akashvibhute 0:3982c0e9eda1 28 // Address of our node
akashvibhute 3:d605536db315 29 const uint16_t this_node = 01;
akashvibhute 0:3982c0e9eda1 30
akashvibhute 0:3982c0e9eda1 31 // Address of the other node
akashvibhute 3:d605536db315 32 const uint16_t other_node = 00;
akashvibhute 0:3982c0e9eda1 33
akashvibhute 2:926b93a68399 34 // How often to send payload packet to the other unit
guillaume6544 5:bfef4ea383be 35 const unsigned long interval = 200; //ms
akashvibhute 0:3982c0e9eda1 36
akashvibhute 0:3982c0e9eda1 37 // When did we last send?
akashvibhute 0:3982c0e9eda1 38 unsigned long last_sent;
akashvibhute 1:5be48a9550c3 39 Timer t;
akashvibhute 0:3982c0e9eda1 40
akashvibhute 0:3982c0e9eda1 41 // How many have we sent already
akashvibhute 0:3982c0e9eda1 42 unsigned long packets_sent;
akashvibhute 1:5be48a9550c3 43 Timer t_packet;
akashvibhute 0:3982c0e9eda1 44
akashvibhute 0:3982c0e9eda1 45 // Structure of our payload
akashvibhute 2:926b93a68399 46 struct payload_t
akashvibhute 0:3982c0e9eda1 47 {
akashvibhute 2:926b93a68399 48 unsigned long ms;
akashvibhute 2:926b93a68399 49 unsigned long counter;
akashvibhute 0:3982c0e9eda1 50 };
akashvibhute 0:3982c0e9eda1 51
akashvibhute 0:3982c0e9eda1 52
akashvibhute 2:926b93a68399 53 int main()
akashvibhute 0:3982c0e9eda1 54 {
guillaume6544 5:bfef4ea383be 55 // double cpt=0;
guillaume6544 5:bfef4ea383be 56
wesleytiem 4:f70f3b565af0 57 pc.baud(115200);
akashvibhute 0:3982c0e9eda1 58 wait_ms(1000);
akashvibhute 2:926b93a68399 59
akashvibhute 2:926b93a68399 60 pc.printf("mBed RF24Network node: Tx\n");
akashvibhute 0:3982c0e9eda1 61 radio.begin();
akashvibhute 0:3982c0e9eda1 62 network.begin(/*channel*/ 90, /*node address*/ this_node);
akashvibhute 0:3982c0e9eda1 63 wait_ms(2000);
akashvibhute 1:5be48a9550c3 64 t.start();
akashvibhute 1:5be48a9550c3 65 t_packet.start();
guillaume6544 5:bfef4ea383be 66
guillaume6544 5:bfef4ea383be 67
guillaume6544 5:bfef4ea383be 68 button.rise(&pressed);
akashvibhute 2:926b93a68399 69 while(1)
akashvibhute 0:3982c0e9eda1 70 {
guillaume6544 5:bfef4ea383be 71
akashvibhute 0:3982c0e9eda1 72 // Pump the network regularly
akashvibhute 0:3982c0e9eda1 73 network.update();
guillaume6544 5:bfef4ea383be 74 //if(a==0){
akashvibhute 1:5be48a9550c3 75 /* If it's time to send a message, send it! */
akashvibhute 1:5be48a9550c3 76 unsigned long now = t.read_ms();
akashvibhute 2:926b93a68399 77 if ( now >= interval )
akashvibhute 1:5be48a9550c3 78 {
akashvibhute 1:5be48a9550c3 79 t.reset();
guillaume6544 5:bfef4ea383be 80
guillaume6544 5:bfef4ea383be 81 button.enable_irq();
akashvibhute 1:5be48a9550c3 82
akashvibhute 1:5be48a9550c3 83 pc.printf("Sending...");
akashvibhute 1:5be48a9550c3 84 payload_t payload_tx;
akashvibhute 1:5be48a9550c3 85 payload_tx.ms = t_packet.read_ms();
akashvibhute 1:5be48a9550c3 86 payload_tx.counter = packets_sent++;
akashvibhute 2:926b93a68399 87
akashvibhute 1:5be48a9550c3 88 RF24NetworkHeader header_tx(/*to node*/ other_node);
akashvibhute 1:5be48a9550c3 89 bool ok = network.write(header_tx,&payload_tx,sizeof(payload_tx));
guillaume6544 5:bfef4ea383be 90 if (ok){
guillaume6544 5:bfef4ea383be 91 timer.start();
wesleytiem 4:f70f3b565af0 92 pc.printf("ok.\r\n");
guillaume6544 5:bfef4ea383be 93 // a=1;
guillaume6544 5:bfef4ea383be 94 }
akashvibhute 1:5be48a9550c3 95 else
wesleytiem 4:f70f3b565af0 96 pc.printf("failed.\r\n");
akashvibhute 2:926b93a68399 97 }
guillaume6544 5:bfef4ea383be 98
guillaume6544 5:bfef4ea383be 99
guillaume6544 5:bfef4ea383be 100 //}
guillaume6544 5:bfef4ea383be 101
guillaume6544 5:bfef4ea383be 102
guillaume6544 5:bfef4ea383be 103
guillaume6544 5:bfef4ea383be 104
guillaume6544 5:bfef4ea383be 105
akashvibhute 2:926b93a68399 106
akashvibhute 2:926b93a68399 107
akashvibhute 0:3982c0e9eda1 108 }
akashvibhute 2:926b93a68399 109
akashvibhute 0:3982c0e9eda1 110 }