Erriez JY-LKM1638 board library for Arduino  1.1.0
This is an optimized JY-MCU JY-LKM1638 library for Arduino. It supports 8x 7-segment display, 8 dual color LEDs and 8 buttons with a simple API.
JY-LKM1638 7-segment display / button library for Arduino

This is a JY-MCU JY-LKM1638 library for Arduino.

JY-LKM1638

This board supports:

Order number

Google.com DX.com SKU: 81873 AliExpress.com eBay.com Many more...

Note: This library has not been tested with a different "LED&KEY" board.

Hardware

Connect GND and +5V to the Arduino board.

Connect the following pins to the Arduino DIGITAL pins:

Note: Some Arduino boards cannot deliver enough 5V power to drive the LED's.

Pins

Pin LKM-1638 Arduino UNO / Nano / Mega2560 / Leonardo / Pro Micro Node MCU LOLIN32
1 VCC 5V (or 3.3V) GND GND
2 GND GND 3V3 3V3
3 CLK Digital pin 2 D2 0
4 DIO Digital pin 3 D3 4
5 STB1 Digital pin 4 D4 5

Examples

Examples | JY-LKM1638:

Documentation

## Terms:

Segment: One LED in a 7-segment display
Digit: One 7-segment display (Value 0..9 and A..F)
Dot: The dot LED in a 7-segment digit
Pos: Print position 0...7 (MSB bit 7: left .. LB bit 0: right)
Radius: DEC for decimal, HEX for hexadecimal, BIN for binary
MaxDigits: Reserve a number of digits to print a value
Pad: Display fixed number of digits with 0 padding
Overflow: Value does not fit on the display, display minus chars
LSB: Most right digit, dual color LED8 or switch (SW8)
MSB: Most left digit, dual color LED1 or switch (SW1)

Usage

### Initialization

{c++}
#include <ErriezLKM1638Board.h>
// Connect display pins to the Arduino DIGITAL pins
#define TM1638_CLK_PIN 2
#define TM1638_DIO_PIN 3
#define TM1638_STB0_PIN 4
// Create LKM1638 board
LKM1638Board lkm1638(TM1638_CLK_PIN, TM1638_DIO_PIN, TM1638_STB0_PIN);
void setup()
{
// Initialize LKM1638Board
lkm1638.begin();
}

Read 8 buttons

Buttons are 8-bit with bit 7 most left switch, bit 0 most right switch.

Note: The text on the board counts from S1 to S8!

{c++}
uint8_t buttons = lkm1638.getButtons();

Control 8 dual color LED's

Dual color LED 7 = most left (Text LED8) Dual color LED 0 = most right (Text LED0)

{c++}
// Turn LED 0 red on (firt LED on the right)
lkm1638.setColorLED(0, LedRed);
// Turn LED 0 green on
lkm1638.setColorLED(0, LedGreen);
// Turn LED 0 off
lkm1638.setColorLED(0, LedOff);
// Turn multiple LEDs on, color red
lkm1638.colorLEDsOn(0xA9, LedRed);
// Turn multiple LEDs off
lkm1638.colorLEDsOff(0x1F);

### Clear display

{c++}
lkm1638.clear();

Set/get print display position

The print position can be set from 0..7. 7 = most left digit 0 = most right digit

{c++}
// Set postion 4
lkm1638.setPrintPos(4);
// Get print position
uint8_t pos = lkm1638.getPrintPos();

Print variable on 7-segment display

Printing starts from digit right to left with an optional maximum number of digits.

Minus '-' chars will be displayed when the value is out of range, or does not fit on the display.

Optional padding can be used to display zero's. This is for example useful to print hours and minutes with fixed 2 digits.

{c++}
// Print int16_t on print position
lkm1638.print(1234);
// Print signed 32-bit value
lkm1638.print(-1234567);
// Print 16-bit unsigned casted value
lkm1638.print((uint16_t)65535);
// Print 16-bit hexadecimal unsigned value
uint16_t value = 0xBEEF;
lkm1638.print(value, HEX);
// Print value with maximum 2 digits
uint8_t value = 99;
lkm1638.print(value++, DEC, 2);
// Print -- when value is greater than 2 digits
lkm1638.print(value, DEC, 2);
// Print 16-bit unsigned value with max 4 digits and 4 digits padding: 0009
uint16_t value = 9;
lkm1638.print(value, DEC, 4, 4);
// Print 32-bit unsigned value
lkm1638.print(12345678UL);
// Print binary uint8_t 0xA9 = 10101001
uint8_t value = 0xA9;
lkm1638.print(value, BIN, 8, 8);

### Control 8 display dots

{c++}
// Turn one dot on in digit 7 (most left)
lkm1638.dotOn(7);
// Turn one dot off in digit 0 (most right)
lkm1638.dotOff(0);
// Set multiple dots on and off
lkm1638.setDots(0x85);

### Display special characters

{c++}
// Turn digit off
lkm1638.setSegmentsDigit(5, SEGMENTS_OFF);
// Display minus character
lkm1638.setSegmentsDigit(4, SEGMENTS_MINUS);
// Display degree selsius symbol + C
lkm1638.setSegmentsDigit(1, SEGMENTS_DEGREE);
lkm1638.setSegmentsDigit(0, SEGMENTS_C);

### Write a custom character to the display

{c++}
// Display single LED in a digit
lkm1638.setSegmentsDigit(0, 0b0001000);

Library dependencies

Library installation

Please refer to the Wiki page.

Other Arduino Libraries and Sketches from Erriez