dd

Dependencies:   xtoff2 RF24Network mbed

Fork of xtoff3 by pieter Berteloot

Committer:
gimohd
Date:
Wed Sep 05 07:50:27 2018 +0000
Revision:
16:691649d8a3da
Parent:
15:f8aad6d1db68
test

Who changed what in which revision?

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