#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
byte bargraf;
// Wartość poprzednio zmierzonego napięcia
int napiecieStare = 255;
byte znak[160] = { 0b00111, 0b01111, 0b01110, 0b01110, 0b01110, 0b01110, 0b01111, 0b00111, // Serif
0b11100, 0b11110, 0b01110, 0b01110, 0b01110, 0b01110, 0b11110, 0b11100,
0b00000, 0b00001, 0b00011, 0b00111, 0b00000, 0b00000, 0b00000, 0b00011,
0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11110,
0b00111, 0b01111, 0b01110, 0b00000, 0b00000, 0b00011, 0b00111, 0b01111,
0b11100, 0b11110, 0b01110, 0b01110, 0b11100, 0b11000, 0b11110, 0b11110,
0b00111, 0b01111, 0b01100, 0b00001, 0b00000, 0b01100, 0b01111, 0b00111,
0b11100, 0b11110, 0b01110, 0b11100, 0b01110, 0b01110, 0b11110, 0b11100,
0b00000, 0b00000, 0b00001, 0b00011, 0b00110, 0b01111, 0b01111, 0b00000,
0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11110, 0b11110, 0b11100,
0b01111, 0b01111, 0b01110, 0b01111, 0b00000, 0b01110, 0b01111, 0b00111,
0b11100, 0b11100, 0b00000, 0b11100, 0b01110, 0b01110, 0b11110, 0b11100,
0b00111, 0b01111, 0b01110, 0b01111, 0b01110, 0b01110, 0b01111, 0b00111,
0b11100, 0b11100, 0b00000, 0b11100, 0b01110, 0b01110, 0b11110, 0b11100,
0b01111, 0b01111, 0b01000, 0b00000, 0b00001, 0b00011, 0b00111, 0b01111,
0b11110, 0b11110, 0b01110, 0b11100, 0b11000, 0b10000, 0b00000, 0b00000,
0b00111, 0b01111, 0b01110, 0b00111, 0b01110, 0b01110, 0b01111, 0b00111,
0b11100, 0b11110, 0b01110, 0b11100, 0b01110, 0b01110, 0b11110, 0b11100,
0b00111, 0b01111, 0b01110, 0b01110, 0b00111, 0b00000, 0b00111, 0b00111,
0b11100, 0b11110, 0b01110, 0b01110, 0b11110, 0b01110, 0b11110, 0b11100
};
/*
byte znak[160] = { 0b00111, 0b01111, 0b01110, 0b01110, 0b01110, 0b01110, 0b01111, 0b00111, // Sans serif
0b11100, 0b11110, 0b01110, 0b01110, 0b01110, 0b01110, 0b11110, 0b11100,
0b00000, 0b00001, 0b00011, 0b00111, 0b00000, 0b00000, 0b00000, 0b00000,
0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100,
0b00111, 0b01111, 0b01110, 0b00000, 0b00001, 0b00011, 0b00111, 0b01111,
0b11100, 0b11110, 0b01110, 0b11100, 0b11000, 0b10000, 0b11110, 0b11110,
0b00111, 0b01111, 0b01110, 0b00000, 0b00000, 0b01110, 0b01111, 0b00111,
0b11100, 0b11110, 0b01110, 0b11100, 0b11110, 0b01110, 0b11110, 0b11100,
0b00000, 0b00000, 0b00001, 0b00011, 0b00110, 0b01111, 0b01111, 0b00000,
0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11110, 0b11110, 0b11100,
0b01111, 0b01111, 0b01110, 0b01111, 0b01111, 0b00000, 0b01111, 0b01111,
0b11100, 0b11100, 0b00000, 0b11100, 0b11110, 0b01110, 0b11110, 0b11100,
0b00111, 0b01111, 0b01110, 0b01111, 0b01111, 0b01110, 0b01111, 0b00111,
0b11100, 0b11100, 0b00000, 0b11100, 0b11110, 0b01110, 0b11110, 0b11100,
0b01111, 0b01111, 0b00000, 0b00000, 0b00001, 0b00011, 0b00111, 0b01110,
0b11110, 0b11110, 0b01110, 0b11100, 0b11000, 0b10000, 0b00000, 0b00000,
0b00111, 0b01111, 0b01110, 0b00111, 0b01111, 0b01110, 0b01111, 0b00111,
0b11100, 0b11110, 0b01110, 0b11100, 0b11110, 0b01110, 0b11110, 0b11100,
0b00111, 0b01111, 0b01110, 0b01111, 0b00111, 0b00000, 0b00111, 0b00111,
0b11100, 0b11110, 0b01110, 0b11110, 0b11110, 0b01110, 0b11110, 0b11100 };
byte znak[160] = { 0b01111, 0b01111, 0b01110, 0b01110, 0b01110, 0b01110, 0b01111, 0b01111, // Block
0b11110, 0b11110, 0b01110, 0b01110, 0b01110, 0b01110, 0b11110, 0b11110,
0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000,
0b11110, 0b11110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110,
0b01111, 0b01111, 0b00000, 0b01111, 0b01111, 0b01110, 0b01111, 0b01111,
0b11110, 0b11110, 0b01110, 0b11110, 0b11110, 0b00000, 0b11110, 0b11110,
0b01111, 0b01111, 0b00000, 0b00011, 0b00011, 0b00000, 0b01111, 0b01111,
0b11110, 0b11110, 0b01110, 0b11110, 0b11110, 0b01110, 0b11110, 0b11110,
0b01110, 0b01110, 0b01110, 0b01111, 0b01111, 0b00000, 0b00000, 0b00000,
0b01110, 0b01110, 0b01110, 0b11110, 0b11110, 0b01110, 0b01110, 0b01110,
0b01111, 0b01111, 0b01110, 0b01111, 0b01111, 0b00000, 0b01111, 0b01111,
0b11110, 0b11110, 0b00000, 0b11110, 0b11110, 0b01110, 0b11110, 0b11110,
0b01111, 0b01111, 0b01110, 0b01111, 0b01111, 0b01110, 0b01111, 0b01111,
0b11110, 0b11110, 0b00000, 0b11110, 0b11110, 0b01110, 0b11110, 0b11110,
0b01111, 0b01111, 0b01110, 0b01110, 0b00000, 0b00000, 0b00000, 0b00000,
0b11110, 0b11110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110,
0b01111, 0b01111, 0b01110, 0b01111, 0b01111, 0b01110, 0b01111, 0b01111,
0b11110, 0b11110, 0b01110, 0b11110, 0b11110, 0b01110, 0b11110, 0b11110,
0b01111, 0b01111, 0b01110, 0b01111, 0b01111, 0b00000, 0b01111, 0b01111,
0b11110, 0b11110, 0b01110, 0b11110, 0b11110, 0b01110, 0b11110, 0b11110 };
byte znak[160] = { 0b00111, 0b01111, 0b01110, 0b01110, 0b01110, 0b01111, 0b00111, 0b00000, // Serif, 7 wierszy.
0b11100, 0b11110, 0b01110, 0b01110, 0b01110, 0b11110, 0b11100, 0b00000,
0b00000, 0b00001, 0b00011, 0b00111, 0b00000, 0b00000, 0b00000, 0b00000,
0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b00000,
0b00111, 0b01111, 0b01100, 0b00001, 0b00011, 0b00111, 0b01111, 0b00000,
0b11100, 0b11110, 0b01110, 0b11100, 0b11000, 0b11110, 0b11110, 0b00000,
0b00111, 0b01111, 0b01100, 0b00001, 0b01100, 0b01111, 0b00111, 0b00000,
0b11100, 0b11110, 0b01110, 0b11100, 0b01110, 0b11110, 0b11100, 0b00000,
0b00000, 0b00000, 0b00001, 0b00011, 0b00110, 0b01111, 0b00000, 0b00000,
0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11110, 0b11100, 0b00000,
0b01111, 0b01110, 0b01111, 0b00000, 0b01110, 0b01111, 0b00111, 0b00000,
0b11100, 0b00000, 0b11100, 0b01110, 0b01110, 0b11110, 0b11100, 0b00000,
0b00111, 0b01110, 0b01111, 0b01110, 0b01110, 0b01111, 0b00111, 0b00000,
0b11100, 0b00000, 0b11100, 0b01110, 0b01110, 0b11110, 0b11100, 0b00000,
0b01111, 0b01111, 0b01000, 0b00000, 0b00001, 0b00011, 0b00011, 0b00000,
0b11110, 0b11110, 0b01110, 0b11100, 0b11000, 0b10000, 0b10000, 0b00000,
0b00111, 0b01111, 0b01110, 0b00111, 0b01110, 0b01111, 0b00111, 0b00000,
0b11100, 0b11110, 0b01110, 0b11100, 0b01110, 0b11110, 0b11100, 0b00000,
0b00111, 0b01111, 0b01110, 0b01110, 0b00111, 0b00000, 0b00111, 0b00000,
0b11100, 0b11110, 0b01110, 0b01110, 0b11110, 0b01110, 0b11100, 0b00000 };
*/
void setup() {
lcd.begin(16, 2); // Inicjalizacja wyświetlacza LCD
lcd.backlight(); // Włączenie podświetlenia
lcd.clear(); // Wyczyść wyświetlacz
}
void loop() {
while (abs(napiecie - napiecieStare) < 4) {
napiecie = analogRead(woltomierz);
}
napiecieStare = napiecie;
lcd.createChar(0, znak + 16 * ((napiecie / 1000) % 10));
lcd.createChar(1, znak + 16 * ((napiecie / 1000) % 10) + 8);
lcd.createChar(2, znak + 16 * ((napiecie / 100) % 10));
lcd.createChar(3, znak + 16 * ((napiecie / 100) % 10) + 8);
lcd.createChar(4, znak + 16 * ((napiecie / 10) % 10));
lcd.createChar(5, znak + 16 * ((napiecie / 10) % 10) + 8);
lcd.createChar(6, znak + 16 * (napiecie % 10));
lcd.createChar(7, znak + 16 * (napiecie % 10) + 8);
lcd.setCursor(4, 0);
lcd.write(0);
lcd.write(1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
lcd.write(5);
lcd.write(6);
lcd.write(7);
}