#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
// Konfiguracja dla wyświetlacza LCD podłączonego przez I2C (adres 0x27, typowy dla LCD1602)
// Adres I2C 0x27, 16 znaków x 2 linie
hd44780_I2Cexp lcd(0x27, 16, 2);
// Port, który będzie mierzyć napięcie
const byte woltomierz = A1;
// Wartość tego napięcia bez jednostek
int napiecie;
// Wartość tego napięcia w woltach
float napiecieV;
// Wartość tego napięcia dla bargrafu
byte bargraf;
void setup() {
// Inicjalizacja wyświetlacza LCD
lcd.begin(16, 2);
}
void loop() {
// Ustaw kursor na początku wyświetlacza
lcd.setCursor(0, 0);
// Pobierz wartość napięcia z portu woltomierza
napiecie = analogRead(woltomierz);
// Wyświetl ją
lcd.print(napiecie);
// Wyświetl cztery spacje
lcd.print(F(" "));
// Ustaw kursor na pzycji szóstej
lcd.setCursor(6, 0);
// Wyświetl zmierzoną wartość w formacie HEX
lcd.print(napiecie, HEX);
// Wyświetl trzy spacje
lcd.print(F(" "));
// Ustaw kursor na pzycji jedenastej
lcd.setCursor(11, 0);
// Przelicz dziesięciobitową wartość na wolty
napiecieV = napiecie * (5.0 / 1024.0);
// Wyświetl napięcie z dokładnością do trzech cyfr po przecinku
lcd.print(napiecieV, 3);
// Ustaw kursor na początku dolnego wiersza
lcd.setCursor(0, 1);
// Oblicz długość bargrafu
bargraf = napiecie / 64;
// Powtarzaj zgodnie z długością bargrafu
for (byte x = 0; x <= bargraf; x++) {
// Wyświetl wybraną grafikę
lcd.write(219);
}
// Wyświetl 15 spacji
lcd.print(F(" "));
}