4 Wire LCD control with BL and contrast using Shift Register

Looking for the ability to control an LCD from Arduino without having to use 12 pins, I designed a breakout board featuring a 74HC595 shift register and an NPN transistor with the ability to control the display (including backlight control) with either 4 wires, allowing control of contrast through code, or 3 wires, allowing the addition of a potentiometer for static contrast. If controlling contrast via code, the included modified LiquidCrystal library adds fade_in(), fade_out(), and highlight() functions. In addition lcd.backlight() and lcd.no_backlight() will control whether the backlight is active or not. The project was recreated in Fritzing showing a breadboard diagram, schematic, and recreation of EAGLE PCB design used in my case.”

Link