Официальный сайт компании Arduino по адресу arduino.cc
Вольтметр с прогресс-баром
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пт, 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(" "); } }