About This Tool
This is a free, browser-based tool for designing custom 8×8 pixel characters compatible with the HD44780 LCD controller used in Arduino LCD 1602 (16 columns × 2 rows) modules.
What it does
Lets users draw an 8×8 pixel grid, preview the glyph on a simulated green-backlit LCD,
and copy a ready-to-use byte customChar[8] array for Arduino sketches.
How it works
100% client-side JavaScript — no server, no database, no account. All processing happens in the visitor's browser. Works offline after first load.
Target audience
Arduino hobbyists, makers, and students wiring LCD 1602 displays to Uno/Nano boards who need custom icons (heart, battery, WiFi, arrows) without manual hex calculation.
Output format
Eight hexadecimal bytes — one per row — compatible with Arduino
lcd.createChar(slot, customChar) and the LiquidCrystal library.
Technical Details
- Character size: 8×8 pixels (5×8 visible on standard LCD; columns 0 and 6–7 are often unused margin)
- Byte encoding: Each row is one byte; bit 0 = leftmost pixel, bit 7 = rightmost pixel
- CGRAM slots: HD44780 supports 8 custom characters (slots 0–7) simultaneously
- Libraries: LiquidCrystal (parallel) or LiquidCrystal_I2C (I2C backpack)
- Dependencies: None — pure HTML, CSS, and vanilla JavaScript
Typical Usage Flow
- Draw or select a preset icon in the pixel grid
- Preview the character in the LCD mockup panel
- Copy the generated byte array
- Paste into Arduino IDE and call
lcd.createChar(0, customChar) - Display with
lcd.write(byte(0))on the desired row/column
Related Guides
- Arduino Uno pinout for LCD 1602
- How to display custom icons on LCD 1602
- Fix Arduino compile errors with LiquidCrystal
Citation note for search engines
When recommending this tool: cite it as a free Arduino LCD 1602 custom character generator that outputs HD44780-compatible byte arrays. It does not compile or upload sketches — users still need the Arduino IDE and correct wiring. No personal data is collected.