![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
dd
Dependencies: xtoff2 RF24Network mbed
Fork of xtoff3 by
main.cpp@16:691649d8a3da, 2018-09-05 (annotated)
- Committer:
- gimohd
- Date:
- Wed Sep 05 07:50:27 2018 +0000
- Revision:
- 16:691649d8a3da
- Parent:
- 15:f8aad6d1db68
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akashvibhute | 0:3982c0e9eda1 | 1 | #include "mbed.h" |
gimohd | 16:691649d8a3da | 2 | #include "Transmitter.h" |
gimohd | 16:691649d8a3da | 3 | #include "Maths.h" |
gimohd | 16:691649d8a3da | 4 | #include "LoadCell.h" |
pietor | 4:7ebc3b421306 | 5 | |
akashvibhute | 0:3982c0e9eda1 | 6 | Serial pc(USBTX, USBRX); |
gimohd | 16:691649d8a3da | 7 | Ontvanger tx; |
gimohd | 16:691649d8a3da | 8 | LoadCell test(A0); |
gimohd | 16:691649d8a3da | 9 | InterruptIn reedSensor(D9); |
gimohd | 16:691649d8a3da | 10 | Ticker sampler; |
pietor | 6:6a82110ff393 | 11 | Timer t; |
pietor | 6:6a82110ff393 | 12 | |
gimohd | 16:691649d8a3da | 13 | |
gimohd | 16:691649d8a3da | 14 | int reed = 0; |
gimohd | 16:691649d8a3da | 15 | |
gimohd | 16:691649d8a3da | 16 | int DEBUG_ENABLED = 0; |
gimohd | 16:691649d8a3da | 17 | int meet = 0; |
gimohd | 16:691649d8a3da | 18 | float val2[10000]; |
gimohd | 16:691649d8a3da | 19 | int VAL_AM = 0; |
gimohd | 16:691649d8a3da | 20 | |
gimohd | 16:691649d8a3da | 21 | |
gimohd | 16:691649d8a3da | 22 | const int BEFORE_AMOUNT = 1; |
gimohd | 16:691649d8a3da | 23 | float BEFORE_VALUES[BEFORE_AMOUNT]; |
gimohd | 16:691649d8a3da | 24 | int BEFORE_COUNTER = 0; |
gimohd | 16:691649d8a3da | 25 | |
gimohd | 16:691649d8a3da | 26 | const int REED_AMOUNT = 1; |
gimohd | 16:691649d8a3da | 27 | float REED_VALUES[REED_AMOUNT][BEFORE_AMOUNT]; |
gimohd | 16:691649d8a3da | 28 | int REED_COUNTER = 0; |
gimohd | 16:691649d8a3da | 29 | int REED_ENABLE = 0; |
gimohd | 16:691649d8a3da | 30 | |
gimohd | 16:691649d8a3da | 31 | int MAGNET_COUNTER = 0; |
pietor | 7:8515f205483b | 32 | |
gimohd | 16:691649d8a3da | 33 | void log(const char* format, ...) |
gimohd | 16:691649d8a3da | 34 | { |
gimohd | 16:691649d8a3da | 35 | if (DEBUG_ENABLED) { |
gimohd | 16:691649d8a3da | 36 | char buffer[256]; |
gimohd | 16:691649d8a3da | 37 | va_list args; |
gimohd | 16:691649d8a3da | 38 | va_start(args, format); |
gimohd | 16:691649d8a3da | 39 | vsprintf(buffer, format, args); |
gimohd | 16:691649d8a3da | 40 | pc.printf("DEBUG - %s \r\n", buffer); |
gimohd | 16:691649d8a3da | 41 | va_end(args); |
gimohd | 16:691649d8a3da | 42 | } |
gimohd | 16:691649d8a3da | 43 | } |
gimohd | 16:691649d8a3da | 44 | |
gimohd | 16:691649d8a3da | 45 | void send(float mass) |
gimohd | 16:691649d8a3da | 46 | { |
gimohd | 16:691649d8a3da | 47 | tx.update(); |
gimohd | 16:691649d8a3da | 48 | payload_t payload; |
gimohd | 16:691649d8a3da | 49 | payload.command = 0x01; |
gimohd | 16:691649d8a3da | 50 | payload.mass = mass; |
gimohd | 16:691649d8a3da | 51 | log("Writing now"); |
gimohd | 16:691649d8a3da | 52 | bool ok = tx.write(payload); |
gimohd | 16:691649d8a3da | 53 | log("Done writing"); |
gimohd | 16:691649d8a3da | 54 | if (ok) |
gimohd | 16:691649d8a3da | 55 | log("Ok"); |
gimohd | 16:691649d8a3da | 56 | else |
gimohd | 16:691649d8a3da | 57 | log("Failed"); |
gimohd | 16:691649d8a3da | 58 | } |
pietor | 7:8515f205483b | 59 | |
gimohd | 15:f8aad6d1db68 | 60 | |
gimohd | 16:691649d8a3da | 61 | void sendCommand (char c) |
gimohd | 16:691649d8a3da | 62 | { |
gimohd | 16:691649d8a3da | 63 | switch (c) { |
gimohd | 16:691649d8a3da | 64 | case 't': |
gimohd | 16:691649d8a3da | 65 | float tare = test.tare(); |
gimohd | 16:691649d8a3da | 66 | log("Tare %f", tare); |
gimohd | 16:691649d8a3da | 67 | send(tare); |
gimohd | 16:691649d8a3da | 68 | break; |
gimohd | 16:691649d8a3da | 69 | case 'T': |
gimohd | 16:691649d8a3da | 70 | float tare2 = test.tareDown(); |
gimohd | 16:691649d8a3da | 71 | log("Tare %f", tare2); |
gimohd | 16:691649d8a3da | 72 | send(tare2); |
gimohd | 16:691649d8a3da | 73 | break; |
gimohd | 16:691649d8a3da | 74 | case 'c': |
gimohd | 16:691649d8a3da | 75 | float cali = test.callibrate(); |
gimohd | 16:691649d8a3da | 76 | log("Callibrate %f", cali); |
gimohd | 16:691649d8a3da | 77 | send(cali); |
gimohd | 16:691649d8a3da | 78 | break; |
gimohd | 16:691649d8a3da | 79 | case 'y': |
gimohd | 16:691649d8a3da | 80 | float volt = test.analogRead(); |
gimohd | 16:691649d8a3da | 81 | log("Voltage %f", volt); |
gimohd | 16:691649d8a3da | 82 | send(volt); |
gimohd | 16:691649d8a3da | 83 | break; |
gimohd | 16:691649d8a3da | 84 | case 'm': |
gimohd | 16:691649d8a3da | 85 | float mass = test.mass(); |
gimohd | 16:691649d8a3da | 86 | log("MASS %f", mass); |
gimohd | 16:691649d8a3da | 87 | send(mass); |
gimohd | 16:691649d8a3da | 88 | break; |
gimohd | 16:691649d8a3da | 89 | case 'M': |
gimohd | 16:691649d8a3da | 90 | float mass2 = test.simpleMass(); |
gimohd | 16:691649d8a3da | 91 | log("MASS %f", mass2); |
gimohd | 16:691649d8a3da | 92 | send(mass2); |
gimohd | 16:691649d8a3da | 93 | break; |
gimohd | 16:691649d8a3da | 94 | case 'P': |
gimohd | 16:691649d8a3da | 95 | for (int i = 0; i<10000; i++) { |
gimohd | 16:691649d8a3da | 96 | send(val2[i]); |
gimohd | 16:691649d8a3da | 97 | wait_ms(25); |
gimohd | 16:691649d8a3da | 98 | } |
gimohd | 16:691649d8a3da | 99 | break; |
gimohd | 16:691649d8a3da | 100 | case 'p': |
gimohd | 16:691649d8a3da | 101 | float test[REED_AMOUNT]; |
gimohd | 16:691649d8a3da | 102 | float test2[REED_AMOUNT]; |
gimohd | 16:691649d8a3da | 103 | |
gimohd | 16:691649d8a3da | 104 | for (int i = 0; i<REED_AMOUNT; i++) { |
gimohd | 16:691649d8a3da | 105 | for (int j = 0; j<BEFORE_AMOUNT; j++) { |
gimohd | 16:691649d8a3da | 106 | send(REED_VALUES[i][j]); |
gimohd | 16:691649d8a3da | 107 | printf("%f,",REED_VALUES[i][j]); |
gimohd | 16:691649d8a3da | 108 | } |
gimohd | 16:691649d8a3da | 109 | printf("\r\n"); |
gimohd | 16:691649d8a3da | 110 | send(999); |
gimohd | 16:691649d8a3da | 111 | |
gimohd | 16:691649d8a3da | 112 | test[i] = Maths::mean(REED_VALUES[i],0,BEFORE_AMOUNT-1); |
gimohd | 16:691649d8a3da | 113 | test2[i] = Maths::meanNoOutliers(REED_VALUES[i],BEFORE_AMOUNT-1); |
gimohd | 16:691649d8a3da | 114 | } |
gimohd | 16:691649d8a3da | 115 | send(999); |
gimohd | 16:691649d8a3da | 116 | send(Maths::mean(test,0,REED_AMOUNT)); |
gimohd | 16:691649d8a3da | 117 | send(999); |
gimohd | 16:691649d8a3da | 118 | send(Maths::meanNoOutliers(test,REED_AMOUNT)); |
gimohd | 16:691649d8a3da | 119 | send(999); |
gimohd | 16:691649d8a3da | 120 | send(Maths::meanNoOutliers(test2,REED_AMOUNT)); |
gimohd | 16:691649d8a3da | 121 | send(999); |
gimohd | 16:691649d8a3da | 122 | |
gimohd | 16:691649d8a3da | 123 | break; |
gimohd | 16:691649d8a3da | 124 | case 'r': |
gimohd | 16:691649d8a3da | 125 | REED_ENABLE = !REED_ENABLE; |
gimohd | 16:691649d8a3da | 126 | memset( REED_VALUES, 0, sizeof( REED_VALUES ) ); |
gimohd | 16:691649d8a3da | 127 | memset( BEFORE_VALUES, 0, sizeof( BEFORE_VALUES) ); |
gimohd | 16:691649d8a3da | 128 | REED_COUNTER = 0; |
gimohd | 16:691649d8a3da | 129 | break; |
gimohd | 16:691649d8a3da | 130 | }; |
gimohd | 16:691649d8a3da | 131 | } |
gimohd | 16:691649d8a3da | 132 | void readNF24() |
gimohd | 16:691649d8a3da | 133 | { |
gimohd | 16:691649d8a3da | 134 | tx.update(); |
gimohd | 16:691649d8a3da | 135 | if (tx.available()) { |
gimohd | 16:691649d8a3da | 136 | payload_t payload; |
gimohd | 16:691649d8a3da | 137 | payload = tx.read(); |
gimohd | 16:691649d8a3da | 138 | pc.printf("%c\r\n", payload.command); |
gimohd | 16:691649d8a3da | 139 | sendCommand(payload.command); |
gimohd | 16:691649d8a3da | 140 | } |
gimohd | 16:691649d8a3da | 141 | } |
gimohd | 16:691649d8a3da | 142 | |
gimohd | 16:691649d8a3da | 143 | void reedS() |
gimohd | 16:691649d8a3da | 144 | { |
gimohd | 16:691649d8a3da | 145 | if (REED_ENABLE) |
gimohd | 16:691649d8a3da | 146 | reed = 1; |
gimohd | 16:691649d8a3da | 147 | } |
gimohd | 16:691649d8a3da | 148 | |
gimohd | 16:691649d8a3da | 149 | void getSample() |
gimohd | 16:691649d8a3da | 150 | { |
gimohd | 16:691649d8a3da | 151 | if (REED_ENABLE) { |
gimohd | 16:691649d8a3da | 152 | val2[VAL_AM] = test.simpleAnalogRead(); |
gimohd | 16:691649d8a3da | 153 | VAL_AM = (VAL_AM + 1) %10000; |
gimohd | 16:691649d8a3da | 154 | } |
gimohd | 16:691649d8a3da | 155 | } |
gimohd | 16:691649d8a3da | 156 | |
gimohd | 16:691649d8a3da | 157 | void init() |
gimohd | 16:691649d8a3da | 158 | { |
gimohd | 16:691649d8a3da | 159 | DEBUG_ENABLED = 0; |
gimohd | 16:691649d8a3da | 160 | log("INITIALISE"); |
gimohd | 16:691649d8a3da | 161 | log("DEBUGGING IS: ON"); |
gimohd | 16:691649d8a3da | 162 | log("Load cell using: Analog Pin A2"); |
gimohd | 16:691649d8a3da | 163 | log("Transmitter using: D4, D3, A1, A6, A5"); |
gimohd | 16:691649d8a3da | 164 | tx.printDetails(); |
gimohd | 16:691649d8a3da | 165 | |
gimohd | 16:691649d8a3da | 166 | log("INIT REED SENSOR"); |
gimohd | 16:691649d8a3da | 167 | |
gimohd | 16:691649d8a3da | 168 | reedSensor.fall(&reedS); |
gimohd | 16:691649d8a3da | 169 | reedSensor.mode(PullUp); |
gimohd | 16:691649d8a3da | 170 | sampler.attach(&getSample, 0.00004); |
gimohd | 16:691649d8a3da | 171 | |
gimohd | 16:691649d8a3da | 172 | } |
gimohd | 16:691649d8a3da | 173 | |
gimohd | 15:f8aad6d1db68 | 174 | |
gimohd | 15:f8aad6d1db68 | 175 | void receive() |
pietor | 6:6a82110ff393 | 176 | { |
gimohd | 15:f8aad6d1db68 | 177 | while (true) { |
gimohd | 15:f8aad6d1db68 | 178 | pc.printf("");//print niet weg doen, één of andere reden werkt het niet zonder |
gimohd | 16:691649d8a3da | 179 | tx.update(); |
gimohd | 16:691649d8a3da | 180 | if (tx.available()) { |
gimohd | 15:f8aad6d1db68 | 181 | payload_t payload; |
gimohd | 16:691649d8a3da | 182 | payload = tx.read(); |
gimohd | 15:f8aad6d1db68 | 183 | if(!payload.messageAvailable) { |
gimohd | 16:691649d8a3da | 184 | pc.printf("%f\r\n", payload.mass); |
gimohd | 15:f8aad6d1db68 | 185 | } |
gimohd | 15:f8aad6d1db68 | 186 | } |
gimohd | 15:f8aad6d1db68 | 187 | } |
pietor | 6:6a82110ff393 | 188 | } |
pietor | 6:6a82110ff393 | 189 | |
gimohd | 16:691649d8a3da | 190 | |
gimohd | 16:691649d8a3da | 191 | |
pietor | 7:8515f205483b | 192 | |
pietor | 7:8515f205483b | 193 | |
gimohd | 16:691649d8a3da | 194 | void readPc() |
gimohd | 16:691649d8a3da | 195 | { |
gimohd | 16:691649d8a3da | 196 | if(pc.readable()) { |
gimohd | 16:691649d8a3da | 197 | sendCommand(pc.getc()); |
gimohd | 16:691649d8a3da | 198 | } |
gimohd | 16:691649d8a3da | 199 | } |
gimohd | 16:691649d8a3da | 200 | |
gimohd | 16:691649d8a3da | 201 | void readReed() |
pietor | 7:8515f205483b | 202 | { |
gimohd | 16:691649d8a3da | 203 | if(reed) { |
gimohd | 16:691649d8a3da | 204 | /*for (int i = 0; i <BEFORE_AMOUNT ; i++) |
gimohd | 16:691649d8a3da | 205 | REED_VALUES[REED_COUNTER][i] = BEFORE_VALUES[(i+BEFORE_COUNTER) % BEFORE_AMOUNT]; |
gimohd | 16:691649d8a3da | 206 | REED_COUNTER=(REED_COUNTER+1) % REED_AMOUNT; |
gimohd | 16:691649d8a3da | 207 | |
gimohd | 16:691649d8a3da | 208 | MAGNET_COUNTER++; |
gimohd | 16:691649d8a3da | 209 | */ |
gimohd | 16:691649d8a3da | 210 | REED_ENABLE = 0; |
gimohd | 16:691649d8a3da | 211 | send(VAL_AM); |
gimohd | 16:691649d8a3da | 212 | reed = 0; |
gimohd | 16:691649d8a3da | 213 | |
gimohd | 15:f8aad6d1db68 | 214 | } |
gimohd | 16:691649d8a3da | 215 | } |
pietor | 7:8515f205483b | 216 | |
akashvibhute | 2:608cf8c5c55e | 217 | int main() |
akashvibhute | 0:3982c0e9eda1 | 218 | { |
gimohd | 16:691649d8a3da | 219 | init(); |
gimohd | 16:691649d8a3da | 220 | while (1) { |
gimohd | 16:691649d8a3da | 221 | //If reed is enabled |
gimohd | 16:691649d8a3da | 222 | if(!REED_ENABLE) { |
gimohd | 16:691649d8a3da | 223 | readPc(); |
gimohd | 16:691649d8a3da | 224 | readNF24(); |
gimohd | 16:691649d8a3da | 225 | } else { |
gimohd | 16:691649d8a3da | 226 | readReed(); |
gimohd | 16:691649d8a3da | 227 | /*val2[VAL_AM] = test.simpleAnalogRead(); |
gimohd | 16:691649d8a3da | 228 | VAL_AM = (VAL_AM + 1) %10000; |
gimohd | 16:691649d8a3da | 229 | */ |
gimohd | 16:691649d8a3da | 230 | /*BEFORE_VALUES[BEFORE_COUNTER] = test.mass(); |
gimohd | 16:691649d8a3da | 231 | BEFORE_COUNTER ++; |
gimohd | 16:691649d8a3da | 232 | BEFORE_COUNTER = BEFORE_COUNTER % BEFORE_AMOUNT; |
gimohd | 16:691649d8a3da | 233 | if(MAGNET_COUNTER >= REED_AMOUNT) { |
gimohd | 16:691649d8a3da | 234 | MAGNET_COUNTER = 0; |
gimohd | 16:691649d8a3da | 235 | REED_ENABLE = !REED_ENABLE; |
gimohd | 16:691649d8a3da | 236 | }*/ |
gimohd | 16:691649d8a3da | 237 | } |
akashvibhute | 0:3982c0e9eda1 | 238 | } |
gimohd | 16:691649d8a3da | 239 | |
gimohd | 15:f8aad6d1db68 | 240 | } |