![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
4180 Final Project
main.cpp@0:60d48344319c, 2016-12-03 (annotated)
- Committer:
- natergater
- Date:
- Sat Dec 03 00:04:32 2016 +0000
- Revision:
- 0:60d48344319c
4180 Project
Who changed what in which revision?
User | Revision | Line number | New 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 | } |