diff --git a/README.txt b/README.txt
index 15ac4ba..1a3165e 100644
--- a/README.txt
+++ b/README.txt
@@ -10,7 +10,8 @@ Includes:
- Helper methods for displaying numbers in decimal, hexadecimal and binary;
- Support for multiple chained tm1638;
- Reading simultaneous button presses;
-- Support for dimming the display and LEDs.
+- Support for dimming the display and LEDs;
+- Support for writing text.
See: TM1638 Display/LED module at http://www.dealextreme.com/p/81873?r=68099021
diff --git a/TM1638.cpp b/TM1638.cpp
index 04ede46..cc17237 100644
--- a/TM1638.cpp
+++ b/TM1638.cpp
@@ -21,46 +21,6 @@ along with this program. If not, see .
#include "WProgram.h"
#include "TM1638.h"
-/*
-The bits are displayed by mapping bellow
- -- 0 --
-| |
-5 1
- -- 6 --
-4 2
-| |
- -- 3 -- .7
-*/
-const byte NUMBER_DATA[] = {
- 0b00111111, // 0
- 0b00000110, // 1
- 0b01011011, // 2
- 0b01001111, // 3
- 0b01100110, // 4
- 0b01101101, // 5
- 0b01111101, // 6
- 0b00000111, // 7
- 0b01111111, // 8
- 0b01101111, // 9
- 0b01110111, // A
- 0b01111100, // B
- 0b00111001, // C
- 0b01011110, // D
- 0b01111001, // E
- 0b01110001 // F
-};
-
-const byte ERROR[] = {
- 0b01111001, // E
- 0b01010000, // r
- 0b01010000, // r
- 0b01011100, // o
- 0b01010000, // r
- 0,
- 0,
- 0
-};
-
TM1638::TM1638(byte dataPin, byte clockPin, byte strobePin, boolean activateDisplay, byte intensity)
{
this->dataPin = dataPin;
@@ -134,6 +94,20 @@ void TM1638::setDisplay(const byte values[])
}
}
+void TM1638::clearDisplay()
+{
+ for (int i = 0; i < 8; i++) {
+ sendData(i << 1, 0);
+ }
+}
+
+void TM1638::setDisplayToString(const char* string, const byte font[])
+{
+ for (int i = 0; i < 8; i++) {
+ sendData(i << 1, font[string[i] - 32]);
+ }
+}
+
void TM1638::setLED(byte color, byte pos)
{
sendData((pos << 1) + 1, color);
diff --git a/TM1638.h b/TM1638.h
index cfb0646..a187cc4 100644
--- a/TM1638.h
+++ b/TM1638.h
@@ -22,6 +22,7 @@ along with this program. If not, see .
#define TM1638_h
#include
+#include "TM1638Fonts.h"
#define TM1638_COLOR_RED 1
#define TM1638_COLOR_GREEN 2
@@ -45,6 +46,10 @@ class TM1638
void setDisplayDigit(byte digit, byte pos, boolean dot);
/** Set the display to the 8 values (left to right) */
void setDisplay(const byte values[]);
+ /** Clear the display */
+ void clearDisplay();
+ /** Set the display to the string (defaults to built in font) */
+ void setDisplayToString(const char* string, const byte font[] = FONT_DEFAULT);
/** Set the LED at pos to color (TM1638_COLOR_RED, TM1638_COLOR_GREEN or both) */
void setLED(byte color, byte pos);
diff --git a/TM1638Fonts.h b/TM1638Fonts.h
new file mode 100644
index 0000000..d79edda
--- /dev/null
+++ b/TM1638Fonts.h
@@ -0,0 +1,166 @@
+/*
+TM1638.h - Library for TM1638.
+
+Copyright (C) 2011 Ricardo Batista (rjbatista gmail com)
+
+Based on a sketch by: Martin Hubacek (http://www.martinhubacek.cz)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the version 3 GNU General Public License as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+
+
+The bits are displayed by mapping bellow
+ -- 0 --
+| |
+5 1
+ -- 6 --
+4 2
+| |
+ -- 3 -- .7
+
+*/
+
+#ifndef TM1638Fonts_h
+#define TM1638Fonts_h
+
+// definition for standard hexadecimal numbers
+const byte NUMBER_DATA[] = {
+ 0b00111111, // 0
+ 0b00000110, // 1
+ 0b01011011, // 2
+ 0b01001111, // 3
+ 0b01100110, // 4
+ 0b01101101, // 5
+ 0b01111101, // 6
+ 0b00000111, // 7
+ 0b01111111, // 8
+ 0b01101111, // 9
+ 0b01110111, // A
+ 0b01111100, // B
+ 0b00111001, // C
+ 0b01011110, // D
+ 0b01111001, // E
+ 0b01110001 // F
+};
+
+// definition for error
+const byte ERROR[] = {
+ 0b01111001, // E
+ 0b01010000, // r
+ 0b01010000, // r
+ 0b01011100, // o
+ 0b01010000, // r
+ 0,
+ 0,
+ 0
+};
+
+// definition for the displayable ASCII chars
+const byte FONT_DEFAULT[] = {
+ 0b00000000, // (32)
+ 0b10000110, // (33) !
+ 0b00100010, // (34) "
+ 0b01111110, // (35) #
+ 0b01101101, // (36) $
+ 0b00000000, // (37) %
+ 0b00000000, // (38) &
+ 0b00000010, // (39) '
+ 0b00110000, // (40) (
+ 0b00000110, // (41) )
+ 0b00000000, // (42) *
+ 0b00000000, // (43) +
+ 0b00000100, // (44) ,
+ 0b01000000, // (45) -
+ 0b10000000, // (46) .
+ 0b01010010, // (47) /
+ 0b00111111, // (48) 0
+ 0b00000110, // (49) 1
+ 0b01011011, // (50) 2
+ 0b01001111, // (51) 3
+ 0b01100110, // (52) 4
+ 0b01101101, // (53) 5
+ 0b01111101, // (54) 6
+ 0b00100111, // (55) 7
+ 0b01111111, // (56) 8
+ 0b01101111, // (57) 9
+ 0b00000000, // (58) :
+ 0b00000000, // (59) ;
+ 0b00000000, // (60) <
+ 0b01001000, // (61) =
+ 0b00000000, // (62) >
+ 0b01010011, // (63) ?
+ 0b01011111, // (64) @
+ 0b01110111, // (65) A
+ 0b01111111, // (66) B
+ 0b00111001, // (67) C
+ 0b00111111, // (68) D
+ 0b01111001, // (69) E
+ 0b01110001, // (70) F
+ 0b00111101, // (71) G
+ 0b01110110, // (72) H
+ 0b00000110, // (73) I
+ 0b00011111, // (74) J
+ 0b01101001, // (75) K
+ 0b00111000, // (76) L
+ 0b00010101, // (77) M
+ 0b00110111, // (78) N
+ 0b00111111, // (79) O
+ 0b01110011, // (80) P
+ 0b01100111, // (81) Q
+ 0b00110001, // (82) R
+ 0b01101101, // (83) S
+ 0b01111000, // (84) T
+ 0b00111110, // (85) U
+ 0b00101010, // (86) V
+ 0b00011101, // (87) W
+ 0b01110110, // (88) X
+ 0b01101110, // (89) Y
+ 0b01011011, // (90) Z
+ 0b00111001, // (91) [
+ 0b01100100, // (92) \ (this can't be the last char on a line, even in comment or it'll concat)
+ 0b00001111, // (93) ]
+ 0b00000000, // (94) ^
+ 0b00001000, // (95) _
+ 0b00100000, // (96) `
+ 0b01011111, // (97) a
+ 0b01111100, // (98) b
+ 0b01011000, // (99) c
+ 0b01011110, // (100) d
+ 0b01111011, // (101) e
+ 0b00110001, // (102) f
+ 0b01101111, // (103) g
+ 0b01110100, // (104) h
+ 0b00000100, // (105) i
+ 0b00001110, // (106) j
+ 0b01110101, // (107) k
+ 0b00110000, // (108) l
+ 0b01010101, // (109) m
+ 0b01010100, // (110) n
+ 0b01011100, // (111) o
+ 0b01110011, // (112) p
+ 0b01100111, // (113) q
+ 0b01010000, // (114) r
+ 0b01101101, // (115) s
+ 0b01111000, // (116) t
+ 0b00011100, // (117) u
+ 0b00101010, // (118) v
+ 0b00011101, // (119) w
+ 0b01110110, // (120) x
+ 0b01101110, // (121) y
+ 0b01000111, // (122) z
+ 0b01000110, // (123) {
+ 0b00000110, // (124) |
+ 0b01110000, // (125) }
+ 0b00000001, // (126) ~
+};
+
+#endif
diff --git a/examples/tm1638_scrolling_modules_example/tm1638_scrolling_modules_example.pde b/examples/tm1638_scrolling_modules_example/tm1638_scrolling_modules_example.pde
new file mode 100644
index 0000000..33e1d91
--- /dev/null
+++ b/examples/tm1638_scrolling_modules_example/tm1638_scrolling_modules_example.pde
@@ -0,0 +1,56 @@
+/*
+TM1638.h - Library for TM1638.
+
+Copyright (C) 2011 Ricardo Batista
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the version 3 GNU General Public License as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include
+
+#define MODULES 4
+
+// define a modules
+TM1638 modules[] = {
+ TM1638(3, 2, 4),
+ TM1638(3, 2, 5),
+ TM1638(3, 2, 6),
+ TM1638(3, 2, 7)
+};
+
+void setup() {
+}
+
+const char string[] = " SEE LIBRARY PROJECT AT CODE.GOOGLE.COM ";
+int base = 0;
+
+void loop() {
+ for (int i = 0; i < MODULES; i++) {
+ const char* pos = string + base + (i * 8);
+
+ if (pos >= string && pos + 8 < string + sizeof(string)) {
+ modules[i].setDisplayToString(pos);
+ } else {
+ modules[i].clearDisplay();
+ }
+ }
+
+ base++;
+
+ if (base == sizeof(string) - 8) {
+ base = -MODULES * 8;
+ }
+
+ delay(100);
+}
+
diff --git a/keywords.txt b/keywords.txt
index 71b2181..620dcb9 100644
--- a/keywords.txt
+++ b/keywords.txt
@@ -18,6 +18,8 @@ setDisplayToDecNumber KEYWORD2
setDisplayToBinNumber KEYWORD2
setDisplayDigit KEYWORD2
setDisplay KEYWORD2
+clearDisplay KEYWORD2
+setDisplayToString KEYWORD2
setLED KEYWORD2
setLEDs KEYWORD2
getButtons KEYWORD2