#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 in PCF8574 by NXP and Set to 0x3F in PCF8574A by Ti
LiquidCrystal_I2C lcd(0x27, 16, 2);

byte customChar0[] = {0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18};
byte customChar1[] = {0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x11};
byte customChar2[] = {0x18, 0x1C, 0x0E, 0x07, 0x03, 0x03, 0x03, 0x03};
byte customChar3[] = {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F};
byte customChar4[] = {0x11, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F};
byte customChar5[] = {0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x1F, 0x1F};

void setup() {
  lcd.init();
  lcd.backlight();
  
  lcd.createChar(0, customChar0);
  lcd.createChar(1, customChar1);
  lcd.createChar(2, customChar2);
  lcd.createChar(3, customChar3);
  lcd.createChar(4, customChar4);
  lcd.createChar(5, customChar5);
  
  lcd.home();
  
  lcd.write(0);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(0, 1);
  lcd.write(3);
  lcd.write(4);
  lcd.write(5);
}

void loop() { 
  lcd.setCursor(3, 0);
  lcd.print("CPU");
  lcd.setCursor(7, 1);
  lcd.print("48");
  lcd.write((char)223);
  lcd.print("C");
  lcd.setCursor(12, 1);
  lcd.print("100%");
  lcd.setCursor(7, 0);
  lcd.print("3500 MHz");

}