Nate Chandler
/
capacitor
4180 Final Project
Revision 0:60d48344319c, committed 2016-12-03
- Comitter:
- natergater
- Date:
- Sat Dec 03 00:04:32 2016 +0000
- Commit message:
- 4180 Project
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 60d48344319c main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Dec 03 00:04:32 2016 +0000 @@ -0,0 +1,221 @@ +#include "mbed.h" + +Serial pc(USBTX, USBRX); + +double xLoc, yLoc; + +DigitalOut myled(LED1); +DigitalOut control(p21); + +DigitalOut charge1M(p5);//1M output +DigitalOut charge100K(p6);//100K output +DigitalOut charge10K(p7);//10K output +DigitalOut charge1K(p8);//1K output +DigitalOut charge100(p9);//100 output + +AnalogIn fullIndic(p15); +AnalogIn emptyIndic(p19); +DigitalInOut pin20(p20); +Timer t; +int timeElaps; +float microFarads; +double changeTime = 1000; + +double R100 = 98.94; +double R1K = 981.7; +double R10K = 9922.0; +double R100K = 99200.0; +double R1M = 987200.0; + +double Rval = 0.0; + +bool fail; +bool leave = true; +float RC=0.54;//53; + +char startSig[5]; + +bool checkForC(void) +{ + startSig[0] = pc.getc(); + if(startSig[0] == 'c'){return true;} + return false; +} + +void checkDischarge(void) +{ + + myled = 1; + + charge1M = 0; + charge100K = 0; + charge10K = 0; + charge1K = 0; + charge100 = 0; + + control = 1; + //bool success = true; + charge1M = 0; + pin20.output(); + pin20 = 0; + while(fullIndic.read() > 0.07){}//pc.printf("read: %f\n",fullIndic.read());} +} + +void start1M(void) +{ + Rval = R1M; + fail = false; + control = 0; + pin20.input(); + pin20.mode(PullNone); + charge1M = 1; + t.reset(); + t.start(); + + while(fullIndic < RC){ + if(t.read_ms() > changeTime){ + fail = true; + charge1M = 0; + break; + } + } + t.stop(); +} + +void start100K(void) +{ + Rval = R100K; + fail = false; + control = 0; + pin20.input(); + pin20.mode(PullNone); + charge100K = 1; + t.reset(); + t.start(); + + while(fullIndic < RC){ + if(t.read_ms() > changeTime){ + fail = true; + charge100K = 0; + break; + } + } + t.stop(); +} + +void start10K(void) +{ + Rval = R10K; + fail = false; + control = 0; + pin20.input(); + pin20.mode(PullNone); + charge10K = 1; + t.reset(); + t.start(); + + while(fullIndic < RC){ + if(t.read_ms() > changeTime){ + fail = true; + charge10K = 0; + break; + } + } + t.stop(); +} + +void start1K(void) +{ + Rval = R1K; + fail = false; + control = 0; + pin20.input(); + pin20.mode(PullNone); + charge1K = 1; + t.reset(); + t.start(); + + while(fullIndic < RC){ + if(t.read_ms() > changeTime){ + fail = true; + charge1K = 0; + break; + } + } + t.stop(); +} + +void start100(void) +{ + Rval = R100; + fail = false; + control = 0; + pin20.input(); + pin20.mode(PullNone); + charge100 = 1; + t.reset(); + t.start(); + + while(fullIndic < RC){ + /*if(t.read_ms() > changeTime){ + fail = true; + charge100 = 0; + break; + }*/ + } + t.stop(); +} + +void sendErrorMsg(void){ + pc.printf("could not read capacitor\n"); +} + +int main() { + while(1){ + + leave = true; + startSig [0] = pc.getc(); + while(startSig[0] != 's'){startSig [0] = pc.getc();} + + for(int count = 0; count < 10; count++){ + + checkDischarge(); + myled = 0; + start1M(); + //pc.printf("1M\n"); + + if(fail){ + checkDischarge(); + + //pc.printf("100K\n"); + if(fail){// && leave){ + checkDischarge(); + start10K(); + + //pc.printf("10K\n"); + if(fail){// && leave){ + checkDischarge(); + start1K(); + + if(fail){// && leave){ + checkDischarge(); + start100(); + + if(fail){}//&& leave){}//sendErrorMsg();} + } + } + } + } + + + timeElaps = t.read_ms(); + t.reset(); + t.start(); + t.stop(); + + microFarads = (((double)timeElaps-t.read_ms())/Rval); + pc.printf("%f", microFarads); + //pc.printf("This is the cap: %f", microFarads); + } + } +}
diff -r 000000000000 -r 60d48344319c mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Dec 03 00:04:32 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/d75b3fe1f5cb \ No newline at end of file