Added support for writing text (with example)

This commit is contained in:
rjbatista@gmail.com
2011-08-20 02:11:26 +00:00
parent f54360bd37
commit 1716fddf4a
6 changed files with 245 additions and 41 deletions

View File

@@ -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

View File

@@ -21,46 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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);

View File

@@ -22,6 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TM1638_h
#include <WProgram.h>
#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);

166
TM1638Fonts.h Normal file
View File

@@ -0,0 +1,166 @@
/*
TM1638.h - Library for TM1638.
Copyright (C) 2011 Ricardo Batista (rjbatista <at> gmail <dot> 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 <http://www.gnu.org/licenses/>.
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) <space>
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

View File

@@ -0,0 +1,56 @@
/*
TM1638.h - Library for TM1638.
Copyright (C) 2011 Ricardo Batista <rjbatista at gmail dot com>
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 <http://www.gnu.org/licenses/>.
*/
#include <TM1638.h>
#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);
}

View File

@@ -18,6 +18,8 @@ setDisplayToDecNumber KEYWORD2
setDisplayToBinNumber KEYWORD2
setDisplayDigit KEYWORD2
setDisplay KEYWORD2
clearDisplay KEYWORD2
setDisplayToString KEYWORD2
setLED KEYWORD2
setLEDs KEYWORD2
getButtons KEYWORD2