diff --git a/CHANGES.txt b/CHANGES.txt index 3a8b0b0..06e024a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,5 @@ +- ISSUE #21: Problems on clearDisplay and setupDisplay; + Version 2.1.0 - ISSUE #20: Support for negative decimal numbers; diff --git a/TM1640.cpp b/TM1640.cpp index 506bf47..9fa4831 100644 --- a/TM1640.cpp +++ b/TM1640.cpp @@ -36,3 +36,13 @@ void TM1640::sendChar(byte pos, byte data, boolean dot) { sendData(pos, data | (dot ? 0b10000000 : 0)); } + +void TM1640::clearDisplay() +{ + digitalWrite(strobePin, LOW); + send(0xC0); + for (int i = 0; i < 16; i++) { + send(0x00); + } + digitalWrite(strobePin, HIGH); +} diff --git a/TM1640.h b/TM1640.h index f26b913..5526647 100644 --- a/TM1640.h +++ b/TM1640.h @@ -33,6 +33,8 @@ class TM1640 : public TM16XX public: /** Instantiate a tm1640 module specifying the display state, the starting intensity (0-7) data and clock pins. */ TM1640(byte dataPin, byte clockPin, boolean activateDisplay = true, byte intensity = 7); + /** Clear the display */ + virtual void clearDisplay(); protected: virtual void sendChar(byte pos, byte data, boolean dot); diff --git a/TM16XX.cpp b/TM16XX.cpp index 38ad0c8..39f912d 100644 --- a/TM16XX.cpp +++ b/TM16XX.cpp @@ -54,6 +54,12 @@ TM16XX::TM16XX(byte dataPin, byte clockPin, byte strobePin, byte displays, boole void TM16XX::setupDisplay(boolean active, byte intensity) { sendCommand(0x80 | (active ? 8 : 0) | min(7, intensity)); + + // necessary for the TM1640 + digitalWrite(strobePin, LOW); + digitalWrite(clockPin, LOW); + digitalWrite(clockPin, HIGH); + digitalWrite(strobePin, HIGH); } void TM16XX::setDisplayDigit(byte digit, byte pos, boolean dot, const byte numberFont[])