#include <Wire.h>
#include <LiquidCrystal.h>
#include <hd44780.h>
#include "hd44780_I2Cexp.h"
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
//hd44780_I2Cexp lcd(0x20, I2Cexp_MCP23008, 7, 6, 5, 4, 3, 2, HIGH);
const byte woltomierz = A0; // Port, który będzie mierzyć napięcie.
int napiecie; // Wartość tego napięcia bez jednostek.
// Wzorce dużych cyfr
byte znak[320] = { 0b00111, 0b01111, 0b11110, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100,
0b11100, 0b11100, 0b11100, 0b11100, 0b11110, 0b11111, 0b01111, 0b00111,
0b11100, 0b11110, 0b01111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111,
0b00111, 0b00111, 0b00111, 0b00111, 0b01111, 0b11111, 0b11110, 0b11100,
0b00000, 0b00000, 0b00000, 0b00000, 0b00001, 0b00011, 0b00000, 0b00000,
0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00011, 0b00011,
0b00100, 0b01100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100,
0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11111, 0b11111,
0b00111, 0b01111, 0b11110, 0b11100, 0b11100, 0b01100, 0b00000, 0b00000,
0b00111, 0b01110, 0b11100, 0b11100, 0b11100, 0b11111, 0b11111, 0b11111,
0b11100, 0b11110, 0b01111, 0b00111, 0b00111, 0b00111, 0b01110, 0b11100,
0b00000, 0b00000, 0b00000, 0b00000, 0b00111, 0b11111, 0b11111, 0b11111,
0b00111, 0b01111, 0b11110, 0b11100, 0b11100, 0b01100, 0b00000, 0b00000,
0b00000, 0b00000, 0b01100, 0b11100, 0b11110, 0b11111, 0b01111, 0b00111,
0b11100, 0b11110, 0b01111, 0b00111, 0b00111, 0b00111, 0b01110, 0b11100,
0b11100, 0b01110, 0b00111, 0b00111, 0b01111, 0b11111, 0b11110, 0b11100,
0b00000, 0b00000, 0b00000, 0b00000, 0b00001, 0b00011, 0b00111, 0b01110,
0b11100, 0b11111, 0b11111, 0b11111, 0b00000, 0b00000, 0b00011, 0b00011,
0b00100, 0b01100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100,
0b11100, 0b11111, 0b11111, 0b11111, 0b11100, 0b11100, 0b11111, 0b11111,
0b11111, 0b11111, 0b11100, 0b11100, 0b11100, 0b11111, 0b11111, 0b11110,
0b00000, 0b00000, 0b01100, 0b11100, 0b11110, 0b11111, 0b01111, 0b00111,
0b11111, 0b11111, 0b00111, 0b00000, 0b00000, 0b11100, 0b11110, 0b01111,
0b00111, 0b00111, 0b00111, 0b00111, 0b01111, 0b11111, 0b11110, 0b11100,
0b00111, 0b01111, 0b11110, 0b11100, 0b11100, 0b11111, 0b11111, 0b11110,
0b11100, 0b11100, 0b11100, 0b11100, 0b11110, 0b11111, 0b01111, 0b00111,
0b11100, 0b11110, 0b01110, 0b00000, 0b00000, 0b11100, 0b11110, 0b01111,
0b00111, 0b00111, 0b00111, 0b00111, 0b01111, 0b11111, 0b11110, 0b11100,
0b11111, 0b11111, 0b11111, 0b11100, 0b00000, 0b00000, 0b00000, 0b00000,
0b00111, 0b01110, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b01100,
0b11111, 0b11111, 0b11111, 0b00111, 0b00111, 0b00111, 0b01110, 0b11100,
0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000,
0b00111, 0b01111, 0b11110, 0b11100, 0b11100, 0b11100, 0b01110, 0b00111,
0b01110, 0b11100, 0b11100, 0b11100, 0b11110, 0b11111, 0b01111, 0b00111,
0b11100, 0b11110, 0b01111, 0b00111, 0b00111, 0b00111, 0b01110, 0b11100,
0b01110, 0b00111, 0b00111, 0b00111, 0b01111, 0b11111, 0b11110, 0b11100,
0b00111, 0b01111, 0b11110, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100,
0b11110, 0b01111, 0b00111, 0b00000, 0b00000, 0b01110, 0b01111, 0b00111,
0b11100, 0b11110, 0b01111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111,
0b01111, 0b11111, 0b11111, 0b00111, 0b00111, 0b01111, 0b11110, 0b11100 };
void setup() {
lcd.begin(16, 2); // Inicjalizacja wyświetlacza LCD
}
void loop() {
napiecie = analogRead(woltomierz);
lcd.setCursor(8, 0); // Wyczyść miejsca, w których tkwią prawe cyfry.
lcd.print(" ");
lcd.setCursor(8, 1);
lcd.print(" ");
lcd.createChar(0, znak + 32 * ((napiecie / 1000) % 10)); // Lewa górna część dziesiątek.
lcd.createChar(1, znak + 32 * ((napiecie / 1000) % 10) + 8); // Lewa dolna część dziesiątek.
lcd.createChar(2, znak + 32 * ((napiecie / 1000) % 10) + 16); // Prawa górna część dziesiątek.
lcd.createChar(3, znak + 32 * ((napiecie / 1000) % 10) + 24); // Prawa dolna część dziesiątek.
lcd.createChar(4, znak + 32 * ((napiecie / 100) % 10)); // Lewa górna część jednostek.
lcd.createChar(5, znak + 32 * ((napiecie / 100) % 10) + 8); // Lewa dolna część jednostek.
lcd.createChar(6, znak + 32 * ((napiecie / 100) % 10) + 16); // Prawa górna część jednostek.
lcd.createChar(7, znak + 32 * ((napiecie / 100) % 10) + 24); // Prawa dolna część jednostek.
lcd.setCursor(4, 0); // Ustaw kursor na pozycji czwartej w wierszu górnym.
lcd.write(0); // Wyślij kolejno adresy górnych części grafik.
lcd.write(2);
lcd.write(4);
lcd.write(6);
lcd.setCursor(4, 1); // Ustaw kursor na pozycji czwartej w wierszu dolnym.
lcd.write(1); // Wyślij kolejno adresy górnych części grafik.
lcd.write(3);
lcd.write(5);
lcd.write(7);
delay(40); // Dobierz opóźnienie dla najlepszego efektu wizualnego.
lcd.setCursor(4, 0); // Wyczyść miejsca, w których tkwią lewe cyfry.
lcd.print(" ");
lcd.setCursor(4, 1);
lcd.print(" ");
lcd.createChar(0, znak + 32 * ((napiecie / 10) % 10)); // Lewa górna część dziesiątek.
lcd.createChar(1, znak + 32 * ((napiecie / 10) % 10) + 8); // Lewa dolna część dziesiątek.
lcd.createChar(2, znak + 32 * ((napiecie / 10) % 10) + 16); // Prawa górna część dziesiątek.
lcd.createChar(3, znak + 32 * ((napiecie / 10) % 10) + 24); // Prawa dolna część dziesiątek.
lcd.createChar(4, znak + 32 * (napiecie % 10)); // Lewa górna część jednostek.
lcd.createChar(5, znak + 32 * (napiecie % 10) + 8); // Lewa dolna część jednostek.
lcd.createChar(6, znak + 32 * (napiecie % 10) + 16); // Prawa górna część jednostek.
lcd.createChar(7, znak + 32 * (napiecie % 10) + 24); // Prawa dolna część jednostek.
lcd.setCursor(8, 0); // Ustaw kursor na pozycji ósmej w wierszu górnym.
lcd.write(0); // Wyślij kolejno adresy górnych części grafik.
lcd.write(2);
lcd.write(4);
lcd.write(6);
lcd.setCursor(8, 1); // Ustaw kursor na pozycji ósmej w wierszu dolnym.
lcd.write(1); // Wyślij kolejno adresy górnych części grafik.
lcd.write(3);
lcd.write(5);
lcd.write(7);
delay(40); // Dobierz opóźnienie dla najlepszego efektu wizualnego.
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd:VSS
lcd:VDD
lcd:V0
lcd:RS
lcd:RW
lcd:E
lcd:D0
lcd:D1
lcd:D2
lcd:D3
lcd:D4
lcd:D5
lcd:D6
lcd:D7
lcd:A
lcd:K
r1:1
r1:2