RF24Network Send example program.
Dependencies: xtoff RF24Network mbed
Fork of RF24Network_Send by
main.cpp@6:03ba3e18ced2, 2018-02-21 (annotated)
- 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?
User | Revision | Line number | New 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 | } |