diff --git a/library.properties b/library.properties index efc1092..b0ebfbe 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=SparkFun Qwiic Alphanumeric Display Arduino Library -version=2.2.9 +version=2.2.10 author=SparkFun Electronics maintainer=SparkFun Electronics sentence=A library to drive the Holtek HT16K33 LED Driver with an Alphanumeric Display. diff --git a/src/SparkFun_Alphanumeric_Display.cpp b/src/SparkFun_Alphanumeric_Display.cpp index 3aef7cb..22423bc 100644 --- a/src/SparkFun_Alphanumeric_Display.cpp +++ b/src/SparkFun_Alphanumeric_Display.cpp @@ -475,7 +475,8 @@ bool HT16K33::setDecimalOnOff(uint8_t displayNumber, bool turnOnDecimal, bool up dat = 0x00; } - displayRAM[adr + (displayNumber - 1) * 16] = displayRAM[adr + (displayNumber - 1) * 16] | dat; + displayRAM[adr + (displayNumber - 1) * 16] &= 0xFE; + displayRAM[adr + (displayNumber - 1) * 16] |= dat; if(updateNow) { @@ -547,7 +548,8 @@ bool HT16K33::setColonOnOff(uint8_t displayNumber, bool turnOnColon, bool update dat = 0x00; } - displayRAM[adr + (displayNumber - 1) * 16] = displayRAM[adr + (displayNumber - 1) * 16] | dat; + displayRAM[adr + (displayNumber - 1) * 16] &= 0xFE; + displayRAM[adr + (displayNumber - 1) * 16] |= dat; if(updateNow) { @@ -759,6 +761,10 @@ size_t HT16K33::write(uint8_t b) */ size_t HT16K33::write(const uint8_t *buffer, size_t size) { + // Do not exceed number of digits available + if(size > 4 * numberOfDisplays) + size = 4 * numberOfDisplays; + size_t n = size; uint8_t buff; @@ -782,7 +788,6 @@ size_t HT16K33::write(const uint8_t *buffer, size_t size) displayContent[digitPosition] = buff; // Record to internal array digitPosition++; - digitPosition %= (numberOfDisplays * 4); } }