Advertisement
LeventeDaradici

Digital Voltmeter ARDUINO

Sep 5th, 2021
2,518
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include <LiquidCrystal_I2C.h>
  2. LiquidCrystal_I2C lcd(0x27,16,2);
  3.  
  4. double sensorValue1 = 0;
  5. double sensorValue2 = 0;
  6. int crosscount = 0;
  7. int climb_flag = 0;
  8. int val[100];
  9. int max_v = 0;
  10. double VmaxD = 0;
  11. double VeffD = 0;
  12. double Veff = 0;
  13. int xCoord = 0;
  14.  
  15. void setup() {
  16.   Serial.begin(9600);
  17.   lcd.init();
  18.   lcd.backlight();
  19.   lcd.clear();
  20.   lcd.setCursor(0,0);
  21.   lcd.print("Daradici Levente");
  22.   lcd.setCursor(2,1);
  23.   lcd.print("AC Voltmeter");
  24.   delay(3000);
  25.   lcd.clear();
  26. }
  27.  
  28. void loop() {
  29.  
  30.   for ( int i = 0; i < 100; i++ ) {
  31.     sensorValue1 = analogRead(A0);
  32.     if (analogRead(A0) > 511) {
  33.       val[i] = sensorValue1;
  34.     }
  35.     else {
  36.       val[i] = 0;
  37.     }
  38.     delay(1);
  39.   }
  40.  
  41.   max_v = 0;
  42.  
  43.   for ( int i = 0; i < 100; i++ )
  44.   {
  45.     if ( val[i] > max_v )
  46.     {
  47.       max_v = val[i];
  48.     }
  49.     val[i] = 0;
  50.   }
  51.   if (max_v != 0) {
  52.  
  53.  
  54.     VmaxD = max_v;
  55.     VeffD = VmaxD / sqrt(2);
  56.     Veff = (((VeffD - 420.76) / -90.24) * -210.2) + 210.2;
  57.   }
  58.   else {
  59.     Veff = 0;
  60.   }
  61.   Serial.print("Voltage: ");
  62.   Serial.println(Veff);
  63.   VmaxD = 0;
  64.  
  65.   if (Veff < 1000) { xCoord = 8; }
  66.   if (Veff < 100) { xCoord = 9; }
  67.   if (Veff < 10) { xCoord = 10; }
  68.   lcd.clear();  
  69.   lcd.setCursor(xCoord,1);
  70.   lcd.print(Veff);
  71.   lcd.setCursor(15,1);
  72.   lcd.print("V");
  73.   delay(500);
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement