- Notifications
You must be signed in to change notification settings - Fork7
TM1638 LED driver with key-scan library for Arduino
License
Erriez/ErriezTM1638
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a 3-pin serial TM1638 chip library for Arduino, optimized for size and speed. It supports a combined LED driver controller and key-scan interface to detect multiple key presses at the same time.
Displaying numbers, characters and reading keys depends on the hardware wiring and is not part of this library. A fully operational example for a board with 8 7-segment displays, 8 dual color LED's and 8 buttons which uses this library is available here:JY-LKM1638.
Connect power and 3 data pins to an Arduino board DIGITAL pins:
- VDD (Power 3.3V - 5V)
- GND (Ground)
- DIO (Bi-directional data input/output)
- STB (Chip select)
- CLK (Clock)
The following TM1638 pins should be connected to LED's and buttons in a matrix:
- K1~K3 (Key-scan data input to read multiple key presses at the same time)
- SEG/GRID (Output for LED matrix)
Pin | TM1638 | Arduino UNO / Nano / Micro / Pro Micro / Leonardo / Mega2560 | WeMos D1 & R2 / Node MCU | WeMos LOLIN32 |
---|---|---|---|---|
1 | VCC | 5V (or 3.3V) | 3V3 | 3V3 |
2 | GND | GND | GND | GND |
3 | CLK | 2 (DIGITAL pin) | D2 | 0 |
4 | DIO | 3 (DIGITAL pin) | D3 | 4 |
5 | STB0 | 4 (DIGITAL pin) | D4 | 5 |
- Check maximum regulator / diode current to prevent a burnout when using lots of LED's. Some boards can provide only 100mA, others 800mA max.
Arduino IDE | Examples | Erriez TM1638 button and LED driver:
Initialization
// Include TM1638 library#include<ErriezTM1638.h>// Connect display pins to the Arduino DIGITAL pins#defineTM1638_CLK_PIN2#defineTM1638_DIO_PIN3#defineTM1638_STB_PIN4// Create tm1638 objectTM1638tm1638(TM1638_CLK_PIN, TM1638_DIO_PIN, TM1638_STB_PIN);voidsetup(){// Initialize TM1638 tm1638.begin();}
Display on/off
// Turn display offtm1638.displayOff();// Turn display ontm1638.displayOn();
Turn all LED's off
// Turn all LED's offtm1638.clear();
Get keys
// Get 32-bit key-scanuint32_t keys = tm1638.getKeys();
Write Byte to display register
// Write segment LED's to the first display registers 0x00..0x0F with value 0x00..0xff to// display numbers and characters. Just an example which depends on the hardware:tm1638.writeData(0x01,0x01);
Write buffer to display registers
// Creat buffer with LED'suint8_t buf[] = {0b10000110,0b00111111,0b00111111,0b00111111,0b00111111,0b00111111};// Write buffer to TM1638tm1638.writeData(0x00, buf,sizeof(buf));
Measured with Arduino IDE v1.8.5 without any other peripherals, calling all library functions once:
Board | MCU flash size | MCU RAM size | TM1638 library flash | TM1638 library RAM |
---|---|---|---|---|
Arduino UNO | 32kB | 2048kB | 1840 Bytes | 40 Bytes |
The library uses optimized pin control for AVR targets. Other targets uses the default digitalRead() and digitalWrite() pin control functions.
OutputBenchmark example:
Board | CLK | Read keys | Write Byte | Write 16 Bytes buffer | Clear display |
---|---|---|---|---|---|
Pro Mini 8MHz | 65kHz | 736us | 312us | 2448us | 2224us |
UNO 16MHz | 125kHz | 340us | 152us | 1192us | 1176us |
WeMos D1 & R2 80MHz | 200kHz | 284us | 116us | 683us | 682us |
WeMos D1 & R2 160MHz | 300kHz | 223us | 66us | 474us | 469us |
- TheErriezTM1638Benchmark example usesErriez Timestamp library.
Please refer to theWiki page.
About
TM1638 LED driver with key-scan library for Arduino
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.