RF24Network Send example program.
Dependencies: xtoff RF24Network mbed
Fork of RF24Network_Send by
main.cpp@7:cbdbaf825b4a, 2018-02-22 (annotated)
- Committer:
- pietor
- Date:
- Thu Feb 22 14:07:50 2018 +0000
- Revision:
- 7:cbdbaf825b4a
- Parent:
- 6:03ba3e18ced2
- Child:
- 8:62b4607c44ca
Werken 22.02
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 | Timer t2; |
pietor | 6:03ba3e18ced2 | 17 | |
pietor | 6:03ba3e18ced2 | 18 | State current_state = State_init; |
pietor | 6:03ba3e18ced2 | 19 | |
pietor | 6:03ba3e18ced2 | 20 | void setCurrentState( State setState ) |
pietor | 6:03ba3e18ced2 | 21 | { |
pietor | 6:03ba3e18ced2 | 22 | current_state = setState; |
pietor | 6:03ba3e18ced2 | 23 | } |
pietor | 6:03ba3e18ced2 | 24 | |
pietor | 6:03ba3e18ced2 | 25 | |
pietor | 6:03ba3e18ced2 | 26 | State getCurrentState() |
pietor | 6:03ba3e18ced2 | 27 | { |
pietor | 6:03ba3e18ced2 | 28 | return current_state; |
pietor | 6:03ba3e18ced2 | 29 | } |
pietor | 6:03ba3e18ced2 | 30 | |
pietor | 6:03ba3e18ced2 | 31 | float getAverageSamples(int samples) |
pietor | 6:03ba3e18ced2 | 32 | { |
pietor | 6:03ba3e18ced2 | 33 | float AVERAGE = 0; |
pietor | 6:03ba3e18ced2 | 34 | int num_samples = 0; |
pietor | 6:03ba3e18ced2 | 35 | while (num_samples < samples) { |
pietor | 6:03ba3e18ced2 | 36 | float r = ain.read(); |
pietor | 6:03ba3e18ced2 | 37 | AVERAGE += r; |
pietor | 6:03ba3e18ced2 | 38 | num_samples++; |
pietor | 6:03ba3e18ced2 | 39 | } |
pietor | 6:03ba3e18ced2 | 40 | |
pietor | 6:03ba3e18ced2 | 41 | AVERAGE /= num_samples; |
pietor | 6:03ba3e18ced2 | 42 | num_samples = 0; |
pietor | 6:03ba3e18ced2 | 43 | |
pietor | 6:03ba3e18ced2 | 44 | return AVERAGE; |
pietor | 6:03ba3e18ced2 | 45 | } |
pietor | 6:03ba3e18ced2 | 46 | |
pietor | 6:03ba3e18ced2 | 47 | float getAverageTime() |
pietor | 6:03ba3e18ced2 | 48 | { |
pietor | 6:03ba3e18ced2 | 49 | t2.start(); |
pietor | 6:03ba3e18ced2 | 50 | t2.reset(); |
pietor | 6:03ba3e18ced2 | 51 | float AVERAGE = 0; |
pietor | 6:03ba3e18ced2 | 52 | int num_samples = 0; |
pietor | 6:03ba3e18ced2 | 53 | while (!pb &t2.read() <= 1) { |
pietor | 6:03ba3e18ced2 | 54 | float r = ain.read(); |
pietor | 6:03ba3e18ced2 | 55 | AVERAGE += r; |
pietor | 6:03ba3e18ced2 | 56 | num_samples++; |
pietor | 6:03ba3e18ced2 | 57 | } |
pietor | 6:03ba3e18ced2 | 58 | |
pietor | 6:03ba3e18ced2 | 59 | AVERAGE /= num_samples; |
pietor | 6:03ba3e18ced2 | 60 | num_samples = 0; |
pietor | 6:03ba3e18ced2 | 61 | |
pietor | 6:03ba3e18ced2 | 62 | return AVERAGE; |
pietor | 6:03ba3e18ced2 | 63 | } |
pietor | 6:03ba3e18ced2 | 64 | |
pietor | 6:03ba3e18ced2 | 65 | |
pietor | 6:03ba3e18ced2 | 66 | |
pietor | 6:03ba3e18ced2 | 67 | |
akashvibhute | 2:926b93a68399 | 68 | int main() |
akashvibhute | 0:3982c0e9eda1 | 69 | { |
pietor | 5:e6067799a414 | 70 | while(1) { |
pietor | 5:e6067799a414 | 71 | sent.update(); |
pietor | 6:03ba3e18ced2 | 72 | switch (current_state) { |
pietor | 6:03ba3e18ced2 | 73 | case State_init: |
pietor | 6:03ba3e18ced2 | 74 | pc.baud(9600); |
pietor | 6:03ba3e18ced2 | 75 | wait_ms(1000); |
pietor | 7:cbdbaf825b4a | 76 | pc.printf("--Verzender--\n\r"); |
pietor | 6:03ba3e18ced2 | 77 | pb.mode(PullUp); |
pietor | 6:03ba3e18ced2 | 78 | setCurrentState(State_read); |
pietor | 6:03ba3e18ced2 | 79 | payload_t payload; |
pietor | 6:03ba3e18ced2 | 80 | break; |
pietor | 6:03ba3e18ced2 | 81 | |
pietor | 6:03ba3e18ced2 | 82 | case State_position: |
pietor | 6:03ba3e18ced2 | 83 | pc.printf("State: position\n\r"); |
pietor | 6:03ba3e18ced2 | 84 | if (!pb) |
pietor | 6:03ba3e18ced2 | 85 | setCurrentState(State_tare); |
pietor | 6:03ba3e18ced2 | 86 | break; |
pietor | 6:03ba3e18ced2 | 87 | |
pietor | 6:03ba3e18ced2 | 88 | |
pietor | 6:03ba3e18ced2 | 89 | case State_tare: |
pietor | 6:03ba3e18ced2 | 90 | pc.printf("State: tare\n\r"); |
pietor | 6:03ba3e18ced2 | 91 | tare = getAverageSamples(50000); |
pietor | 6:03ba3e18ced2 | 92 | pc.printf("tare = %f\r\n",tare*3.3); |
pietor | 7:cbdbaf825b4a | 93 | |
pietor | 6:03ba3e18ced2 | 94 | setCurrentState(State_read); |
pietor | 6:03ba3e18ced2 | 95 | break; |
akashvibhute | 1:5be48a9550c3 | 96 | |
pietor | 6:03ba3e18ced2 | 97 | case State_read: |
pietor | 7:cbdbaf825b4a | 98 | //pc.printf("State: read\n\r"); |
pietor | 7:cbdbaf825b4a | 99 | |
pietor | 6:03ba3e18ced2 | 100 | if (!pb) { |
pietor | 6:03ba3e18ced2 | 101 | massa = getAverageTime() - tare; |
pietor | 7:cbdbaf825b4a | 102 | //pc.printf("massa = %f\r\n", massa*3.3); |
pietor | 7:cbdbaf825b4a | 103 | payload.reedsensor = 1; |
pietor | 7:cbdbaf825b4a | 104 | payload.milligram = massa * 3.3; |
pietor | 7:cbdbaf825b4a | 105 | //pc.printf("Sent packet1 -- Reed: %d --- %f mg \r\n",payload.reedsensor, payload.milligram); |
pietor | 7:cbdbaf825b4a | 106 | |
pietor | 7:cbdbaf825b4a | 107 | bool ok = sent.write(payload); |
pietor | 7:cbdbaf825b4a | 108 | if (ok) { |
pietor | 7:cbdbaf825b4a | 109 | pc.printf("ok.\n\r"); |
pietor | 7:cbdbaf825b4a | 110 | } else { |
pietor | 7:cbdbaf825b4a | 111 | pc.printf("failed.\n\r"); |
pietor | 7:cbdbaf825b4a | 112 | } |
pietor | 7:cbdbaf825b4a | 113 | //pc.printf("Sent packet2 -- Reed: %d --- %f mg \r\n",payload.reedsensor, payload.milligram); |
pietor | 7:cbdbaf825b4a | 114 | |
pietor | 7:cbdbaf825b4a | 115 | setCurrentState(State_receive); |
pietor | 7:cbdbaf825b4a | 116 | //setCurrentState(State_send); |
pietor | 6:03ba3e18ced2 | 117 | } |
pietor | 6:03ba3e18ced2 | 118 | |
pietor | 6:03ba3e18ced2 | 119 | break; |
pietor | 7:cbdbaf825b4a | 120 | |
pietor | 6:03ba3e18ced2 | 121 | |
pietor | 6:03ba3e18ced2 | 122 | case State_receive: |
pietor | 7:cbdbaf825b4a | 123 | //pc.printf("State :receive"); |
pietor | 6:03ba3e18ced2 | 124 | sent.update(); |
pietor | 6:03ba3e18ced2 | 125 | if (sent.available()) { |
pietor | 6:03ba3e18ced2 | 126 | state_Packet state; |
pietor | 6:03ba3e18ced2 | 127 | state = sent.read(); |
pietor | 6:03ba3e18ced2 | 128 | if(state.setstate == State_position) { |
pietor | 6:03ba3e18ced2 | 129 | setCurrentState(State_position); |
pietor | 6:03ba3e18ced2 | 130 | break; |
pietor | 6:03ba3e18ced2 | 131 | } |
pietor | 6:03ba3e18ced2 | 132 | } |
pietor | 6:03ba3e18ced2 | 133 | setCurrentState(State_read); |
pietor | 6:03ba3e18ced2 | 134 | break; |
akashvibhute | 2:926b93a68399 | 135 | } |
akashvibhute | 0:3982c0e9eda1 | 136 | } |
akashvibhute | 0:3982c0e9eda1 | 137 | } |