{"id":16218942,"url":"https://github.com/arminjo/lcdbignumbers","last_synced_at":"2025-09-12T02:12:58.485Z","repository":{"id":93079060,"uuid":"558088467","full_name":"ArminJo/LCDBigNumbers","owner":"ArminJo","description":"Arduino library to write big numbers on a 1602 or 2004 LCD.","archived":false,"fork":false,"pushed_at":"2024-08-15T13:39:23.000Z","size":250,"stargazers_count":23,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-28T18:22:30.870Z","etag":null,"topics":["arduino-library","big","lcd-1602","lcd-2004","lcd-display","numbers"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArminJo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-26T21:52:59.000Z","updated_at":"2025-02-26T09:17:41.000Z","dependencies_parsed_at":"2023-03-06T12:15:14.536Z","dependency_job_id":"ccd06ef8-279e-4318-8da7-5158db6489bf","html_url":"https://github.com/ArminJo/LCDBigNumbers","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArminJo%2FLCDBigNumbers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArminJo%2FLCDBigNumbers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArminJo%2FLCDBigNumbers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArminJo%2FLCDBigNumbers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArminJo","download_url":"https://codeload.github.com/ArminJo/LCDBigNumbers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243985498,"owners_count":20379149,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino-library","big","lcd-1602","lcd-2004","lcd-display","numbers"],"created_at":"2024-10-10T11:51:38.071Z","updated_at":"2025-09-12T02:12:58.471Z","avatar_url":"https://github.com/ArminJo.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align = center\u003e\n\n# LCDBigNumbers\nArduino library to write big numbers on a 1602 or 2004 LCD.\n\n[![Badge License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n \u0026nbsp; \u0026nbsp; \n[![Badge Version](https://img.shields.io/github/v/release/ArminJo/LCDBigNumbers?include_prereleases\u0026color=yellow\u0026logo=DocuSign\u0026logoColor=white)](https://github.com/ArminJo/LCDBigNumbers/releases/latest)\n \u0026nbsp; \u0026nbsp; \n[![Badge Commits since latest](https://img.shields.io/github/commits-since/ArminJo/LCDBigNumbers/latest?color=yellow)](https://github.com/ArminJo/LCDBigNumbers/commits/master)\n \u0026nbsp; \u0026nbsp; \n[![Badge Build Status](https://github.com/ArminJo/LCDBigNumbers/workflows/LibraryBuild/badge.svg)](https://github.com/ArminJo/LCDBigNumbers/actions)\n \u0026nbsp; \u0026nbsp; \n![Badge Hit Counter](https://visitor-badge.laobi.icu/badge?page_id=ArminJo_LCDBigNumbers)\n\u003cbr/\u003e\n\u003cbr/\u003e\n[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)\n\nAvailable as [Arduino library \"LCDBigNumbers\"](https://www.arduinolibraries.info/libraries/lcd-big-numbers).\n\n\u003c/div\u003e\n\n#### If you find this library useful, please give it a star.\n\n\u0026#x1F30E; [Google Translate](https://translate.google.com/translate?sl=en\u0026u=https://github.com/ArminJo/LCDBigNumbers)\n\n\u003cbr/\u003e\n\n# Features\n- **10 different fonts available. From 1x2 up to 3x4.**.\n- Support for special big characters `-`, `.` and `:`.\n- Fonts which require no gap between numbers (1x2 and 3x2, variant 2 and 3) are printed by default without this gap.\n- Support for **parallel and serial** LCD connections.\n- For all architectures.\n\n\u003cbr/\u003e\n\n# Usage\n\n```c++\n// Choose your display\n//#define USE_PARALLEL_2004_LCD // Is default\n//#define USE_PARALLEL_1602_LCD\n//#define USE_SERIAL_2004_LCD\n//#define USE_SERIAL_1602_LCD\n#include \"LCDBigNumbers.hpp\" // Include sources for LCD big number generation\n\nLiquidCrystal myLCD(2, 3, 4, 5, 6, 7); // Depends on your actual connections\nLCDBigNumbers bigNumberLCD(\u0026myLCD, BIG_NUMBERS_FONT_3_COLUMN_4_ROWS_VARIANT_1); // Use 3x4 numbers, 1. variant\n\nvoid setup() {\n    myLCD.begin(LCD_COLUMNS, LCD_ROWS); // LCD_COLUMNS and LCD_ROWS are set by LCDBigNumbers.hpp depending on the defined display\n    bigNumberLCD.begin(); // Creates custom character used for generating big numbers\n    \n    bigNumberLCD.setBigNumberCursor(0);\n    bigNumberLCD.print(-47.11, 2); // use the standard print function\n    delay(2000);\n    bigNumberLCD.setBigNumberCursor(0, 0); // row specification is redundant here for a 4 row font :-)\n    bigNumberLCD.print(F(ONE_COLUMN_HYPHEN_STRING ONE_COLUMN_SPACE_STRING \"47.11:\")); // print a number string\n}\n```\nA **space character** is always rendered as an empty space with the size and the gap of a number. To have an one column space with the height of a number, you must use `ONE_COLUMN_SPACE_STRING` like above or `ONE_COLUMN_SPACE_CHARACTER` like in `bigNumberLCD.print(ONE_COLUMN_SPACE_CHARACTER)`.\u003cbr/\u003e\nThe `ONE_COLUMN_SPACE_CHARACTER` it is by default a bar `|`.\n\nA **hyphen / minus character** is always rendered with the gap of a number. To have an one column hyphen, you must use `ONE_COLUMN_HYPHEN_STRING` like above or `ONE_COLUMN_HYPHEN_CHARACTER` like in `bigNumberLCD.print(ONE_COLUMN_HYPHEN_CHARACTER)`.\u003cbr/\u003e\nThe `ONE_COLUMN_HYPHEN_CHARACTER` it is by default a underscore `_`.\n\u003cbr/\u003e\n\n# API\n**Only print functions with base \u003c= 10 like print(1234, 8) are available because Hex characters are NOT supported!**\n\n```c++\nvoid init(const uint8_t aBigNumberFontIdentifier); // Reconfigure existing object to hold (another) font\nvoid begin(); // Generate font symbols in LCD controller\nvoid write();\nvoid writeAt(uint8_t aNumber, uint8_t aUpperLeftColumnIndex, uint8_t aUpperLeftRowIndex = 0);\nvoid setBigNumberCursor(uint8_t aUpperLeftColumnIndex, uint8_t aUpperLeftRowIndex = 0);\nvoid enableGapBetweenNumbers();\nvoid disableGapBetweenNumbers();\n\n// LCD convenience functions\nvoid clearLine(LiquidCrystal *aLCD, uint_fast8_t aLineNumber);\nvoid printSpaces(LiquidCrystal *aLCD, uint_fast8_t aNumberOfSpacesToPrint);\nsize_t printHex(LiquidCrystal *aLCD, uint16_t aHexByteValue);\nvoid testBigNumbers(LiquidCrystal *aLCD); // Print all fonts, used in screenshots below, using one object\n```\n\n\u003cbr/\u003e\n\n# Examples on Wokwi\n- [Wokwi BigNumbersDemo example](https://wokwi.com/projects/346534078384702034).\n- [Wokwi SimpleClock example](https://wokwi.com/projects/346661429974139474).\n\n# Screenshots\nScreenshots of [BigNumbersDemo example](https://github.com/ArminJo/LCDBigNumbers/tree/master/examples/BigNumbersDemo).\n\n| Size | Variant\u003cbr/\u003eNumber |  |  |  |\n|-|-|-|-|-|\n| 1x2 | 1 | ![](pictures/1x2_1.png)  |  |  |\n| 2x2 | 1 | ![](pictures/2x2_1.png)  |  | ![](pictures/2x2_1x.png) |\n| 3x2 | 1 | ![](pictures/3x2_1.png)  |  | ![](pictures/3x2_1x.png) |\n| 3x2 | 2 | ![](pictures/3x2_2.png)  |  | ![](pictures/3x2_2x.png) |\n| 3x2 | 3 | ![](pictures/3x2_3.png)  |  | ![](pictures/3x2_3x.png) |\n| 2x3 | 1 | ![](pictures/2x3_1a.png) | ![](pictures/2x3_1b.png) | ![](pictures/2x3_1x.png) |\n| 2x3 | 2 | ![](pictures/2x3_2a.png) | ![](pictures/2x3_2b.png) | ![](pictures/2x3_2x.png) |\n| 3x3 | 1 | ![](pictures/3x3_1a.png) | ![](pictures/3x3_1b.png) | ![](pictures/3x3_1x.png) |\n| 3x4 | 1 | ![](pictures/3x4_1a.png) | ![](pictures/3x4_1b.png) | ![](pictures/3x4_1x.png) |\n| 3x4 | 2 | ![](pictures/3x4_2a.png) | ![](pictures/3x4_2b.png) | ![](pictures/3x4_2x.png) |\n\n\u003cbr/\u003e\n\n# Compile options / macros for this library\nTo customize the library to different requirements, there are some compile options / macros available.\u003cbr/\u003e\nThese macros must be defined in your program **before** the line `#include \u003cLCDBigNumbers.hpp\u003e` to take effect.\u003cbr/\u003e\nModify them by enabling / disabling them, or change the values if applicable.\n\n| Name | Default value | Description |\n|-|-:|-|\n| `USE_PARALLEL_2004_LCD` `USE_PARALLEL_1602_LCD` | USE_PARALLEL_2004_LCD is default | Use parallel 6 or 10 wire LCD connection with the [Arduino LiquidCrystal library](http://www.arduino.cc/en/Reference/LiquidCrystal). |\n| `USE_SERIAL_2004_LCD` `USE_SERIAL_1602_LCD` | not defined | Use serial 4 wire LCD connection provided by the [LiquidCrystal_I2C library](https://github.com/marcoschwartz/LiquidCrystal_I2C). |\n\n# Why *.hpp instead of *.cpp?\n**Every \\*.cpp file is compiled separately** by a call of the compiler exclusively for this cpp file. These calls are managed by the IDE / make system.\nIn the Arduino IDE the calls are executed when you click on *Verify* or *Upload*.\n\nAnd now **our problem with Arduino** is:\u003cbr/\u003e\n**How to set [compile options](#compile-options--macros-for-this-library) for all *.cpp files, especially for libraries used?**\u003cbr/\u003e\nIDE's like [Sloeber](https://github.com/Arduino-IRremote/Arduino-IRremote?tab=readme-ov-file#modifying-compile-options--macros-with-sloeber-ide) or\n[PlatformIO](https://github.com/Arduino-IRremote/Arduino-IRremote?tab=readme-ov-file#modifying-compile-options--macros-with-platformio) support this by allowing to specify a set of options per project.\nThey add these options at each compiler call e.g. `-DTRACE`.\n\nBut Arduino lacks this feature. So the **workaround** is not to compile all sources separately, but to concatenate them to one huge source file by including them in your source.\nThis is done by e.g. `#include \"LCDBigNumbers.hpp\"`.\n\u003cbr/\u003e\nBut why not `#include \"LCDBigNumbers.cpp\"`?\u003cbr/\u003e\nTry it and you will see tons of errors, because each function of the *.cpp file is now compiled twice,\nfirst by compiling the huge file and second by compiling the *.cpp file separately, like described above.\nSo using the extension *cpp* is not longer possible, and one solution is to use *hpp* as extension, to show that it is an included *.cpp file.\nEvery other extension e.g. *cinclude* would do, but *hpp* seems to be common sense.\n\n\u003cbr/\u003e\n\n# Revision History\n### Version 1.2.3\n- Fixed bug in clearing the gap between numbers.\n\n### Version 1.2.2\n- Improved _createChar().\n- Added `VERSION_LCD_BIG_NUMBERS`.\n\n### Version 1.2.1\n- Fixed bug of not working forceGapBetweenNumbers for BIG_NUMBERS_FONT_1_COLUMN_2_ROWS_VARIANT_1.\n\n### Version 1.2.0\n- Support for floating point numbers.\n\n### Version 1.1.1\n- Removed compiler warning.\n\n### Version 1.1.0\n- Changed handling of space and therefore introduced `ONE_COLUMN_SPACE_STRING` and `ONE_COLUMN_SPACE_CHARACTER`.\n### Version 1.0.0\n Initial Arduino library version.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farminjo%2Flcdbignumbers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farminjo%2Flcdbignumbers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farminjo%2Flcdbignumbers/lists"}