35 #include <avr/pgmspace.h> 55 static const PROGMEM uint8_t SEGMENT_DATA[] = {
81 TM1638(clkPin, dioPin, stbPin), _pos(0), _dots(0)
112 for (uint8_t i = 0; i < 4; i++) {
113 keys |= (keys32 >> (i * 7)) & 0xFF;
165 writeData((uint8_t)(0x01 + (
swapLeds(led) << 1)), (color & 0x03));
180 if (leds & (1 << i)) {
193 if (leds & (1 << i)) {
209 uint8_t leds =
_leds[pos];
210 if (
_dots & (1 << pos)) {
213 writeData((
swapPos(pos) << 1), leds);
225 _leds[pos] = segments;
238 if (digit <
sizeof(SEGMENT_DATA)) {
251 for (uint8_t pos = 0; pos <
NUM_DIGITS; pos++) {
278 _dots &= ~(1 << pos);
402 void LKM1638Board::print(
unsigned long value, uint8_t radius, uint8_t maxDigits, uint8_t pad)
472 uint8_t maxDigits, uint8_t pad)
481 if ((numDigits > maxDigits) || ((
_pos + numDigits) >
NUM_DIGITS)) {
489 for (uint8_t i = 0; i < maxDigits; i++) {
490 if ((value == 0) && (i >= pad)) {
493 setDigit(pos, (uint8_t)(value % radius));
510 bool negative =
false;
518 numDigits = (uint8_t)(
getNumDigits((uint32_t)value, radius) + 1);
521 if ((numDigits > maxDigits) || ((
_pos + numDigits) >
NUM_DIGITS)) {
529 for (uint8_t i = 0; i < maxDigits; i++) {
530 if ((value == 0) && (i >= 1)) {
533 setDigit(pos, (uint8_t)(value % radius));
541 pos = (uint8_t)(
_pos + numDigits - 1);
556 uint8_t numDigits = 1;
578 for (uint8_t i = 0; i < numDigits; i++) {
615 for (uint8_t i = 0; i < 8; i++) {
uint8_t swapLeds(uint8_t led)
Swap dual color LED's.
uint8_t swapPos(uint8_t pos)
Swap digit position.
void dotOff(uint8_t pos)
Turn dot LED off.
void writeSignedValue(int32_t value, uint8_t radius, uint8_t maxDigits)
Write signed value to display.
LKM1638Board(uint8_t clkPin, uint8_t dioPin, uint8_t stbPin)
LKM1638 constructor.
JY-LKM1638 board v1.1 library for Arduino.
uint8_t getButtons()
Read buttons.
void setDots(uint8_t dots)
Turn multiple dots on or off.
#define NUM_COLOR_LEDS
Number of dual color LED's.
void clear()
Turn all LED's off.
uint8_t getPrintPos()
Get print position.
void setPrintPos(uint8_t pos)
Set print position.
void colorLEDsOff(uint8_t leds)
Turn multiple color LED's off.
void dotOn(uint8_t pos)
Turn dot LED on.
void setSegmentsDigit(uint8_t pos, uint8_t leds)
Write LED segments of a digit.
#define NUM_DIGITS
Number of digits.
void print(uint8_t value)
Print uint8_t value.
void setDigit(uint8_t pos, uint8_t digit)
Write digit.
uint8_t _dots
Dot LED's.
void writeDigit(uint8_t pos)
Write digit position.
uint8_t getNumDigits(uint32_t value, uint8_t radius)
Get number of digits of a signed 32-bit value.
uint8_t swapBits(uint8_t data)
Swap bits.
#define SEGMENTS_MINUS
7-sgement digit minus character
void displayOverflow(uint8_t numDigits)
Display overflow with - characters.
void refresh()
Refresh display.
uint8_t _leds[NUM_DIGITS]
LED digits.
void setColorLED(uint8_t led, LedColor color)
Set dual color LED.
uint8_t _pos
Print position.
void colorLEDsOn(uint8_t leds, LedColor color)
Turn multiple color LED's on.
#define SEGMENTS_OFF
7-sgement digit all LED's off
void writeUnsignedValue(uint32_t value, uint8_t radius, uint8_t maxDigits, uint8_t pad)
Write unsigned value to display.