{"id":13894104,"url":"https://github.com/Erriez/ErriezTM1637","last_synced_at":"2025-07-17T08:32:22.073Z","repository":{"id":85067619,"uuid":"134290283","full_name":"Erriez/ErriezTM1637","owner":"Erriez","description":"TM1637 LED and key-scan library for Arduino","archived":false,"fork":false,"pushed_at":"2020-08-28T16:39:00.000Z","size":1712,"stargazers_count":22,"open_issues_count":0,"forks_count":6,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-19T04:44:01.809Z","etag":null,"topics":["arduino","c-plus-plus","documentation","esp32","esp8266","examples","key-scan","led","library","tm1637","uno"],"latest_commit_sha":null,"homepage":"https://github.com/Erriez/ErriezArduinoLibrariesAndSketches","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Erriez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2018-05-21T15:47:49.000Z","updated_at":"2024-10-20T04:16:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"ccc54824-91f0-45bc-893a-41a29ab3cc7e","html_url":"https://github.com/Erriez/ErriezTM1637","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezTM1637","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezTM1637/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezTM1637/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezTM1637/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Erriez","download_url":"https://codeload.github.com/Erriez/ErriezTM1637/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226243893,"owners_count":17594452,"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","c-plus-plus","documentation","esp32","esp8266","examples","key-scan","led","library","tm1637","uno"],"created_at":"2024-08-06T18:01:23.905Z","updated_at":"2024-11-24T22:31:14.732Z","avatar_url":"https://github.com/Erriez.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# Optimized TM1637 library for Arduino\n[![Build Status](https://travis-ci.org/Erriez/ErriezTM1637.svg?branch=master)](https://travis-ci.org/Erriez/ErriezTM1637)\n\nThis is a 2-pin serial TM1637 chip library for Arduino, optimized for size and speed. It supports a combined LED driver controller and key-scan interface to detect one key press.\n\n![TM1637 chip](https://raw.githubusercontent.com/Erriez/ErriezTM1637/master/extras/TM1637_pins.jpg)\n\n\n## Chip features\n\n- Power CMOS process\n- Display mode (8 segments × 6 digits), support common anode LED output\n- Key scan (8 x 2-bit), enhanced anti-jamming button recognition circuit\n- Brightness adjustment circuit (adjustable duty cycle 8)\n- Two-wire serial interface (CLK, DIO)\n- Oscillation mode: Built-in RC oscillator\n- Built-in power-on reset circuit\n- Built-in automatic blanking circuit\n- Package: DIP20 / SOP20\n\n\n## Hardware\n\nConnect power and 2 data pins to an Arduino board DIGITAL pins:\n* VDD (Power 3.3V - 5V)\n* GND (Ground)\n* CLK (Clock)\n* DIO (Bi-directional data input/output)\n\nThe following TM1637 pins should be connected to LED's and buttons in a matrix:  \n* K1~K2 (Key-scan data input to read one key press after each other)\n* SEG/GRID (Output for LED matrix)\n\n\n## Pins\n\n| Pin  | TM1637 | Arduino UNO / Nano / Micro / Pro Micro / Leonardo / Mega2560 | WeMos D1 \u0026 R2 / Node MCU | WeMos LOLIN32 |\n| :--: | :----: | :----------------------------------------------------------: | :----------------------: | :-----------: |\n|  1   |  VCC   |                         5V (or 3.3V)                         |           3V3            |      3V3      |\n|  2   |  GND   |                             GND                              |           GND            |      GND      |\n|  3   |  CLK   |                       2 (DIGITAL pin)                        |            D2            |       0       |\n|  4   |  DIO   |                       3 (DIGITAL pin)                        |            D3            |       4       |\n\n* Check maximum regulator / diode current to prevent a burnout when using lots of LED's. Some boards can provide only 100mA, others 800mA max.\n\n\n## Two-wire serial interface\n\nThe TM1637 communicates with a MCU serial by using two wires:\n\n* DIO (bi-directional input/output pin)\n* SCL (Clock pin)\n\n**Note:** The serial interface is not compatible with I2C or TWI, because no device address with read/write bit is used.\n\n\n## Example\n\nArduino IDE | Examples | Erriez TM1637 button and LED driver:\n\n[ErriezTM1637](https://github.com/Erriez/ErriezTM1637/blob/master/examples/ErriezTM1637/ErriezTM1637.ino)\n\n\n## Documentation\n\n- [Doxygen online HTML](https://Erriez.github.io/ErriezTM1637)\n- [Doxygen PDF](https://github.com/Erriez/ErriezTM1637/raw/master/ErriezTM1637.pdf)\n- [TM1637 Datasheet (Chinese)](https://github.com/Erriez/ErriezTM1637/blob/master/extras/TM1637_datasheet_chinese.pdf)\n\n\n## Usage\n\n**Initialization**\n\n```c++\n// Include TM1637 library\n#include \u003cErriezTM1637.h\u003e\n  \n// Connect display pins to the Arduino DIGITAL pins\n#define TM1637_CLK_PIN   2\n#define TM1637_DIO_PIN   3\n\n// Create tm1637 object\nTM1637 tm1637(TM1637_CLK_PIN, TM1637_DIO_PIN);\n\nvoid setup()\n{\n    // Initialize TM1637\n    tm1637.begin();\n}\n```\n\n**Display on/off**\n\n```c++\n// Turn display off\ntm1637.displayOff();\n  \n// Turn display on\ntm1637.displayOn();\n```\n\n**Turn all LED's off**\n\n```c++\n// Turn all LED's off\ntm1637.clear();\n```\n\n**Get keys**\n\n```c++\n// Get 8-bit key-scan\nuint8_t keys = tm1637.getKeys();\n```\n\n**Write Byte to display register**\n\n```c++\n// Write segment LED's to the first display registers 0x00..0x0F with value 0x00..0xff to\n// display numbers and characters. Just an example which depends on the hardware:\ntm1637.writeData(0x01, 0x01);\n```\n\n**Write buffer to display registers**\n\n```c++\n// Creat buffer with LED's\nuint8_t buf[] = { 0b10000110, 0b00111111, 0b00111111, 0b00111111, 0b00111111, 0b00111111};\n\n// Write buffer to TM1637\ntm1637.writeData(0x00, buf, sizeof(buf));\n```\n\n## Optimized timing\n\nThe library uses optimized pin control for AVR targets. Other targets uses the default digitalRead() and digitalWrite() pin control functions.\n\nOutput [Benchmark](https://github.com/Erriez/ErriezTM1637/blob/master/examples/Benchmark/Benchmark.ino) example:\n\n| Board                |  CLK   | Read keys | Write Byte | Write 16 Bytes buffer | Clear display |\n| -------------------- | :----: | :-------: | :--------: | :-------------------: | :-----------: |\n| Pro Mini 8MHz        | 84kHz  |   352us   |   344us    |        1080us         |    1072us     |\n| UNO 16MHz            | 170kHz |   156us   |   152us    |         496us         |     480us     |\n| WeMos D1 \u0026 R2 80MHz  | 205kHz |   261us   |   137us    |         396us         |     396us     |\n| WeMos D1 \u0026 R2 160MHz | 300kHz |   233us   |    96us    |         275us         |     271us     |\n\n#### Arduino Pro-Mini 8MHz\n\n![TM1637 Arduino Pro-Mini 8MHz timing](https://raw.githubusercontent.com/Erriez/ErriezTM1637/master/extras/TM1637_timing_ProMini_8MHz.png)\n\n#### Arduino UNO 16MHz\n\n![TM1637 Arduino UNO 16MHz timing](https://raw.githubusercontent.com/Erriez/ErriezTM1637/master/extras/TM1637_timing_Arduino_UNO_16MHz.png)\n\n#### WeMos D1 \u0026 R2 80MHz\n\n![TM1637 WeMos D1 \u0026 R2 40MHz timing](https://raw.githubusercontent.com/Erriez/ErriezTM1637/master/extras/TM1637_timing_WeMos_D1_R2_80MHz.png)\n\n#### WeMos D1 \u0026 R2 160MHz\n\n![TM1637 WeMos D1 \u0026 R2 160MHz timing](https://raw.githubusercontent.com/Erriez/ErriezTM1637/master/extras/TM1637_timing_WeMos_D1_R2_160MHz.png)\n\n## Library dependencies\n\n- The [Benchmark](https://github.com/Erriez/ErriezTM1637/blob/master/examples/ErriezTM1637Benchmark/ErriezTM1637Benchmark.ino) example uses [Erriez Timestamp](https://github.com/Erriez/ErriezTimestamp) library.\n\n\n## Library installation\n\nPlease refer to the [Wiki](https://github.com/Erriez/ErriezArduinoLibrariesAndSketches/wiki) page.\n\n\n## Other Arduino Libraries and Sketches from Erriez\n\n* [Erriez Libraries and Sketches](https://github.com/Erriez/ErriezArduinoLibrariesAndSketches)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FErriez%2FErriezTM1637","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FErriez%2FErriezTM1637","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FErriez%2FErriezTM1637/lists"}