4180 Final Project

Dependencies:   mbed

Committer:
natergater
Date:
Sat Dec 03 00:04:32 2016 +0000
Revision:
0:60d48344319c
4180 Project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
natergater 0:60d48344319c 1 #include "mbed.h"
natergater 0:60d48344319c 2
natergater 0:60d48344319c 3 Serial pc(USBTX, USBRX);
natergater 0:60d48344319c 4
natergater 0:60d48344319c 5 double xLoc, yLoc;
natergater 0:60d48344319c 6
natergater 0:60d48344319c 7 DigitalOut myled(LED1);
natergater 0:60d48344319c 8 DigitalOut control(p21);
natergater 0:60d48344319c 9
natergater 0:60d48344319c 10 DigitalOut charge1M(p5);//1M output
natergater 0:60d48344319c 11 DigitalOut charge100K(p6);//100K output
natergater 0:60d48344319c 12 DigitalOut charge10K(p7);//10K output
natergater 0:60d48344319c 13 DigitalOut charge1K(p8);//1K output
natergater 0:60d48344319c 14 DigitalOut charge100(p9);//100 output
natergater 0:60d48344319c 15
natergater 0:60d48344319c 16 AnalogIn fullIndic(p15);
natergater 0:60d48344319c 17 AnalogIn emptyIndic(p19);
natergater 0:60d48344319c 18 DigitalInOut pin20(p20);
natergater 0:60d48344319c 19 Timer t;
natergater 0:60d48344319c 20 int timeElaps;
natergater 0:60d48344319c 21 float microFarads;
natergater 0:60d48344319c 22 double changeTime = 1000;
natergater 0:60d48344319c 23
natergater 0:60d48344319c 24 double R100 = 98.94;
natergater 0:60d48344319c 25 double R1K = 981.7;
natergater 0:60d48344319c 26 double R10K = 9922.0;
natergater 0:60d48344319c 27 double R100K = 99200.0;
natergater 0:60d48344319c 28 double R1M = 987200.0;
natergater 0:60d48344319c 29
natergater 0:60d48344319c 30 double Rval = 0.0;
natergater 0:60d48344319c 31
natergater 0:60d48344319c 32 bool fail;
natergater 0:60d48344319c 33 bool leave = true;
natergater 0:60d48344319c 34 float RC=0.54;//53;
natergater 0:60d48344319c 35
natergater 0:60d48344319c 36 char startSig[5];
natergater 0:60d48344319c 37
natergater 0:60d48344319c 38 bool checkForC(void)
natergater 0:60d48344319c 39 {
natergater 0:60d48344319c 40 startSig[0] = pc.getc();
natergater 0:60d48344319c 41 if(startSig[0] == 'c'){return true;}
natergater 0:60d48344319c 42 return false;
natergater 0:60d48344319c 43 }
natergater 0:60d48344319c 44
natergater 0:60d48344319c 45 void checkDischarge(void)
natergater 0:60d48344319c 46 {
natergater 0:60d48344319c 47
natergater 0:60d48344319c 48 myled = 1;
natergater 0:60d48344319c 49
natergater 0:60d48344319c 50 charge1M = 0;
natergater 0:60d48344319c 51 charge100K = 0;
natergater 0:60d48344319c 52 charge10K = 0;
natergater 0:60d48344319c 53 charge1K = 0;
natergater 0:60d48344319c 54 charge100 = 0;
natergater 0:60d48344319c 55
natergater 0:60d48344319c 56 control = 1;
natergater 0:60d48344319c 57 //bool success = true;
natergater 0:60d48344319c 58 charge1M = 0;
natergater 0:60d48344319c 59 pin20.output();
natergater 0:60d48344319c 60 pin20 = 0;
natergater 0:60d48344319c 61 while(fullIndic.read() > 0.07){}//pc.printf("read: %f\n",fullIndic.read());}
natergater 0:60d48344319c 62 }
natergater 0:60d48344319c 63
natergater 0:60d48344319c 64 void start1M(void)
natergater 0:60d48344319c 65 {
natergater 0:60d48344319c 66 Rval = R1M;
natergater 0:60d48344319c 67 fail = false;
natergater 0:60d48344319c 68 control = 0;
natergater 0:60d48344319c 69 pin20.input();
natergater 0:60d48344319c 70 pin20.mode(PullNone);
natergater 0:60d48344319c 71 charge1M = 1;
natergater 0:60d48344319c 72 t.reset();
natergater 0:60d48344319c 73 t.start();
natergater 0:60d48344319c 74
natergater 0:60d48344319c 75 while(fullIndic < RC){
natergater 0:60d48344319c 76 if(t.read_ms() > changeTime){
natergater 0:60d48344319c 77 fail = true;
natergater 0:60d48344319c 78 charge1M = 0;
natergater 0:60d48344319c 79 break;
natergater 0:60d48344319c 80 }
natergater 0:60d48344319c 81 }
natergater 0:60d48344319c 82 t.stop();
natergater 0:60d48344319c 83 }
natergater 0:60d48344319c 84
natergater 0:60d48344319c 85 void start100K(void)
natergater 0:60d48344319c 86 {
natergater 0:60d48344319c 87 Rval = R100K;
natergater 0:60d48344319c 88 fail = false;
natergater 0:60d48344319c 89 control = 0;
natergater 0:60d48344319c 90 pin20.input();
natergater 0:60d48344319c 91 pin20.mode(PullNone);
natergater 0:60d48344319c 92 charge100K = 1;
natergater 0:60d48344319c 93 t.reset();
natergater 0:60d48344319c 94 t.start();
natergater 0:60d48344319c 95
natergater 0:60d48344319c 96 while(fullIndic < RC){
natergater 0:60d48344319c 97 if(t.read_ms() > changeTime){
natergater 0:60d48344319c 98 fail = true;
natergater 0:60d48344319c 99 charge100K = 0;
natergater 0:60d48344319c 100 break;
natergater 0:60d48344319c 101 }
natergater 0:60d48344319c 102 }
natergater 0:60d48344319c 103 t.stop();
natergater 0:60d48344319c 104 }
natergater 0:60d48344319c 105
natergater 0:60d48344319c 106 void start10K(void)
natergater 0:60d48344319c 107 {
natergater 0:60d48344319c 108 Rval = R10K;
natergater 0:60d48344319c 109 fail = false;
natergater 0:60d48344319c 110 control = 0;
natergater 0:60d48344319c 111 pin20.input();
natergater 0:60d48344319c 112 pin20.mode(PullNone);
natergater 0:60d48344319c 113 charge10K = 1;
natergater 0:60d48344319c 114 t.reset();
natergater 0:60d48344319c 115 t.start();
natergater 0:60d48344319c 116
natergater 0:60d48344319c 117 while(fullIndic < RC){
natergater 0:60d48344319c 118 if(t.read_ms() > changeTime){
natergater 0:60d48344319c 119 fail = true;
natergater 0:60d48344319c 120 charge10K = 0;
natergater 0:60d48344319c 121 break;
natergater 0:60d48344319c 122 }
natergater 0:60d48344319c 123 }
natergater 0:60d48344319c 124 t.stop();
natergater 0:60d48344319c 125 }
natergater 0:60d48344319c 126
natergater 0:60d48344319c 127 void start1K(void)
natergater 0:60d48344319c 128 {
natergater 0:60d48344319c 129 Rval = R1K;
natergater 0:60d48344319c 130 fail = false;
natergater 0:60d48344319c 131 control = 0;
natergater 0:60d48344319c 132 pin20.input();
natergater 0:60d48344319c 133 pin20.mode(PullNone);
natergater 0:60d48344319c 134 charge1K = 1;
natergater 0:60d48344319c 135 t.reset();
natergater 0:60d48344319c 136 t.start();
natergater 0:60d48344319c 137
natergater 0:60d48344319c 138 while(fullIndic < RC){
natergater 0:60d48344319c 139 if(t.read_ms() > changeTime){
natergater 0:60d48344319c 140 fail = true;
natergater 0:60d48344319c 141 charge1K = 0;
natergater 0:60d48344319c 142 break;
natergater 0:60d48344319c 143 }
natergater 0:60d48344319c 144 }
natergater 0:60d48344319c 145 t.stop();
natergater 0:60d48344319c 146 }
natergater 0:60d48344319c 147
natergater 0:60d48344319c 148 void start100(void)
natergater 0:60d48344319c 149 {
natergater 0:60d48344319c 150 Rval = R100;
natergater 0:60d48344319c 151 fail = false;
natergater 0:60d48344319c 152 control = 0;
natergater 0:60d48344319c 153 pin20.input();
natergater 0:60d48344319c 154 pin20.mode(PullNone);
natergater 0:60d48344319c 155 charge100 = 1;
natergater 0:60d48344319c 156 t.reset();
natergater 0:60d48344319c 157 t.start();
natergater 0:60d48344319c 158
natergater 0:60d48344319c 159 while(fullIndic < RC){
natergater 0:60d48344319c 160 /*if(t.read_ms() > changeTime){
natergater 0:60d48344319c 161 fail = true;
natergater 0:60d48344319c 162 charge100 = 0;
natergater 0:60d48344319c 163 break;
natergater 0:60d48344319c 164 }*/
natergater 0:60d48344319c 165 }
natergater 0:60d48344319c 166 t.stop();
natergater 0:60d48344319c 167 }
natergater 0:60d48344319c 168
natergater 0:60d48344319c 169 void sendErrorMsg(void){
natergater 0:60d48344319c 170 pc.printf("could not read capacitor\n");
natergater 0:60d48344319c 171 }
natergater 0:60d48344319c 172
natergater 0:60d48344319c 173 int main() {
natergater 0:60d48344319c 174 while(1){
natergater 0:60d48344319c 175
natergater 0:60d48344319c 176 leave = true;
natergater 0:60d48344319c 177 startSig [0] = pc.getc();
natergater 0:60d48344319c 178 while(startSig[0] != 's'){startSig [0] = pc.getc();}
natergater 0:60d48344319c 179
natergater 0:60d48344319c 180 for(int count = 0; count < 10; count++){
natergater 0:60d48344319c 181
natergater 0:60d48344319c 182 checkDischarge();
natergater 0:60d48344319c 183 myled = 0;
natergater 0:60d48344319c 184 start1M();
natergater 0:60d48344319c 185 //pc.printf("1M\n");
natergater 0:60d48344319c 186
natergater 0:60d48344319c 187 if(fail){
natergater 0:60d48344319c 188 checkDischarge();
natergater 0:60d48344319c 189
natergater 0:60d48344319c 190 //pc.printf("100K\n");
natergater 0:60d48344319c 191 if(fail){// && leave){
natergater 0:60d48344319c 192 checkDischarge();
natergater 0:60d48344319c 193 start10K();
natergater 0:60d48344319c 194
natergater 0:60d48344319c 195 //pc.printf("10K\n");
natergater 0:60d48344319c 196 if(fail){// && leave){
natergater 0:60d48344319c 197 checkDischarge();
natergater 0:60d48344319c 198 start1K();
natergater 0:60d48344319c 199
natergater 0:60d48344319c 200 if(fail){// && leave){
natergater 0:60d48344319c 201 checkDischarge();
natergater 0:60d48344319c 202 start100();
natergater 0:60d48344319c 203
natergater 0:60d48344319c 204 if(fail){}//&& leave){}//sendErrorMsg();}
natergater 0:60d48344319c 205 }
natergater 0:60d48344319c 206 }
natergater 0:60d48344319c 207 }
natergater 0:60d48344319c 208 }
natergater 0:60d48344319c 209
natergater 0:60d48344319c 210
natergater 0:60d48344319c 211 timeElaps = t.read_ms();
natergater 0:60d48344319c 212 t.reset();
natergater 0:60d48344319c 213 t.start();
natergater 0:60d48344319c 214 t.stop();
natergater 0:60d48344319c 215
natergater 0:60d48344319c 216 microFarads = (((double)timeElaps-t.read_ms())/Rval);
natergater 0:60d48344319c 217 pc.printf("%f", microFarads);
natergater 0:60d48344319c 218 //pc.printf("This is the cap: %f", microFarads);
natergater 0:60d48344319c 219 }
natergater 0:60d48344319c 220 }
natergater 0:60d48344319c 221 }