/ Freq_Meter

Ohmmeter_Code.cpp

Committer:
thomasosullivan
Date:
2020-04-01
Revision:
1:5aacfef29ca8
Parent:
0:7f4ed364f7ea
Child:
2:6077294f7007

File content as of revision 1:5aacfef29ca8:

/*
hello
*/
//Case x:

lcd.locate(0,0);
lcd.printf("Resistance: "); //display on top line

DigitalOut 100ohm(D6) = 0; //Transistor connected to 100ohm resistor set to short circuit
DigitalOut 1kohm(D7) = 1; //All others set to open circuit      
DigitalOut 10kohm(D8) = 1;
DigitalOut 100kohm(D9) = 1;
DigitalOut 1Mohm(D10) = 1;
DigitalOut 10Mohm(D11) = 1;

AnalogIn vo(A0);

double vout = (3.3 * vo)/ 4095;

double rest;

double vt;

rest = (vout * 100) / (3.3 - vout);

switch (rest)
{
    case 550: 
    vt = 0.0647875;
    runknown = (vout * 100) / (3.3 - vt - vout);
    if (runknown < 10){
        lcd.printf("Out of Range");
    }
    else{
        lcd.locate(0,1);
        lcd.printf("%u Ω", runknown);
        }
        break;
        
    case 5500:
    vt = 0.0189; 
    100ohm = 1;
    1kohm = 0;
    vout = (3.3 * vo)/ 4095;
    runknown = (vout * 1000) / (3.3 - vt - vout); 
    lcd.locate(0,1);
    if (runknown < 1000){
        lcd.printf("%u Ω", runknown);
    }
    else {
        runknown = runknown / 1000;
        lcd.printf("%.2f kΩ", runknown);
        break;
        
    case 55000:
    vt = 0.0075148;
    100ohm = 1;
    10kohm = 0;
    vout = (3.3 * vo)/ 4095; 
    runknown = (vout * 10000) / (3.3 - vt - vout);
    lcd.locate(0,1);
    runknown = runknown / 1000;
    lcd.printf("%.2f kΩ", runknown);
        break;
        
    case 550000: 
    vt = 0.00612;
    100ohm = 1;
    100kohm = 0;
    vout = (3.3 * vo)/ 4095;
    runknown = (vout * 100000) / (3.3 - vt - vout);
    
    lcd.locate(0,1);
    
    if (runknown < 1000000){
        runknown = runknown / 1000;
        lcd.printf("%.2f kΩ", runknown);
        }
    else {
        runknown = runknown / 1000000;
        lcd.printf("%.2f MΩ", runknown);
        break;
        
    case 5500000: 
    vt = 0.0059684;
    100ohm = 1;
    1Mohm = 0;
    vout = (3.3 * vo)/ 4095;
    runknown = (vout * 1000000) / (3.3 - vt - vout);
    
    lcd.locate(0,1);
    runknown = runknown / 1000000;
    lcd.printf("%.2f MΩ", runknown);
        break;
        
    case 10000000:
    vt = 0.0059526; 
    100ohm = 1;
    10Mohm = 0;
    vout = (3.3 * vo)/ 4095;
    runknown = (vout * 10000000) / (3.3 - vt - vout);
    
    lcd.locate(0,1);
    runknown = runknown / 1000000;
    lcd.printf("%.2f MΩ", runknown);
        break;
        
    default:
    lcd.locate(0,1);
    lcd.printf("Out of Range");
    break;
    
}