RF24Network Send example program.

Dependencies:   xtoff RF24Network mbed

Fork of RF24Network_Send by Akash Vibhute

Committer:
pietor
Date:
Wed Feb 21 12:09:12 2018 +0000
Revision:
6:03ba3e18ced2
Parent:
5:e6067799a414
Child:
7:cbdbaf825b4a
Case;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pietor 5:e6067799a414 1 #include "Verzender.h"
pietor 6:03ba3e18ced2 2
pietor 6:03ba3e18ced2 3 #define NUM_SAMPLES 2000 // size of sample series
pietor 6:03ba3e18ced2 4
akashvibhute 0:3982c0e9eda1 5 Serial pc(USBTX, USBRX);
akashvibhute 0:3982c0e9eda1 6
pietor 4:bc1126d78e55 7 DigitalIn pb(p25);
pietor 6:03ba3e18ced2 8
pietor 5:e6067799a414 9 Verzender sent;
akashvibhute 0:3982c0e9eda1 10
pietor 6:03ba3e18ced2 11 AnalogIn ain(p17);
pietor 6:03ba3e18ced2 12
pietor 6:03ba3e18ced2 13 float tare = 0;
pietor 6:03ba3e18ced2 14 float massa = 0;
pietor 6:03ba3e18ced2 15
pietor 6:03ba3e18ced2 16 /*
pietor 6:03ba3e18ced2 17 enum State {State_init,
pietor 6:03ba3e18ced2 18 State_tare,
pietor 6:03ba3e18ced2 19 State_position,
pietor 6:03ba3e18ced2 20 State_read,
pietor 6:03ba3e18ced2 21 State_send,
pietor 6:03ba3e18ced2 22 State_receive
pietor 6:03ba3e18ced2 23 };
pietor 6:03ba3e18ced2 24 */
pietor 6:03ba3e18ced2 25
pietor 6:03ba3e18ced2 26 Timer t2;
pietor 6:03ba3e18ced2 27
pietor 6:03ba3e18ced2 28 State current_state = State_init;
pietor 6:03ba3e18ced2 29
pietor 6:03ba3e18ced2 30 void setCurrentState( State setState )
pietor 6:03ba3e18ced2 31 {
pietor 6:03ba3e18ced2 32 current_state = setState;
pietor 6:03ba3e18ced2 33 }
pietor 6:03ba3e18ced2 34
pietor 6:03ba3e18ced2 35
pietor 6:03ba3e18ced2 36 State getCurrentState()
pietor 6:03ba3e18ced2 37 {
pietor 6:03ba3e18ced2 38 return current_state;
pietor 6:03ba3e18ced2 39 }
pietor 6:03ba3e18ced2 40
pietor 6:03ba3e18ced2 41 float getAverageSamples(int samples)
pietor 6:03ba3e18ced2 42 {
pietor 6:03ba3e18ced2 43 float AVERAGE = 0;
pietor 6:03ba3e18ced2 44 int num_samples = 0;
pietor 6:03ba3e18ced2 45 while (num_samples < samples) {
pietor 6:03ba3e18ced2 46 float r = ain.read();
pietor 6:03ba3e18ced2 47 AVERAGE += r;
pietor 6:03ba3e18ced2 48 num_samples++;
pietor 6:03ba3e18ced2 49 }
pietor 6:03ba3e18ced2 50
pietor 6:03ba3e18ced2 51 AVERAGE /= num_samples;
pietor 6:03ba3e18ced2 52 num_samples = 0;
pietor 6:03ba3e18ced2 53
pietor 6:03ba3e18ced2 54 return AVERAGE;
pietor 6:03ba3e18ced2 55 }
pietor 6:03ba3e18ced2 56
pietor 6:03ba3e18ced2 57 float getAverageTime()
pietor 6:03ba3e18ced2 58 {
pietor 6:03ba3e18ced2 59 t2.start();
pietor 6:03ba3e18ced2 60 t2.reset();
pietor 6:03ba3e18ced2 61 float AVERAGE = 0;
pietor 6:03ba3e18ced2 62 int num_samples = 0;
pietor 6:03ba3e18ced2 63 while (!pb &t2.read() <= 1) {
pietor 6:03ba3e18ced2 64 float r = ain.read();
pietor 6:03ba3e18ced2 65 AVERAGE += r;
pietor 6:03ba3e18ced2 66 num_samples++;
pietor 6:03ba3e18ced2 67 }
pietor 6:03ba3e18ced2 68
pietor 6:03ba3e18ced2 69 AVERAGE /= num_samples;
pietor 6:03ba3e18ced2 70 num_samples = 0;
pietor 6:03ba3e18ced2 71
pietor 6:03ba3e18ced2 72 return AVERAGE;
pietor 6:03ba3e18ced2 73 }
pietor 6:03ba3e18ced2 74
pietor 6:03ba3e18ced2 75
pietor 6:03ba3e18ced2 76
pietor 6:03ba3e18ced2 77
akashvibhute 2:926b93a68399 78 int main()
akashvibhute 0:3982c0e9eda1 79 {
pietor 5:e6067799a414 80 while(1) {
pietor 5:e6067799a414 81 sent.update();
pietor 6:03ba3e18ced2 82 switch (current_state) {
pietor 6:03ba3e18ced2 83 case State_init:
pietor 6:03ba3e18ced2 84 pc.baud(9600);
pietor 6:03ba3e18ced2 85 wait_ms(1000);
pietor 6:03ba3e18ced2 86 pc.printf("--Verzender--Tx\n\r");
pietor 6:03ba3e18ced2 87 pb.mode(PullUp);
pietor 6:03ba3e18ced2 88 setCurrentState(State_read);
pietor 6:03ba3e18ced2 89 payload_t payload;
pietor 6:03ba3e18ced2 90 break;
pietor 6:03ba3e18ced2 91
pietor 6:03ba3e18ced2 92 case State_position:
pietor 6:03ba3e18ced2 93 pc.printf("State: position\n\r");
pietor 6:03ba3e18ced2 94 if (!pb)
pietor 6:03ba3e18ced2 95 setCurrentState(State_tare);
pietor 6:03ba3e18ced2 96 break;
pietor 6:03ba3e18ced2 97
pietor 6:03ba3e18ced2 98
pietor 6:03ba3e18ced2 99 case State_tare:
pietor 6:03ba3e18ced2 100 pc.printf("State: tare\n\r");
pietor 6:03ba3e18ced2 101 tare = getAverageSamples(50000);
pietor 6:03ba3e18ced2 102 pc.printf("tare = %f\r\n",tare*3.3);
pietor 6:03ba3e18ced2 103
pietor 6:03ba3e18ced2 104 setCurrentState(State_read);
pietor 6:03ba3e18ced2 105 break;
akashvibhute 1:5be48a9550c3 106
pietor 6:03ba3e18ced2 107 case State_read:
pietor 6:03ba3e18ced2 108 pc.printf("State: read\n\r");
pietor 6:03ba3e18ced2 109 if (!pb) {
pietor 6:03ba3e18ced2 110 massa = getAverageTime() - tare;
pietor 6:03ba3e18ced2 111 pc.printf("massa = %f\r\n", massa*3.3);
pietor 6:03ba3e18ced2 112 payload.reedsensor = !pb;
pietor 6:03ba3e18ced2 113 payload.milligram = 2;
pietor 6:03ba3e18ced2 114 setCurrentState(State_send);
pietor 6:03ba3e18ced2 115 }
pietor 6:03ba3e18ced2 116
pietor 6:03ba3e18ced2 117 break;
pietor 6:03ba3e18ced2 118
pietor 6:03ba3e18ced2 119 case State_send:
pietor 6:03ba3e18ced2 120 pc.printf("State: send\n\r");
pietor 6:03ba3e18ced2 121 sent.update();
pietor 6:03ba3e18ced2 122 bool ok = sent.write(payload);
pietor 6:03ba3e18ced2 123 if (ok) {
pietor 6:03ba3e18ced2 124 pc.printf("ok.\n\r");
pietor 6:03ba3e18ced2 125 } else {
pietor 6:03ba3e18ced2 126 pc.printf("failed.\n\r");
pietor 6:03ba3e18ced2 127 }
pietor 6:03ba3e18ced2 128 setCurrentState(State_receive);
pietor 6:03ba3e18ced2 129 break;
pietor 6:03ba3e18ced2 130
pietor 6:03ba3e18ced2 131 case State_receive:
pietor 6:03ba3e18ced2 132 pc.printf("State :receive");
pietor 6:03ba3e18ced2 133 sent.update();
pietor 6:03ba3e18ced2 134 if (sent.available()) {
pietor 6:03ba3e18ced2 135 state_Packet state;
pietor 6:03ba3e18ced2 136 state = sent.read();
pietor 6:03ba3e18ced2 137 if(state.setstate == State_position) {
pietor 6:03ba3e18ced2 138 setCurrentState(State_position);
pietor 6:03ba3e18ced2 139 break;
pietor 6:03ba3e18ced2 140 }
pietor 6:03ba3e18ced2 141 }
pietor 6:03ba3e18ced2 142 setCurrentState(State_read);
pietor 6:03ba3e18ced2 143 break;
akashvibhute 2:926b93a68399 144 }
akashvibhute 0:3982c0e9eda1 145 }
akashvibhute 0:3982c0e9eda1 146 }