RF24Network Send example program.

Dependencies:   xtoff RF24Network mbed

Fork of RF24Network_Send by Akash Vibhute

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?

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 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 }