Advertisement
MateuszJasek

Arduino Omomierz

Aug 28th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.92 KB | None | 0 0
  1. #include <LiquidCrystal_I2C.h>
  2.  
  3. LiquidCrystal_I2C lcd(0x27, 20, 4);
  4.  
  5. const int res0 = 5, res1 = 4, res2 = 3, res3 = 2, analog = 7;
  6. const double toVoltage = 0.004887586;
  7.  
  8. void setup() {
  9.   const byte ohmChar[] = {0x0E, 0x11, 0x11, 0x11, 0x0A, 0x0A, 0x1B, 0x00};
  10.  
  11.   pinMode(res0, OUTPUT);
  12.   pinMode(res1, OUTPUT);
  13.   pinMode(res2, OUTPUT);
  14.   pinMode(res3, OUTPUT);
  15.  
  16.   digitalWrite(res0, LOW);
  17.   digitalWrite(res1, LOW);
  18.   digitalWrite(res2, LOW);
  19.   digitalWrite(res3, LOW);
  20.  
  21.   lcd.begin();
  22.   lcd.createChar(0, ohmChar);
  23.   lcd.home();
  24. }
  25.  
  26. void loop() {
  27.   int analogVal0, analogVal1, analogVal2, analogVal3, resistor;
  28.   double Vout, ohm;
  29.  
  30.   digitalWrite(res0, HIGH);
  31.   digitalWrite(res1, LOW);
  32.   digitalWrite(res2, LOW);
  33.   digitalWrite(res3, LOW);
  34.   analogVal0 = analogRead(analog);
  35.   delay(25);
  36.  
  37.   digitalWrite(res0, LOW);
  38.   digitalWrite(res1, HIGH);
  39.   digitalWrite(res2, LOW);
  40.   digitalWrite(res3, LOW);
  41.   analogVal1 = analogRead(analog);
  42.   delay(25);
  43.  
  44.   digitalWrite(res0, LOW);
  45.   digitalWrite(res1, LOW);
  46.   digitalWrite(res2, HIGH);
  47.   digitalWrite(res3, LOW);
  48.   analogVal2 = analogRead(analog);
  49.   delay(25);
  50.  
  51.   digitalWrite(res0, LOW);
  52.   digitalWrite(res1, LOW);
  53.   digitalWrite(res2, LOW);
  54.   digitalWrite(res3, HIGH);
  55.   analogVal3 = analogRead(analog);
  56.   delay(25);
  57.  
  58.   lcd.clear();
  59.   lcd.setCursor(0, 3);
  60.  
  61.   if(analogVal3 >= 500) {
  62.     Vout = analogVal3 * toVoltage;
  63.     ohm = Vout / ((5-Vout-0.5) / 100000); //  Voltage drop ~0.5V
  64.     resistor = 3;
  65.    
  66.   } else if(analogVal3 < 500 && analogVal2 >= 450) {
  67.     Vout = analogVal2 * toVoltage;
  68.     ohm = Vout / ((5-Vout-1.0) / 10000);  //  Voltage drop ~1.0V
  69.     resistor = 2;
  70.    
  71.   } else if(analogVal3 < 450 && analogVal2 < 450 && analogVal1 >= 450) {
  72.     Vout = analogVal1 * toVoltage;
  73.     ohm = Vout / ((5-Vout-0.475) / 1000); //  Voltage drop ~0.475V
  74.     resistor = 1;
  75.    
  76.   } else if(analogVal3 < 450 && analogVal2 < 450 && analogVal1 < 450 && analogVal0 >= 0) {
  77.     Vout = analogVal0 * toVoltage;
  78.     ohm = Vout / ((5-Vout-1.255) / 100);  // Voltage drop ~1.255V
  79.     resistor = 0;
  80.   }
  81.  
  82.   lcd.setCursor(0, 0);
  83.  
  84.   if(ohm >= 0 && ohm < 1000) {
  85.     lcd.print(ohm);
  86.   } else if(ohm >= 1000 && ohm < 1000000) {
  87.     lcd.print(ohm/1000);
  88.     lcd.print('k');
  89.   } else if(ohm >= 1000000) {
  90.     lcd.print(ohm/1000000);
  91.     lcd.print('M');
  92.   }
  93.    
  94.    
  95.   lcd.write(0);
  96.  
  97.    
  98.   lcd.setCursor(13, 0);
  99.   lcd.print("V0:");
  100.   lcd.print(analogVal0);
  101.    
  102.   lcd.setCursor(13, 1);
  103.   lcd.print("V1:");
  104.   lcd.print(analogVal1);
  105.    
  106.   lcd.setCursor(13, 2);
  107.   lcd.print("V2:");
  108.   lcd.print(analogVal2);
  109.    
  110.   lcd.setCursor(13, 3);
  111.   lcd.print("V3:");
  112.   lcd.print(analogVal3);
  113.  
  114.   lcd.setCursor(0, 3);
  115.   switch(resistor) {
  116.     case 0: lcd.print("100");   break;
  117.     case 1: lcd.print("1k");    break;
  118.     case 2: lcd.print("10k");   break;
  119.     case 3: lcd.print("100k");  break;
  120.   }
  121.   lcd.write(0);
  122.  
  123.   delay(1000);
  124.  
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement