Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 20, 4);
- const int res0 = 5, res1 = 4, res2 = 3, res3 = 2, analog = 7;
- const double toVoltage = 0.004887586;
- void setup() {
- const byte ohmChar[] = {0x0E, 0x11, 0x11, 0x11, 0x0A, 0x0A, 0x1B, 0x00};
- pinMode(res0, OUTPUT);
- pinMode(res1, OUTPUT);
- pinMode(res2, OUTPUT);
- pinMode(res3, OUTPUT);
- digitalWrite(res0, LOW);
- digitalWrite(res1, LOW);
- digitalWrite(res2, LOW);
- digitalWrite(res3, LOW);
- lcd.begin();
- lcd.createChar(0, ohmChar);
- lcd.home();
- }
- void loop() {
- int analogVal0, analogVal1, analogVal2, analogVal3, resistor;
- double Vout, ohm;
- digitalWrite(res0, HIGH);
- digitalWrite(res1, LOW);
- digitalWrite(res2, LOW);
- digitalWrite(res3, LOW);
- analogVal0 = analogRead(analog);
- delay(25);
- digitalWrite(res0, LOW);
- digitalWrite(res1, HIGH);
- digitalWrite(res2, LOW);
- digitalWrite(res3, LOW);
- analogVal1 = analogRead(analog);
- delay(25);
- digitalWrite(res0, LOW);
- digitalWrite(res1, LOW);
- digitalWrite(res2, HIGH);
- digitalWrite(res3, LOW);
- analogVal2 = analogRead(analog);
- delay(25);
- digitalWrite(res0, LOW);
- digitalWrite(res1, LOW);
- digitalWrite(res2, LOW);
- digitalWrite(res3, HIGH);
- analogVal3 = analogRead(analog);
- delay(25);
- lcd.clear();
- lcd.setCursor(0, 3);
- if(analogVal3 >= 500) {
- Vout = analogVal3 * toVoltage;
- ohm = Vout / ((5-Vout-0.5) / 100000); // Voltage drop ~0.5V
- resistor = 3;
- } else if(analogVal3 < 500 && analogVal2 >= 450) {
- Vout = analogVal2 * toVoltage;
- ohm = Vout / ((5-Vout-1.0) / 10000); // Voltage drop ~1.0V
- resistor = 2;
- } else if(analogVal3 < 450 && analogVal2 < 450 && analogVal1 >= 450) {
- Vout = analogVal1 * toVoltage;
- ohm = Vout / ((5-Vout-0.475) / 1000); // Voltage drop ~0.475V
- resistor = 1;
- } else if(analogVal3 < 450 && analogVal2 < 450 && analogVal1 < 450 && analogVal0 >= 0) {
- Vout = analogVal0 * toVoltage;
- ohm = Vout / ((5-Vout-1.255) / 100); // Voltage drop ~1.255V
- resistor = 0;
- }
- lcd.setCursor(0, 0);
- if(ohm >= 0 && ohm < 1000) {
- lcd.print(ohm);
- } else if(ohm >= 1000 && ohm < 1000000) {
- lcd.print(ohm/1000);
- lcd.print('k');
- } else if(ohm >= 1000000) {
- lcd.print(ohm/1000000);
- lcd.print('M');
- }
- lcd.write(0);
- lcd.setCursor(13, 0);
- lcd.print("V0:");
- lcd.print(analogVal0);
- lcd.setCursor(13, 1);
- lcd.print("V1:");
- lcd.print(analogVal1);
- lcd.setCursor(13, 2);
- lcd.print("V2:");
- lcd.print(analogVal2);
- lcd.setCursor(13, 3);
- lcd.print("V3:");
- lcd.print(analogVal3);
- lcd.setCursor(0, 3);
- switch(resistor) {
- case 0: lcd.print("100"); break;
- case 1: lcd.print("1k"); break;
- case 2: lcd.print("10k"); break;
- case 3: lcd.print("100k"); break;
- }
- lcd.write(0);
- delay(1000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement