Вольтметр с прогресс-баром
- Войдите на сайт для отправки комментариев
Пт, 13/09/2019 - 23:51
Доброго!
Вольтметр цифровой на 1602 с прогресс-баром(аналоговой шкалой) внизу для визуального наблюдения динамики потребляемого тока. ( На данный момент в БП стоит стрелочный индикатор на ток, надумал заменить.
Схема стандартная, фото попытаюсь добавить). Для ремонта ноутбуков, ( и не только), по динамике потребляемого тока можно определить определённую степень исправности. Код составлен из разных заготовок, на скорую руку, строго не пинайте.


#include <LiquidCrystal.h>
#define lenght 16.0
double percent=100.0;
unsigned char b;
unsigned int peace;
// рисунок бар
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
byte p1[8] = {
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10};
byte p2[8] = {
0x18,
0x18,
0x18,
0x18,
0x18,
0x18,
0x18,
0x18};
byte p3[8] = {
0x1C,
0x1C,
0x1C,
0x1C,
0x1C,
0x1C,
0x1C,
0x1C};
byte p4[8] = {
0x1E,
0x1E,
0x1E,
0x1E,
0x1E,
0x1E,
0x1E,
0x1E};
byte p5[8] = {
0x1F,
0x1F,
0x1F,
0x1F,
0x1F,
0x1F,
0x1F,
0x1F};
void setup() {
delay(100);
lcd.createChar(0, p1);
lcd.createChar(1, p2);
lcd.createChar(2, p3); //бар
lcd.createChar(3, p4);
lcd.createChar(4, p5);
lcd.begin(16, 2);
/////////10 bit 0...1023 /////////
pinMode(A0,INPUT); // U1
pinMode(A2,INPUT); // A1
}
int a0,a1,n0,n1;
float u0,u1;
void loop(){
a0 = analogRead(A0); //напруга
a1 = analogRead(A2); //ток
u0 = a0*30.0/1023;//напруга
u1 = a1*10.0/1023; //ток
if(u0>=10){n0=1;}else{n0=2;}
if(u1>=10){n1=1;}else{n1=2;}
lcd.setCursor(0,0);
lcd.print(u0,n0);
lcd.print(" B ");
lcd.print(u1,n1);
lcd.print(" A ");
delay(50);
unsigned int value = analogRead(2);
percent = value/1024.0*300.0;
lcd.print(percent);
lcd.setCursor(0,1);
double a=lenght/50*percent;
if (a>=1) {
for (int i=1;i<a;i++) {
lcd.write(4);
b=i;
}
a=a-b;
}
peace=a*5;
switch (peace) {
case 0:
break;
case 1:
lcd.print((char)0);
break;
case 2:
lcd.write(1);
break;
case 3:
lcd.write(2);
break;
case 4:
lcd.write(3);
break;
}
for (int i =0;i<(lenght-b);i++) {
lcd.print(" ");
}
}