Test program for TM1638 LED controller. Supports LED&KEY, QYF-TM1638 and JY-LKM1638 module.

Dependencies:   TM1638 mbed

See here for more information.

Committer:
wim
Date:
Tue Jan 19 18:58:35 2016 +0000
Revision:
3:f1484bfa0574
Parent:
2:d6720abfe574
Child:
4:0e1ffa381c62
Animation demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 1:12dadbc0017d 1 /* mbed TM1638 Test program, for TM1638 LED controller
wim 0:e7bc81df3e38 2 * Copyright (c) 2015, v01: WH, Initial version
wim 2:d6720abfe574 3 * 2016, v02: WH, Added ASCII alphabet test
wim 0:e7bc81df3e38 4 *
wim 0:e7bc81df3e38 5 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:e7bc81df3e38 6 * of this software and associated documentation files (the "Software"), to deal
wim 0:e7bc81df3e38 7 * in the Software without restriction, including without limitation the rights
wim 0:e7bc81df3e38 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:e7bc81df3e38 9 * copies of the Software, and to permit persons to whom the Software is
wim 0:e7bc81df3e38 10 * furnished to do so, subject to the following conditions:
wim 0:e7bc81df3e38 11 *
wim 0:e7bc81df3e38 12 * The above copyright notice and this permission notice shall be included in
wim 0:e7bc81df3e38 13 * all copies or substantial portions of the Software.
wim 0:e7bc81df3e38 14 *
wim 0:e7bc81df3e38 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:e7bc81df3e38 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:e7bc81df3e38 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:e7bc81df3e38 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:e7bc81df3e38 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:e7bc81df3e38 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:e7bc81df3e38 21 * THE SOFTWARE.
wim 0:e7bc81df3e38 22 */
wim 0:e7bc81df3e38 23 #include "mbed.h"
wim 0:e7bc81df3e38 24 #include "TM1638.h"
wim 0:e7bc81df3e38 25
wim 0:e7bc81df3e38 26 #if (LEDKEY8_TEST == 1)
wim 0:e7bc81df3e38 27 // LEDKEY8 TM1638 Test
wim 0:e7bc81df3e38 28 #include "Font_7Seg.h"
wim 0:e7bc81df3e38 29
wim 0:e7bc81df3e38 30 Serial pc(USBTX, USBRX);
wim 0:e7bc81df3e38 31 DigitalOut myled(LED1);
wim 0:e7bc81df3e38 32
wim 0:e7bc81df3e38 33 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments)
wim 0:e7bc81df3e38 34 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03};
wim 0:e7bc81df3e38 35 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 0:e7bc81df3e38 36 TM1638::DisplayData_t hello_str = {C7_H,0x00, C7_E,0x00, C7_L,0x00, C7_L,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 1:12dadbc0017d 37 TM1638::DisplayData_t bye_str = {C7_B,0x00, C7_Y,0x00, C7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 0:e7bc81df3e38 38
wim 3:f1484bfa0574 39 TM1638::DisplayData_t animate[] = {
wim 3:f1484bfa0574 40 {S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 41 {0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 42 {0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 43 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 44 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 45 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 46 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00},
wim 3:f1484bfa0574 47 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00},
wim 3:f1484bfa0574 48
wim 3:f1484bfa0574 49 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_B,0x00},
wim 3:f1484bfa0574 50 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_C,0x00},
wim 3:f1484bfa0574 51
wim 3:f1484bfa0574 52 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00},
wim 3:f1484bfa0574 53 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00},
wim 3:f1484bfa0574 54 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 55 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 56 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 57 {0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 58 {0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 59 {S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 60
wim 3:f1484bfa0574 61 {S7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 62 {S7_F,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 63 };
wim 0:e7bc81df3e38 64 // KeyData_t size is 3 bytes
wim 0:e7bc81df3e38 65 TM1638::KeyData_t keydata;
wim 0:e7bc81df3e38 66
wim 0:e7bc81df3e38 67 // Switchdata is 1 byte
wim 0:e7bc81df3e38 68 char switchdata;
wim 0:e7bc81df3e38 69
wim 0:e7bc81df3e38 70 //TM1638_LEDKEY8 declaration
wim 0:e7bc81df3e38 71 TM1638_LEDKEY8 LEDKEY8(p5,p6,p7, p8);
wim 0:e7bc81df3e38 72
wim 0:e7bc81df3e38 73 char cmd, bits;
wim 0:e7bc81df3e38 74 int main() {
wim 0:e7bc81df3e38 75
wim 0:e7bc81df3e38 76 pc.printf("Hello World\r\n"); //
wim 0:e7bc81df3e38 77
wim 0:e7bc81df3e38 78 LEDKEY8.cls();
wim 0:e7bc81df3e38 79 LEDKEY8.writeData(all_str);
wim 0:e7bc81df3e38 80 wait(2);
wim 0:e7bc81df3e38 81 LEDKEY8.setBrightness(TM1638_BRT3);
wim 0:e7bc81df3e38 82 wait(1);
wim 0:e7bc81df3e38 83 LEDKEY8.setBrightness(TM1638_BRT0);
wim 0:e7bc81df3e38 84 wait(1);
wim 0:e7bc81df3e38 85 LEDKEY8.setBrightness(TM1638_BRT4);
wim 0:e7bc81df3e38 86
wim 0:e7bc81df3e38 87 wait(1);
wim 0:e7bc81df3e38 88 LEDKEY8.cls(true);
wim 0:e7bc81df3e38 89 LEDKEY8.writeData(hello_str);
wim 0:e7bc81df3e38 90
wim 0:e7bc81df3e38 91 while (1) {
wim 0:e7bc81df3e38 92
wim 0:e7bc81df3e38 93 // Check and read keydata
wim 0:e7bc81df3e38 94 if (LEDKEY8.getKeys(&keydata)) {
wim 0:e7bc81df3e38 95 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]);
wim 0:e7bc81df3e38 96
wim 1:12dadbc0017d 97 if (keydata[LEDKEY8_SW1_IDX] == LEDKEY8_SW1_BIT) { //sw1
wim 0:e7bc81df3e38 98 LEDKEY8.cls();
wim 0:e7bc81df3e38 99 LEDKEY8.writeData(all_str);
wim 3:f1484bfa0574 100
wim 3:f1484bfa0574 101 wait(0.5);
wim 3:f1484bfa0574 102 for (int i=0; i<20; i++) {
wim 3:f1484bfa0574 103 LEDKEY8.writeData(animate[i]);
wim 3:f1484bfa0574 104 wait(0.05);
wim 3:f1484bfa0574 105 }
wim 0:e7bc81df3e38 106 }
wim 0:e7bc81df3e38 107
wim 1:12dadbc0017d 108 if (keydata[LEDKEY8_SW2_IDX] == LEDKEY8_SW2_BIT) { //sw2
wim 0:e7bc81df3e38 109 LEDKEY8.cls();
wim 0:e7bc81df3e38 110 // LEDKEY8.writeData(hello_str);
wim 0:e7bc81df3e38 111 #if(1)
wim 0:e7bc81df3e38 112 //test to show all segs
wim 0:e7bc81df3e38 113 pc.printf("Show all segs\r\n");
wim 0:e7bc81df3e38 114 wait(1);
wim 0:e7bc81df3e38 115 LEDKEY8.cls();
wim 0:e7bc81df3e38 116
wim 0:e7bc81df3e38 117 for (int i=0; i<TM1638_DISPLAY_MEM; i++) {
wim 0:e7bc81df3e38 118 for (int bit=0; bit<8; bit++) {
wim 0:e7bc81df3e38 119 LEDKEY8.cls();
wim 0:e7bc81df3e38 120
wim 0:e7bc81df3e38 121 bits = 0x01 << bit;
wim 0:e7bc81df3e38 122 LEDKEY8.writeData(i, bits);
wim 0:e7bc81df3e38 123
wim 0:e7bc81df3e38 124 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:e7bc81df3e38 125 // wait(0.5);
wim 0:e7bc81df3e38 126 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 127 }
wim 0:e7bc81df3e38 128 }
wim 1:12dadbc0017d 129 pc.printf("\r\nShow all segs done\r\n");
wim 0:e7bc81df3e38 130 #endif
wim 0:e7bc81df3e38 131
wim 0:e7bc81df3e38 132 }
wim 0:e7bc81df3e38 133
wim 1:12dadbc0017d 134 if (keydata[LEDKEY8_SW3_IDX] == LEDKEY8_SW3_BIT) { //sw3
wim 0:e7bc81df3e38 135 // LEDKEY8.cls();
wim 0:e7bc81df3e38 136 // LEDKEY8.writeData(mbed_str);
wim 0:e7bc81df3e38 137
wim 3:f1484bfa0574 138
wim 2:d6720abfe574 139 #if(1)
wim 2:d6720abfe574 140 //test to show all chars
wim 3:f1484bfa0574 141 pc.printf("Show all Alpha chars\r\n");
wim 3:f1484bfa0574 142
wim 3:f1484bfa0574 143 // 01234567
wim 3:f1484bfa0574 144 const char NATO[][9] = { {"Alpha "},
wim 3:f1484bfa0574 145 {"Bravo "},
wim 3:f1484bfa0574 146 {"Charlie "},
wim 3:f1484bfa0574 147 {"Delta "},
wim 3:f1484bfa0574 148 {"Echo "},
wim 3:f1484bfa0574 149 {"Foxtrot "},
wim 3:f1484bfa0574 150 {"Golf "},
wim 3:f1484bfa0574 151 {"Hotel "},
wim 3:f1484bfa0574 152 {"India "},
wim 3:f1484bfa0574 153 {"Juliet "},
wim 3:f1484bfa0574 154 {"Kilo "},
wim 3:f1484bfa0574 155 {"Lima "},
wim 3:f1484bfa0574 156 {"Mike "},
wim 3:f1484bfa0574 157 {"November"},
wim 3:f1484bfa0574 158 {"Oscar "},
wim 3:f1484bfa0574 159 {"Papa "},
wim 3:f1484bfa0574 160 {"Quebec "},
wim 3:f1484bfa0574 161 {"Romeo "},
wim 3:f1484bfa0574 162 {"Sierra "},
wim 3:f1484bfa0574 163 {"Tango "},
wim 3:f1484bfa0574 164 {"Uniform "},
wim 3:f1484bfa0574 165 {"Victor "},
wim 3:f1484bfa0574 166 {"Wiskey "},
wim 3:f1484bfa0574 167 {"X-ray "},
wim 3:f1484bfa0574 168 {"Yankee "},
wim 3:f1484bfa0574 169 {"Zulu "}
wim 3:f1484bfa0574 170 };
wim 3:f1484bfa0574 171
wim 3:f1484bfa0574 172 LEDKEY8.cls(); // clear all, preserve Icons
wim 3:f1484bfa0574 173 for (int i=0; i<26; i++) {
wim 3:f1484bfa0574 174 LEDKEY8.locate(0);
wim 3:f1484bfa0574 175 LEDKEY8.printf("%s", NATO[i]);
wim 3:f1484bfa0574 176 wait(0.5);
wim 3:f1484bfa0574 177 }
wim 3:f1484bfa0574 178 pc.printf("Show all alpha chars done\r\n");
wim 3:f1484bfa0574 179 #endif
wim 3:f1484bfa0574 180
wim 3:f1484bfa0574 181 #if(0)
wim 3:f1484bfa0574 182 //test to show all chars
wim 2:d6720abfe574 183 pc.printf("Show all alpha chars\r\n");
wim 2:d6720abfe574 184 wait(1);
wim 2:d6720abfe574 185 LEDKEY8.cls();
wim 2:d6720abfe574 186
wim 2:d6720abfe574 187 for (int i=0; i<26; i++) {
wim 2:d6720abfe574 188 LEDKEY8.printf("%c", char(i + 'A'));
wim 2:d6720abfe574 189 // LEDKEY8.printf("%c", char(i + 'a'));
wim 2:d6720abfe574 190 wait(0.25);
wim 2:d6720abfe574 191 }
wim 2:d6720abfe574 192 pc.printf("Show all alpha chars done\r\n");
wim 2:d6720abfe574 193 #endif
wim 2:d6720abfe574 194
wim 3:f1484bfa0574 195 #if(0)
wim 0:e7bc81df3e38 196 //test to show all chars
wim 0:e7bc81df3e38 197 pc.printf("Show all chars\r\n");
wim 0:e7bc81df3e38 198 wait(1);
wim 0:e7bc81df3e38 199 LEDKEY8.cls();
wim 2:d6720abfe574 200
wim 2:d6720abfe574 201 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 2:d6720abfe574 202 LEDKEY8.printf("%c", char(i));
wim 2:d6720abfe574 203 // wait(0.25);
wim 2:d6720abfe574 204 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 205 }
wim 0:e7bc81df3e38 206 pc.printf("Show all chars done\r\n");
wim 0:e7bc81df3e38 207 #endif
wim 0:e7bc81df3e38 208
wim 0:e7bc81df3e38 209
wim 0:e7bc81df3e38 210 #if(0)
wim 0:e7bc81df3e38 211 //test to show all digits (base is 10)
wim 0:e7bc81df3e38 212 pc.printf("Show all digits\r\n");
wim 0:e7bc81df3e38 213 wait(1);
wim 0:e7bc81df3e38 214 LEDKEY8.cls();
wim 0:e7bc81df3e38 215
wim 0:e7bc81df3e38 216 int val = 1;
wim 0:e7bc81df3e38 217 for (int i=0; i<LEDKEY8_NR_DIGITS; i++) {
wim 0:e7bc81df3e38 218
wim 0:e7bc81df3e38 219 for (int cnt=0; cnt<10; cnt++) {
wim 0:e7bc81df3e38 220 LEDKEY8.locate(0);
wim 0:e7bc81df3e38 221 LEDKEY8.printf("%07d", (val * cnt));
wim 0:e7bc81df3e38 222
wim 0:e7bc81df3e38 223 // wait(0.5);
wim 0:e7bc81df3e38 224 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 225 }
wim 0:e7bc81df3e38 226 val = val * 10;
wim 0:e7bc81df3e38 227 }
wim 1:12dadbc0017d 228 pc.printf("\r\nShow all digits done\r\n");
wim 0:e7bc81df3e38 229 #endif
wim 0:e7bc81df3e38 230
wim 0:e7bc81df3e38 231 #if(1)
wim 0:e7bc81df3e38 232 //test to show all digits (base is 0x10)
wim 0:e7bc81df3e38 233 pc.printf("Show all hex digits\r\n");
wim 0:e7bc81df3e38 234 wait(1);
wim 0:e7bc81df3e38 235 LEDKEY8.cls();
wim 0:e7bc81df3e38 236
wim 0:e7bc81df3e38 237 LEDKEY8.printf("%08x", 0x012345AB);
wim 0:e7bc81df3e38 238 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 239
wim 0:e7bc81df3e38 240 int val = 1;
wim 0:e7bc81df3e38 241 for (int i=0; i<LEDKEY8_NR_DIGITS; i++) {
wim 0:e7bc81df3e38 242
wim 0:e7bc81df3e38 243 for (int cnt=0; cnt<0x10; cnt++) {
wim 0:e7bc81df3e38 244 LEDKEY8.locate(0);
wim 0:e7bc81df3e38 245 LEDKEY8.printf("%08x", (val * cnt));
wim 0:e7bc81df3e38 246
wim 0:e7bc81df3e38 247 // wait(0.5);
wim 0:e7bc81df3e38 248 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 249 }
wim 0:e7bc81df3e38 250 val = val * 0x10;
wim 0:e7bc81df3e38 251 }
wim 1:12dadbc0017d 252 pc.printf("\r\nShow all hex digits done\r\n");
wim 0:e7bc81df3e38 253 #endif
wim 0:e7bc81df3e38 254 }
wim 1:12dadbc0017d 255
wim 1:12dadbc0017d 256 if (keydata[LEDKEY8_SW4_IDX] == LEDKEY8_SW4_BIT) { //sw4
wim 0:e7bc81df3e38 257 // LEDKEY8.cls();
wim 0:e7bc81df3e38 258 // LEDKEY8.writeData(mbed_str);
wim 0:e7bc81df3e38 259 #if(1)
wim 0:e7bc81df3e38 260 //test to show all icons
wim 0:e7bc81df3e38 261 pc.printf("Show all icons\r\n");
wim 0:e7bc81df3e38 262 LEDKEY8.cls(true); // Also clear all Icons
wim 0:e7bc81df3e38 263
wim 0:e7bc81df3e38 264 float delay=0.1;
wim 0:e7bc81df3e38 265 // Icons on
wim 0:e7bc81df3e38 266 LEDKEY8.setIcon(TM1638_LEDKEY8::LD1); wait(delay);
wim 0:e7bc81df3e38 267 LEDKEY8.setIcon(TM1638_LEDKEY8::LD2); wait(delay);
wim 0:e7bc81df3e38 268 LEDKEY8.setIcon(TM1638_LEDKEY8::LD3); wait(delay);
wim 0:e7bc81df3e38 269 LEDKEY8.setIcon(TM1638_LEDKEY8::LD4); wait(delay);
wim 0:e7bc81df3e38 270 LEDKEY8.setIcon(TM1638_LEDKEY8::LD5); wait(delay);
wim 0:e7bc81df3e38 271 LEDKEY8.setIcon(TM1638_LEDKEY8::LD6); wait(delay);
wim 0:e7bc81df3e38 272 LEDKEY8.setIcon(TM1638_LEDKEY8::LD7); wait(delay);
wim 0:e7bc81df3e38 273 LEDKEY8.setIcon(TM1638_LEDKEY8::LD8); wait(delay);
wim 0:e7bc81df3e38 274
wim 0:e7bc81df3e38 275 wait(delay);
wim 0:e7bc81df3e38 276
wim 0:e7bc81df3e38 277 // Icons off
wim 0:e7bc81df3e38 278 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD1); wait(delay);
wim 0:e7bc81df3e38 279 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD2); wait(delay);
wim 0:e7bc81df3e38 280 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD3); wait(delay);
wim 0:e7bc81df3e38 281 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD4); wait(delay);
wim 0:e7bc81df3e38 282 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD5); wait(delay);
wim 0:e7bc81df3e38 283 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD6); wait(delay);
wim 0:e7bc81df3e38 284 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD7); wait(delay);
wim 0:e7bc81df3e38 285 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD8); wait(delay);
wim 0:e7bc81df3e38 286
wim 0:e7bc81df3e38 287 // wait(1);
wim 1:12dadbc0017d 288 // LEDKEY8.cls(); // clear all, preserve Icons
wim 0:e7bc81df3e38 289 pc.printf("Show all icons done\r\n");
wim 0:e7bc81df3e38 290 #endif
wim 0:e7bc81df3e38 291 }
wim 0:e7bc81df3e38 292
wim 1:12dadbc0017d 293 if (keydata[LEDKEY8_SW5_IDX] == LEDKEY8_SW5_BIT) { //sw5
wim 1:12dadbc0017d 294 LEDKEY8.cls(); // clear all, preserve Icons
wim 3:f1484bfa0574 295
wim 3:f1484bfa0574 296 #if(0)
wim 3:f1484bfa0574 297 LEDKEY8.printf("Count");
wim 3:f1484bfa0574 298 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 3:f1484bfa0574 299 LEDKEY8.locate(6);
wim 3:f1484bfa0574 300 LEDKEY8.printf("%02x", cnt);
wim 3:f1484bfa0574 301 wait(0.2);
wim 3:f1484bfa0574 302 }
wim 3:f1484bfa0574 303 #endif
wim 3:f1484bfa0574 304
wim 3:f1484bfa0574 305
wim 2:d6720abfe574 306 // LEDKEY8.writeData(hello_str);
wim 2:d6720abfe574 307 LEDKEY8.printf("hello");
wim 0:e7bc81df3e38 308 }
wim 0:e7bc81df3e38 309
wim 1:12dadbc0017d 310 if (keydata[LEDKEY8_SW6_IDX] == LEDKEY8_SW6_BIT) { //sw6
wim 1:12dadbc0017d 311 LEDKEY8.cls(); // clear all, preserve Icons
wim 2:d6720abfe574 312 // LEDKEY8.writeData(bye_str);
wim 2:d6720abfe574 313 LEDKEY8.printf("Bye");
wim 1:12dadbc0017d 314 }
wim 1:12dadbc0017d 315
wim 1:12dadbc0017d 316 if (keydata[LEDKEY8_SW7_IDX] == LEDKEY8_SW7_BIT) { //sw7
wim 1:12dadbc0017d 317 LEDKEY8.cls(); // clear all, preserve Icons
wim 1:12dadbc0017d 318 LEDKEY8.printf("%2.3f", -0.1234); // test decimal point display
wim 1:12dadbc0017d 319 wait(0.5);
wim 1:12dadbc0017d 320 LEDKEY8.cls(); // clear all, preserve Icons
wim 1:12dadbc0017d 321 LEDKEY8.printf("%2.3f", -012.345); // test decimal point display
wim 0:e7bc81df3e38 322 }
wim 0:e7bc81df3e38 323
wim 1:12dadbc0017d 324 if (keydata[LEDKEY8_SW8_IDX] == LEDKEY8_SW8_BIT) { //sw8
wim 1:12dadbc0017d 325 float delay=0.1;
wim 1:12dadbc0017d 326 // Icons on
wim 1:12dadbc0017d 327 LEDKEY8.setIcon(TM1638_LEDKEY8::DP1); wait(delay);
wim 1:12dadbc0017d 328 LEDKEY8.setIcon(TM1638_LEDKEY8::DP2); wait(delay);
wim 1:12dadbc0017d 329 LEDKEY8.setIcon(TM1638_LEDKEY8::DP3); wait(delay);
wim 1:12dadbc0017d 330 LEDKEY8.setIcon(TM1638_LEDKEY8::DP4); wait(delay);
wim 1:12dadbc0017d 331 LEDKEY8.setIcon(TM1638_LEDKEY8::DP5); wait(delay);
wim 1:12dadbc0017d 332 LEDKEY8.setIcon(TM1638_LEDKEY8::DP6); wait(delay);
wim 1:12dadbc0017d 333 LEDKEY8.setIcon(TM1638_LEDKEY8::DP7); wait(delay);
wim 1:12dadbc0017d 334 LEDKEY8.setIcon(TM1638_LEDKEY8::DP8); wait(delay);
wim 1:12dadbc0017d 335
wim 1:12dadbc0017d 336 wait(delay);
wim 1:12dadbc0017d 337
wim 1:12dadbc0017d 338 // Icons off
wim 1:12dadbc0017d 339 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP8); wait(delay);
wim 1:12dadbc0017d 340 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP7); wait(delay);
wim 1:12dadbc0017d 341 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP6); wait(delay);
wim 1:12dadbc0017d 342 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP5); wait(delay);
wim 1:12dadbc0017d 343 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP4); wait(delay);
wim 1:12dadbc0017d 344 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP3); wait(delay);
wim 1:12dadbc0017d 345 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP2); wait(delay);
wim 1:12dadbc0017d 346 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP1); wait(delay);
wim 0:e7bc81df3e38 347 }
wim 0:e7bc81df3e38 348
wim 0:e7bc81df3e38 349 } //if Key
wim 0:e7bc81df3e38 350
wim 0:e7bc81df3e38 351 myled = !myled;
wim 0:e7bc81df3e38 352 wait(0.3);
wim 0:e7bc81df3e38 353 } //while
wim 0:e7bc81df3e38 354 }
wim 0:e7bc81df3e38 355 #endif
wim 0:e7bc81df3e38 356
wim 0:e7bc81df3e38 357
wim 0:e7bc81df3e38 358
wim 0:e7bc81df3e38 359 #if (TM1638_TEST == 1)
wim 0:e7bc81df3e38 360 // Direct TM1638 Test
wim 0:e7bc81df3e38 361
wim 0:e7bc81df3e38 362 Serial pc(USBTX, USBRX);
wim 0:e7bc81df3e38 363 DigitalOut myled(LED1);
wim 0:e7bc81df3e38 364
wim 0:e7bc81df3e38 365 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments)
wim 0:e7bc81df3e38 366 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03};
wim 0:e7bc81df3e38 367 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 0:e7bc81df3e38 368
wim 0:e7bc81df3e38 369 // KeyData_t size is 4 bytes
wim 0:e7bc81df3e38 370 TM1638::KeyData_t keydata;
wim 0:e7bc81df3e38 371
wim 0:e7bc81df3e38 372 TM1638 TM1638(p5,p6,p7, p8);
wim 0:e7bc81df3e38 373
wim 0:e7bc81df3e38 374 char cmd, bits;
wim 0:e7bc81df3e38 375 int main() {
wim 0:e7bc81df3e38 376
wim 0:e7bc81df3e38 377 pc.printf("Hello World\r\n"); //
wim 0:e7bc81df3e38 378
wim 0:e7bc81df3e38 379 TM1638.cls();
wim 0:e7bc81df3e38 380 TM1638.writeData(all_str);
wim 0:e7bc81df3e38 381 wait(2);
wim 0:e7bc81df3e38 382 TM1638.setBrightness(TM1638_BRT3);
wim 0:e7bc81df3e38 383 wait(1);
wim 0:e7bc81df3e38 384 TM1638.setBrightness(TM1638_BRT0);
wim 0:e7bc81df3e38 385 wait(1);
wim 0:e7bc81df3e38 386 TM1638.setBrightness(TM1638_BRT4);
wim 0:e7bc81df3e38 387
wim 0:e7bc81df3e38 388 while (1) {
wim 0:e7bc81df3e38 389
wim 0:e7bc81df3e38 390 // Check and read keydata
wim 0:e7bc81df3e38 391 if (TM1638.getKeys(&keydata)) {
wim 0:e7bc81df3e38 392 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]);
wim 0:e7bc81df3e38 393
wim 0:e7bc81df3e38 394 if (keydata[0] == 0x01) { //sw1
wim 0:e7bc81df3e38 395 TM1638.cls();
wim 0:e7bc81df3e38 396 TM1638.writeData(all_str);
wim 0:e7bc81df3e38 397 }
wim 0:e7bc81df3e38 398
wim 0:e7bc81df3e38 399 if (keydata[1] == 0x01) { //sw2
wim 0:e7bc81df3e38 400 TM1638.cls();
wim 0:e7bc81df3e38 401 TM1638.writeData(cls_str);
wim 0:e7bc81df3e38 402 }
wim 0:e7bc81df3e38 403
wim 0:e7bc81df3e38 404
wim 0:e7bc81df3e38 405 if (keydata[2] == 0x01) { //sw3
wim 0:e7bc81df3e38 406 #if(1)
wim 0:e7bc81df3e38 407 //test to show all segs
wim 0:e7bc81df3e38 408 pc.printf("Show all segs\r\n");
wim 0:e7bc81df3e38 409 wait(1);
wim 0:e7bc81df3e38 410 TM1638.cls();
wim 0:e7bc81df3e38 411
wim 0:e7bc81df3e38 412 for (int i=0; i<TM1638_DISPLAY_MEM; i++) {
wim 0:e7bc81df3e38 413 for (int bit=0; bit<8; bit++) {
wim 0:e7bc81df3e38 414 TM1638.cls();
wim 0:e7bc81df3e38 415
wim 0:e7bc81df3e38 416 bits = 0x01 << bit;
wim 0:e7bc81df3e38 417 TM1638.writeData(i, bits);
wim 0:e7bc81df3e38 418
wim 0:e7bc81df3e38 419 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:e7bc81df3e38 420 // wait(0.5);
wim 0:e7bc81df3e38 421 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 422 }
wim 0:e7bc81df3e38 423 }
wim 0:e7bc81df3e38 424 pc.printf("Show all segs done\r\n");
wim 0:e7bc81df3e38 425 #endif
wim 0:e7bc81df3e38 426 }
wim 0:e7bc81df3e38 427
wim 0:e7bc81df3e38 428 if (keydata[3] == 0x01) { //sw4
wim 0:e7bc81df3e38 429 TM1638.cls();
wim 0:e7bc81df3e38 430 // TM1638.writeData(hello_str);
wim 0:e7bc81df3e38 431 }
wim 0:e7bc81df3e38 432
wim 0:e7bc81df3e38 433
wim 0:e7bc81df3e38 434 } //if Key
wim 0:e7bc81df3e38 435
wim 0:e7bc81df3e38 436 myled = !myled;
wim 0:e7bc81df3e38 437 wait(0.3);
wim 0:e7bc81df3e38 438 } //while
wim 0:e7bc81df3e38 439 }
wim 0:e7bc81df3e38 440 #endif