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:
Sun Jan 31 12:11:29 2016 +0000
Revision:
4:0e1ffa381c62
Parent:
3:f1484bfa0574
Added QYF-TM1638 and LKM1638, refactoring of writeData()

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 4:0e1ffa381c62 4 * 2016, v03: WH, Added QYF-TM1638 and LKM1638, refactoring of writeData()
wim 0:e7bc81df3e38 5 *
wim 0:e7bc81df3e38 6 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:e7bc81df3e38 7 * of this software and associated documentation files (the "Software"), to deal
wim 0:e7bc81df3e38 8 * in the Software without restriction, including without limitation the rights
wim 0:e7bc81df3e38 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:e7bc81df3e38 10 * copies of the Software, and to permit persons to whom the Software is
wim 0:e7bc81df3e38 11 * furnished to do so, subject to the following conditions:
wim 0:e7bc81df3e38 12 *
wim 0:e7bc81df3e38 13 * The above copyright notice and this permission notice shall be included in
wim 0:e7bc81df3e38 14 * all copies or substantial portions of the Software.
wim 0:e7bc81df3e38 15 *
wim 0:e7bc81df3e38 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:e7bc81df3e38 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:e7bc81df3e38 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:e7bc81df3e38 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:e7bc81df3e38 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:e7bc81df3e38 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:e7bc81df3e38 22 * THE SOFTWARE.
wim 0:e7bc81df3e38 23 */
wim 0:e7bc81df3e38 24 #include "mbed.h"
wim 0:e7bc81df3e38 25 #include "TM1638.h"
wim 0:e7bc81df3e38 26
wim 4:0e1ffa381c62 27 // 01234567
wim 4:0e1ffa381c62 28 const char NATO[][9] = { {"Alpha "},
wim 4:0e1ffa381c62 29 {"Bravo "},
wim 4:0e1ffa381c62 30 {"Charlie "},
wim 4:0e1ffa381c62 31 {"Delta "},
wim 4:0e1ffa381c62 32 {"Echo "},
wim 4:0e1ffa381c62 33 {"Foxtrot "},
wim 4:0e1ffa381c62 34 {"Golf "},
wim 4:0e1ffa381c62 35 {"Hotel "},
wim 4:0e1ffa381c62 36 {"India "},
wim 4:0e1ffa381c62 37 {"Juliet "},
wim 4:0e1ffa381c62 38 {"Kilo "},
wim 4:0e1ffa381c62 39 {"Lima "},
wim 4:0e1ffa381c62 40 {"Mike "},
wim 4:0e1ffa381c62 41 {"November"},
wim 4:0e1ffa381c62 42 {"Oscar "},
wim 4:0e1ffa381c62 43 {"Papa "},
wim 4:0e1ffa381c62 44 {"Quebec "},
wim 4:0e1ffa381c62 45 {"Romeo "},
wim 4:0e1ffa381c62 46 {"Sierra "},
wim 4:0e1ffa381c62 47 {"Tango "},
wim 4:0e1ffa381c62 48 {"Uniform "},
wim 4:0e1ffa381c62 49 {"Victor "},
wim 4:0e1ffa381c62 50 {"Whiskey "},
wim 4:0e1ffa381c62 51 {"X-ray "},
wim 4:0e1ffa381c62 52 {"Yankee "},
wim 4:0e1ffa381c62 53 {"Zulu "}
wim 4:0e1ffa381c62 54 };
wim 4:0e1ffa381c62 55
wim 4:0e1ffa381c62 56
wim 0:e7bc81df3e38 57 #if (LEDKEY8_TEST == 1)
wim 0:e7bc81df3e38 58 // LEDKEY8 TM1638 Test
wim 0:e7bc81df3e38 59 #include "Font_7Seg.h"
wim 0:e7bc81df3e38 60
wim 0:e7bc81df3e38 61 Serial pc(USBTX, USBRX);
wim 0:e7bc81df3e38 62 DigitalOut myled(LED1);
wim 0:e7bc81df3e38 63
wim 0:e7bc81df3e38 64 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments)
wim 0:e7bc81df3e38 65 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03};
wim 0:e7bc81df3e38 66 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 0:e7bc81df3e38 67 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 68 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 69
wim 3:f1484bfa0574 70 TM1638::DisplayData_t animate[] = {
wim 3:f1484bfa0574 71 {S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 72 {0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 73 {0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 74 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 75 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 76 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 77 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00},
wim 3:f1484bfa0574 78 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00},
wim 3:f1484bfa0574 79
wim 3:f1484bfa0574 80 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_B,0x00},
wim 3:f1484bfa0574 81 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_C,0x00},
wim 3:f1484bfa0574 82
wim 3:f1484bfa0574 83 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00},
wim 3:f1484bfa0574 84 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00},
wim 3:f1484bfa0574 85 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 86 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 87 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 88 {0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 89 {0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 90 {S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 91
wim 3:f1484bfa0574 92 {S7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 93 {S7_F,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 3:f1484bfa0574 94 };
wim 4:0e1ffa381c62 95 // KeyData_t size is 4 bytes
wim 0:e7bc81df3e38 96 TM1638::KeyData_t keydata;
wim 0:e7bc81df3e38 97
wim 0:e7bc81df3e38 98 //TM1638_LEDKEY8 declaration
wim 0:e7bc81df3e38 99 TM1638_LEDKEY8 LEDKEY8(p5,p6,p7, p8);
wim 0:e7bc81df3e38 100
wim 0:e7bc81df3e38 101 char cmd, bits;
wim 0:e7bc81df3e38 102 int main() {
wim 0:e7bc81df3e38 103
wim 0:e7bc81df3e38 104 pc.printf("Hello World\r\n"); //
wim 0:e7bc81df3e38 105
wim 0:e7bc81df3e38 106 LEDKEY8.cls();
wim 0:e7bc81df3e38 107 LEDKEY8.writeData(all_str);
wim 0:e7bc81df3e38 108 wait(2);
wim 0:e7bc81df3e38 109 LEDKEY8.setBrightness(TM1638_BRT3);
wim 0:e7bc81df3e38 110 wait(1);
wim 0:e7bc81df3e38 111 LEDKEY8.setBrightness(TM1638_BRT0);
wim 0:e7bc81df3e38 112 wait(1);
wim 0:e7bc81df3e38 113 LEDKEY8.setBrightness(TM1638_BRT4);
wim 0:e7bc81df3e38 114
wim 0:e7bc81df3e38 115 wait(1);
wim 0:e7bc81df3e38 116 LEDKEY8.cls(true);
wim 0:e7bc81df3e38 117 LEDKEY8.writeData(hello_str);
wim 0:e7bc81df3e38 118
wim 0:e7bc81df3e38 119 while (1) {
wim 0:e7bc81df3e38 120
wim 0:e7bc81df3e38 121 // Check and read keydata
wim 0:e7bc81df3e38 122 if (LEDKEY8.getKeys(&keydata)) {
wim 0:e7bc81df3e38 123 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 124
wim 1:12dadbc0017d 125 if (keydata[LEDKEY8_SW1_IDX] == LEDKEY8_SW1_BIT) { //sw1
wim 0:e7bc81df3e38 126 LEDKEY8.cls();
wim 0:e7bc81df3e38 127 LEDKEY8.writeData(all_str);
wim 3:f1484bfa0574 128
wim 3:f1484bfa0574 129 wait(0.5);
wim 3:f1484bfa0574 130 for (int i=0; i<20; i++) {
wim 3:f1484bfa0574 131 LEDKEY8.writeData(animate[i]);
wim 3:f1484bfa0574 132 wait(0.05);
wim 3:f1484bfa0574 133 }
wim 0:e7bc81df3e38 134 }
wim 0:e7bc81df3e38 135
wim 1:12dadbc0017d 136 if (keydata[LEDKEY8_SW2_IDX] == LEDKEY8_SW2_BIT) { //sw2
wim 0:e7bc81df3e38 137 LEDKEY8.cls();
wim 0:e7bc81df3e38 138 // LEDKEY8.writeData(hello_str);
wim 0:e7bc81df3e38 139 #if(1)
wim 0:e7bc81df3e38 140 //test to show all segs
wim 0:e7bc81df3e38 141 pc.printf("Show all segs\r\n");
wim 0:e7bc81df3e38 142 wait(1);
wim 0:e7bc81df3e38 143 LEDKEY8.cls();
wim 0:e7bc81df3e38 144
wim 0:e7bc81df3e38 145 for (int i=0; i<TM1638_DISPLAY_MEM; i++) {
wim 0:e7bc81df3e38 146 for (int bit=0; bit<8; bit++) {
wim 0:e7bc81df3e38 147 LEDKEY8.cls();
wim 0:e7bc81df3e38 148
wim 0:e7bc81df3e38 149 bits = 0x01 << bit;
wim 4:0e1ffa381c62 150 LEDKEY8.writeData(bits, i);
wim 0:e7bc81df3e38 151
wim 0:e7bc81df3e38 152 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:e7bc81df3e38 153 // wait(0.5);
wim 0:e7bc81df3e38 154 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 155 }
wim 0:e7bc81df3e38 156 }
wim 1:12dadbc0017d 157 pc.printf("\r\nShow all segs done\r\n");
wim 0:e7bc81df3e38 158 #endif
wim 0:e7bc81df3e38 159
wim 0:e7bc81df3e38 160 }
wim 0:e7bc81df3e38 161
wim 1:12dadbc0017d 162 if (keydata[LEDKEY8_SW3_IDX] == LEDKEY8_SW3_BIT) { //sw3
wim 0:e7bc81df3e38 163 // LEDKEY8.cls();
wim 0:e7bc81df3e38 164 // LEDKEY8.writeData(mbed_str);
wim 0:e7bc81df3e38 165
wim 3:f1484bfa0574 166
wim 2:d6720abfe574 167 #if(1)
wim 2:d6720abfe574 168 //test to show all chars
wim 4:0e1ffa381c62 169 pc.printf("Show all NATO Alpha chars\r\n");
wim 3:f1484bfa0574 170
wim 3:f1484bfa0574 171 LEDKEY8.cls(); // clear all, preserve Icons
wim 3:f1484bfa0574 172 for (int i=0; i<26; i++) {
wim 3:f1484bfa0574 173 LEDKEY8.locate(0);
wim 3:f1484bfa0574 174 LEDKEY8.printf("%s", NATO[i]);
wim 3:f1484bfa0574 175 wait(0.5);
wim 3:f1484bfa0574 176 }
wim 4:0e1ffa381c62 177 pc.printf("Show all NATO Alpha chars done\r\n");
wim 3:f1484bfa0574 178 #endif
wim 3:f1484bfa0574 179
wim 3:f1484bfa0574 180 #if(0)
wim 3:f1484bfa0574 181 //test to show all chars
wim 2:d6720abfe574 182 pc.printf("Show all alpha chars\r\n");
wim 2:d6720abfe574 183 wait(1);
wim 2:d6720abfe574 184 LEDKEY8.cls();
wim 2:d6720abfe574 185
wim 2:d6720abfe574 186 for (int i=0; i<26; i++) {
wim 2:d6720abfe574 187 LEDKEY8.printf("%c", char(i + 'A'));
wim 2:d6720abfe574 188 // LEDKEY8.printf("%c", char(i + 'a'));
wim 2:d6720abfe574 189 wait(0.25);
wim 2:d6720abfe574 190 }
wim 2:d6720abfe574 191 pc.printf("Show all alpha chars done\r\n");
wim 2:d6720abfe574 192 #endif
wim 2:d6720abfe574 193
wim 3:f1484bfa0574 194 #if(0)
wim 0:e7bc81df3e38 195 //test to show all chars
wim 0:e7bc81df3e38 196 pc.printf("Show all chars\r\n");
wim 0:e7bc81df3e38 197 wait(1);
wim 0:e7bc81df3e38 198 LEDKEY8.cls();
wim 2:d6720abfe574 199
wim 2:d6720abfe574 200 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 2:d6720abfe574 201 LEDKEY8.printf("%c", char(i));
wim 2:d6720abfe574 202 // wait(0.25);
wim 2:d6720abfe574 203 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 204 }
wim 0:e7bc81df3e38 205 pc.printf("Show all chars done\r\n");
wim 0:e7bc81df3e38 206 #endif
wim 0:e7bc81df3e38 207
wim 0:e7bc81df3e38 208
wim 0:e7bc81df3e38 209 #if(0)
wim 0:e7bc81df3e38 210 //test to show all digits (base is 10)
wim 0:e7bc81df3e38 211 pc.printf("Show all digits\r\n");
wim 0:e7bc81df3e38 212 wait(1);
wim 0:e7bc81df3e38 213 LEDKEY8.cls();
wim 0:e7bc81df3e38 214
wim 0:e7bc81df3e38 215 for (int i=0; i<LEDKEY8_NR_DIGITS; i++) {
wim 0:e7bc81df3e38 216
wim 0:e7bc81df3e38 217 for (int cnt=0; cnt<10; cnt++) {
wim 4:0e1ffa381c62 218 LEDKEY8.locate(i);
wim 4:0e1ffa381c62 219 LEDKEY8.printf("%0d", cnt);
wim 0:e7bc81df3e38 220
wim 0:e7bc81df3e38 221 // wait(0.5);
wim 0:e7bc81df3e38 222 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 223 }
wim 0:e7bc81df3e38 224 }
wim 1:12dadbc0017d 225 pc.printf("\r\nShow all digits done\r\n");
wim 0:e7bc81df3e38 226 #endif
wim 0:e7bc81df3e38 227
wim 0:e7bc81df3e38 228 #if(1)
wim 0:e7bc81df3e38 229 //test to show all digits (base is 0x10)
wim 0:e7bc81df3e38 230 pc.printf("Show all hex digits\r\n");
wim 0:e7bc81df3e38 231 wait(1);
wim 0:e7bc81df3e38 232 LEDKEY8.cls();
wim 0:e7bc81df3e38 233
wim 0:e7bc81df3e38 234 LEDKEY8.printf("%08x", 0x012345AB);
wim 0:e7bc81df3e38 235 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 236 LEDKEY8.printf("%08x", 0x00);
wim 4:0e1ffa381c62 237
wim 0:e7bc81df3e38 238 for (int i=0; i<LEDKEY8_NR_DIGITS; i++) {
wim 0:e7bc81df3e38 239
wim 0:e7bc81df3e38 240 for (int cnt=0; cnt<0x10; cnt++) {
wim 4:0e1ffa381c62 241 LEDKEY8.locate(i);
wim 4:0e1ffa381c62 242 LEDKEY8.printf("%0x", cnt);
wim 0:e7bc81df3e38 243
wim 0:e7bc81df3e38 244 // wait(0.5);
wim 0:e7bc81df3e38 245 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 246 }
wim 4:0e1ffa381c62 247
wim 0:e7bc81df3e38 248 }
wim 1:12dadbc0017d 249 pc.printf("\r\nShow all hex digits done\r\n");
wim 0:e7bc81df3e38 250 #endif
wim 0:e7bc81df3e38 251 }
wim 1:12dadbc0017d 252
wim 1:12dadbc0017d 253 if (keydata[LEDKEY8_SW4_IDX] == LEDKEY8_SW4_BIT) { //sw4
wim 0:e7bc81df3e38 254 // LEDKEY8.cls();
wim 0:e7bc81df3e38 255 // LEDKEY8.writeData(mbed_str);
wim 0:e7bc81df3e38 256 #if(1)
wim 0:e7bc81df3e38 257 //test to show all icons
wim 0:e7bc81df3e38 258 pc.printf("Show all icons\r\n");
wim 0:e7bc81df3e38 259 LEDKEY8.cls(true); // Also clear all Icons
wim 0:e7bc81df3e38 260
wim 0:e7bc81df3e38 261 float delay=0.1;
wim 0:e7bc81df3e38 262 // Icons on
wim 0:e7bc81df3e38 263 LEDKEY8.setIcon(TM1638_LEDKEY8::LD1); wait(delay);
wim 0:e7bc81df3e38 264 LEDKEY8.setIcon(TM1638_LEDKEY8::LD2); wait(delay);
wim 0:e7bc81df3e38 265 LEDKEY8.setIcon(TM1638_LEDKEY8::LD3); wait(delay);
wim 0:e7bc81df3e38 266 LEDKEY8.setIcon(TM1638_LEDKEY8::LD4); wait(delay);
wim 0:e7bc81df3e38 267 LEDKEY8.setIcon(TM1638_LEDKEY8::LD5); wait(delay);
wim 0:e7bc81df3e38 268 LEDKEY8.setIcon(TM1638_LEDKEY8::LD6); wait(delay);
wim 0:e7bc81df3e38 269 LEDKEY8.setIcon(TM1638_LEDKEY8::LD7); wait(delay);
wim 0:e7bc81df3e38 270 LEDKEY8.setIcon(TM1638_LEDKEY8::LD8); wait(delay);
wim 0:e7bc81df3e38 271
wim 0:e7bc81df3e38 272 wait(delay);
wim 0:e7bc81df3e38 273
wim 0:e7bc81df3e38 274 // Icons off
wim 0:e7bc81df3e38 275 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD1); wait(delay);
wim 0:e7bc81df3e38 276 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD2); wait(delay);
wim 0:e7bc81df3e38 277 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD3); wait(delay);
wim 0:e7bc81df3e38 278 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD4); wait(delay);
wim 0:e7bc81df3e38 279 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD5); wait(delay);
wim 0:e7bc81df3e38 280 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD6); wait(delay);
wim 0:e7bc81df3e38 281 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD7); wait(delay);
wim 0:e7bc81df3e38 282 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD8); wait(delay);
wim 0:e7bc81df3e38 283
wim 0:e7bc81df3e38 284 // wait(1);
wim 1:12dadbc0017d 285 // LEDKEY8.cls(); // clear all, preserve Icons
wim 0:e7bc81df3e38 286 pc.printf("Show all icons done\r\n");
wim 0:e7bc81df3e38 287 #endif
wim 0:e7bc81df3e38 288 }
wim 0:e7bc81df3e38 289
wim 1:12dadbc0017d 290 if (keydata[LEDKEY8_SW5_IDX] == LEDKEY8_SW5_BIT) { //sw5
wim 1:12dadbc0017d 291 LEDKEY8.cls(); // clear all, preserve Icons
wim 3:f1484bfa0574 292
wim 3:f1484bfa0574 293 #if(0)
wim 3:f1484bfa0574 294 LEDKEY8.printf("Count");
wim 3:f1484bfa0574 295 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 3:f1484bfa0574 296 LEDKEY8.locate(6);
wim 3:f1484bfa0574 297 LEDKEY8.printf("%02x", cnt);
wim 3:f1484bfa0574 298 wait(0.2);
wim 3:f1484bfa0574 299 }
wim 3:f1484bfa0574 300 #endif
wim 3:f1484bfa0574 301
wim 3:f1484bfa0574 302
wim 2:d6720abfe574 303 // LEDKEY8.writeData(hello_str);
wim 2:d6720abfe574 304 LEDKEY8.printf("hello");
wim 0:e7bc81df3e38 305 }
wim 0:e7bc81df3e38 306
wim 1:12dadbc0017d 307 if (keydata[LEDKEY8_SW6_IDX] == LEDKEY8_SW6_BIT) { //sw6
wim 1:12dadbc0017d 308 LEDKEY8.cls(); // clear all, preserve Icons
wim 2:d6720abfe574 309 // LEDKEY8.writeData(bye_str);
wim 2:d6720abfe574 310 LEDKEY8.printf("Bye");
wim 1:12dadbc0017d 311 }
wim 1:12dadbc0017d 312
wim 1:12dadbc0017d 313 if (keydata[LEDKEY8_SW7_IDX] == LEDKEY8_SW7_BIT) { //sw7
wim 1:12dadbc0017d 314 LEDKEY8.cls(); // clear all, preserve Icons
wim 1:12dadbc0017d 315 LEDKEY8.printf("%2.3f", -0.1234); // test decimal point display
wim 1:12dadbc0017d 316 wait(0.5);
wim 1:12dadbc0017d 317 LEDKEY8.cls(); // clear all, preserve Icons
wim 1:12dadbc0017d 318 LEDKEY8.printf("%2.3f", -012.345); // test decimal point display
wim 0:e7bc81df3e38 319 }
wim 0:e7bc81df3e38 320
wim 1:12dadbc0017d 321 if (keydata[LEDKEY8_SW8_IDX] == LEDKEY8_SW8_BIT) { //sw8
wim 1:12dadbc0017d 322 float delay=0.1;
wim 1:12dadbc0017d 323 // Icons on
wim 1:12dadbc0017d 324 LEDKEY8.setIcon(TM1638_LEDKEY8::DP1); wait(delay);
wim 1:12dadbc0017d 325 LEDKEY8.setIcon(TM1638_LEDKEY8::DP2); wait(delay);
wim 1:12dadbc0017d 326 LEDKEY8.setIcon(TM1638_LEDKEY8::DP3); wait(delay);
wim 1:12dadbc0017d 327 LEDKEY8.setIcon(TM1638_LEDKEY8::DP4); wait(delay);
wim 1:12dadbc0017d 328 LEDKEY8.setIcon(TM1638_LEDKEY8::DP5); wait(delay);
wim 1:12dadbc0017d 329 LEDKEY8.setIcon(TM1638_LEDKEY8::DP6); wait(delay);
wim 1:12dadbc0017d 330 LEDKEY8.setIcon(TM1638_LEDKEY8::DP7); wait(delay);
wim 1:12dadbc0017d 331 LEDKEY8.setIcon(TM1638_LEDKEY8::DP8); wait(delay);
wim 1:12dadbc0017d 332
wim 1:12dadbc0017d 333 wait(delay);
wim 1:12dadbc0017d 334
wim 1:12dadbc0017d 335 // Icons off
wim 1:12dadbc0017d 336 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP8); wait(delay);
wim 1:12dadbc0017d 337 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP7); wait(delay);
wim 1:12dadbc0017d 338 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP6); wait(delay);
wim 1:12dadbc0017d 339 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP5); wait(delay);
wim 1:12dadbc0017d 340 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP4); wait(delay);
wim 1:12dadbc0017d 341 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP3); wait(delay);
wim 1:12dadbc0017d 342 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP2); wait(delay);
wim 1:12dadbc0017d 343 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP1); wait(delay);
wim 0:e7bc81df3e38 344 }
wim 0:e7bc81df3e38 345
wim 0:e7bc81df3e38 346 } //if Key
wim 0:e7bc81df3e38 347
wim 0:e7bc81df3e38 348 myled = !myled;
wim 0:e7bc81df3e38 349 wait(0.3);
wim 0:e7bc81df3e38 350 } //while
wim 0:e7bc81df3e38 351 }
wim 0:e7bc81df3e38 352 #endif
wim 0:e7bc81df3e38 353
wim 0:e7bc81df3e38 354
wim 4:0e1ffa381c62 355 #if (QYF_TEST == 1)
wim 4:0e1ffa381c62 356 // QYF TM1638 Test
wim 4:0e1ffa381c62 357 #include "Font_7Seg.h"
wim 4:0e1ffa381c62 358
wim 4:0e1ffa381c62 359 Serial pc(USBTX, USBRX);
wim 4:0e1ffa381c62 360 DigitalOut myled(LED1);
wim 4:0e1ffa381c62 361
wim 4:0e1ffa381c62 362 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments)
wim 4:0e1ffa381c62 363 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03};
wim 4:0e1ffa381c62 364 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 4:0e1ffa381c62 365 TM1638::DisplayData_t animate[] = {
wim 4:0e1ffa381c62 366 {S7_A1,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 367 {S7_A2,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 368 {S7_A3,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 369 {S7_A4,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 370 {S7_A5,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 371 {S7_A6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 372 {S7_A7,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 373 {S7_A8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 374
wim 4:0e1ffa381c62 375 {0x00,0x00, S7_B8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 376 {0x00,0x00, 0x00,0x00, S7_C8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 377
wim 4:0e1ffa381c62 378 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 379 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D7,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 380 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 381 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D5,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 382 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D4,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 383 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D3,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 384 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D2,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 385 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D1,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 386
wim 4:0e1ffa381c62 387 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_E1,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 388 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_F1,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 389 };
wim 4:0e1ffa381c62 390 // KeyData_t size is 4 bytes
wim 4:0e1ffa381c62 391 TM1638::KeyData_t keydata;
wim 4:0e1ffa381c62 392
wim 4:0e1ffa381c62 393 //TM1638_QFY declaration
wim 4:0e1ffa381c62 394 TM1638_QYF QYF(p5,p6,p7, p8);
wim 4:0e1ffa381c62 395
wim 4:0e1ffa381c62 396 char cmd, bits;
wim 4:0e1ffa381c62 397 int main() {
wim 4:0e1ffa381c62 398
wim 4:0e1ffa381c62 399 pc.printf("Hello World\r\n"); //
wim 4:0e1ffa381c62 400
wim 4:0e1ffa381c62 401 QYF.cls();
wim 4:0e1ffa381c62 402 QYF.writeData(all_str);
wim 4:0e1ffa381c62 403 wait(2);
wim 4:0e1ffa381c62 404 QYF.setBrightness(TM1638_BRT3);
wim 4:0e1ffa381c62 405 wait(1);
wim 4:0e1ffa381c62 406 QYF.setBrightness(TM1638_BRT0);
wim 4:0e1ffa381c62 407 wait(1);
wim 4:0e1ffa381c62 408 QYF.setBrightness(TM1638_BRT4);
wim 4:0e1ffa381c62 409
wim 4:0e1ffa381c62 410 wait(1);
wim 4:0e1ffa381c62 411 QYF.cls(true);
wim 4:0e1ffa381c62 412 QYF.printf("Hello");
wim 4:0e1ffa381c62 413
wim 4:0e1ffa381c62 414 while (1) {
wim 4:0e1ffa381c62 415
wim 4:0e1ffa381c62 416 // Check and read keydata
wim 4:0e1ffa381c62 417 if (QYF.getKeys(&keydata)) {
wim 4:0e1ffa381c62 418 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]);
wim 4:0e1ffa381c62 419
wim 4:0e1ffa381c62 420 if (keydata[QYF_SW1_IDX] == QYF_SW1_BIT) { //sw1
wim 4:0e1ffa381c62 421 QYF.cls();
wim 4:0e1ffa381c62 422 QYF.writeData(all_str);
wim 4:0e1ffa381c62 423
wim 4:0e1ffa381c62 424 wait(0.5);
wim 4:0e1ffa381c62 425 for (int i=0; i<20; i++) {
wim 4:0e1ffa381c62 426 QYF.writeData(animate[i]);
wim 4:0e1ffa381c62 427 wait(0.05);
wim 4:0e1ffa381c62 428 }
wim 4:0e1ffa381c62 429 }
wim 4:0e1ffa381c62 430
wim 4:0e1ffa381c62 431 if (keydata[QYF_SW2_IDX] == QYF_SW2_BIT) { //sw2
wim 4:0e1ffa381c62 432 QYF.cls();
wim 4:0e1ffa381c62 433 // QYF.writeData(hello_str);
wim 4:0e1ffa381c62 434 #if(1)
wim 4:0e1ffa381c62 435 //test to show all segs
wim 4:0e1ffa381c62 436 pc.printf("Show all segs\r\n");
wim 4:0e1ffa381c62 437 wait(1);
wim 4:0e1ffa381c62 438 QYF.cls();
wim 4:0e1ffa381c62 439
wim 4:0e1ffa381c62 440 for (int i=0; i<TM1638_DISPLAY_MEM; i++) {
wim 4:0e1ffa381c62 441 for (int bit=0; bit<8; bit++) {
wim 4:0e1ffa381c62 442 QYF.cls();
wim 4:0e1ffa381c62 443
wim 4:0e1ffa381c62 444 bits = 0x01 << bit;
wim 4:0e1ffa381c62 445 QYF.writeData(bits, i);
wim 4:0e1ffa381c62 446 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 4:0e1ffa381c62 447 // wait(0.5);
wim 4:0e1ffa381c62 448 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 449 }
wim 4:0e1ffa381c62 450 }
wim 4:0e1ffa381c62 451 pc.printf("\r\nShow all segs done\r\n");
wim 4:0e1ffa381c62 452 #endif
wim 4:0e1ffa381c62 453
wim 4:0e1ffa381c62 454 }
wim 4:0e1ffa381c62 455
wim 4:0e1ffa381c62 456 if (keydata[QYF_SW3_IDX] == QYF_SW3_BIT) { //sw3
wim 4:0e1ffa381c62 457 // QYF.cls();
wim 4:0e1ffa381c62 458
wim 4:0e1ffa381c62 459 #if(1)
wim 4:0e1ffa381c62 460 //test to show all NATO alpha chars
wim 4:0e1ffa381c62 461 pc.printf("Show all NATO Alpha chars\r\n");
wim 4:0e1ffa381c62 462
wim 4:0e1ffa381c62 463 QYF.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 464 for (int i=0; i<26; i++) {
wim 4:0e1ffa381c62 465 QYF.locate(0);
wim 4:0e1ffa381c62 466 QYF.printf("%s", NATO[i]);
wim 4:0e1ffa381c62 467 wait(0.5);
wim 4:0e1ffa381c62 468 }
wim 4:0e1ffa381c62 469 pc.printf("Show all NATO Alpha chars done\r\n");
wim 4:0e1ffa381c62 470 #endif
wim 4:0e1ffa381c62 471
wim 4:0e1ffa381c62 472 #if(0)
wim 4:0e1ffa381c62 473 //test to show all alpha chars
wim 4:0e1ffa381c62 474 pc.printf("Show all alpha chars\r\n");
wim 4:0e1ffa381c62 475 wait(1);
wim 4:0e1ffa381c62 476 QYF.cls();
wim 4:0e1ffa381c62 477
wim 4:0e1ffa381c62 478 for (int i=0; i<26; i++) {
wim 4:0e1ffa381c62 479 QYF.printf("%c", char(i + 'A'));
wim 4:0e1ffa381c62 480 // QYF.printf("%c", char(i + 'a'));
wim 4:0e1ffa381c62 481 wait(0.25);
wim 4:0e1ffa381c62 482 }
wim 4:0e1ffa381c62 483 pc.printf("Show all alpha chars done\r\n");
wim 4:0e1ffa381c62 484 #endif
wim 4:0e1ffa381c62 485
wim 4:0e1ffa381c62 486 #if(0)
wim 4:0e1ffa381c62 487 //test to show all chars
wim 4:0e1ffa381c62 488 pc.printf("Show all chars\r\n");
wim 4:0e1ffa381c62 489 wait(1);
wim 4:0e1ffa381c62 490 QYF.cls();
wim 4:0e1ffa381c62 491
wim 4:0e1ffa381c62 492 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 4:0e1ffa381c62 493 QYF.printf("%c", char(i));
wim 4:0e1ffa381c62 494 // wait(0.25);
wim 4:0e1ffa381c62 495 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 496 }
wim 4:0e1ffa381c62 497 pc.printf("Show all chars done\r\n");
wim 4:0e1ffa381c62 498 #endif
wim 4:0e1ffa381c62 499
wim 4:0e1ffa381c62 500
wim 4:0e1ffa381c62 501 }
wim 4:0e1ffa381c62 502
wim 4:0e1ffa381c62 503 if (keydata[QYF_SW4_IDX] == QYF_SW4_BIT) { //sw4
wim 4:0e1ffa381c62 504
wim 4:0e1ffa381c62 505 #if(0)
wim 4:0e1ffa381c62 506 //test to show all digits (base is 10)
wim 4:0e1ffa381c62 507 pc.printf("Show all digits\r\n");
wim 4:0e1ffa381c62 508 wait(1);
wim 4:0e1ffa381c62 509 QYF.cls();
wim 4:0e1ffa381c62 510
wim 4:0e1ffa381c62 511 for (int i=0; i<QYF_NR_DIGITS; i++) {
wim 4:0e1ffa381c62 512
wim 4:0e1ffa381c62 513 for (int cnt=0; cnt<10; cnt++) {
wim 4:0e1ffa381c62 514 QYF.locate(i);
wim 4:0e1ffa381c62 515 QYF.printf("%0d", cnt);
wim 4:0e1ffa381c62 516
wim 4:0e1ffa381c62 517 // wait(0.5);
wim 4:0e1ffa381c62 518 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 519 }
wim 4:0e1ffa381c62 520 }
wim 4:0e1ffa381c62 521 pc.printf("\r\nShow all digits done\r\n");
wim 4:0e1ffa381c62 522 #endif
wim 4:0e1ffa381c62 523
wim 4:0e1ffa381c62 524 #if(1)
wim 4:0e1ffa381c62 525 //test to show all digits (base is 0x10)
wim 4:0e1ffa381c62 526 pc.printf("Show all hex digits\r\n");
wim 4:0e1ffa381c62 527 wait(1);
wim 4:0e1ffa381c62 528 QYF.cls();
wim 4:0e1ffa381c62 529
wim 4:0e1ffa381c62 530 QYF.printf("%08x", 0x012345AB);
wim 4:0e1ffa381c62 531 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 532 QYF.printf("%08x", 0x0);
wim 4:0e1ffa381c62 533
wim 4:0e1ffa381c62 534 for (int i=0; i<QYF_NR_DIGITS; i++) {
wim 4:0e1ffa381c62 535
wim 4:0e1ffa381c62 536 for (int cnt=0; cnt<0x10; cnt++) {
wim 4:0e1ffa381c62 537 QYF.locate(i);
wim 4:0e1ffa381c62 538 QYF.printf("%0x", cnt);
wim 4:0e1ffa381c62 539
wim 4:0e1ffa381c62 540 // wait(0.5);
wim 4:0e1ffa381c62 541 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 542 }
wim 4:0e1ffa381c62 543
wim 4:0e1ffa381c62 544 }
wim 4:0e1ffa381c62 545 pc.printf("\r\nShow all hex digits done\r\n");
wim 4:0e1ffa381c62 546 #endif
wim 4:0e1ffa381c62 547 }
wim 4:0e1ffa381c62 548
wim 4:0e1ffa381c62 549 if (keydata[QYF_SW5_IDX] == QYF_SW5_BIT) { //sw5
wim 4:0e1ffa381c62 550 QYF.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 551
wim 4:0e1ffa381c62 552 #if(1)
wim 4:0e1ffa381c62 553 QYF.printf("Count");
wim 4:0e1ffa381c62 554 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 4:0e1ffa381c62 555 QYF.locate(6);
wim 4:0e1ffa381c62 556 QYF.printf("%02x", cnt);
wim 4:0e1ffa381c62 557 wait(0.2);
wim 4:0e1ffa381c62 558 }
wim 4:0e1ffa381c62 559 #endif
wim 4:0e1ffa381c62 560 }
wim 4:0e1ffa381c62 561
wim 4:0e1ffa381c62 562 if (keydata[QYF_SW6_IDX] == QYF_SW6_BIT) { //sw6
wim 4:0e1ffa381c62 563 QYF.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 564 QYF.printf("%2.3f", -0.1234); // test decimal point display
wim 4:0e1ffa381c62 565 wait(0.5);
wim 4:0e1ffa381c62 566 QYF.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 567 QYF.printf("%2.3f", -012.345); // test decimal point display
wim 4:0e1ffa381c62 568 }
wim 4:0e1ffa381c62 569
wim 4:0e1ffa381c62 570 if (keydata[QYF_SW7_IDX] == QYF_SW7_BIT) { //sw7
wim 4:0e1ffa381c62 571 float delay=0.1;
wim 4:0e1ffa381c62 572 // Icons on
wim 4:0e1ffa381c62 573 QYF.setIcon(TM1638_QYF::DP1); wait(delay);
wim 4:0e1ffa381c62 574 QYF.setIcon(TM1638_QYF::DP2); wait(delay);
wim 4:0e1ffa381c62 575 QYF.setIcon(TM1638_QYF::DP3); wait(delay);
wim 4:0e1ffa381c62 576 QYF.setIcon(TM1638_QYF::DP4); wait(delay);
wim 4:0e1ffa381c62 577 QYF.setIcon(TM1638_QYF::DP5); wait(delay);
wim 4:0e1ffa381c62 578 QYF.setIcon(TM1638_QYF::DP6); wait(delay);
wim 4:0e1ffa381c62 579 QYF.setIcon(TM1638_QYF::DP7); wait(delay);
wim 4:0e1ffa381c62 580 QYF.setIcon(TM1638_QYF::DP8); wait(delay);
wim 4:0e1ffa381c62 581
wim 4:0e1ffa381c62 582 wait(delay);
wim 4:0e1ffa381c62 583
wim 4:0e1ffa381c62 584 // Icons off
wim 4:0e1ffa381c62 585 QYF.clrIcon(TM1638_QYF::DP8); wait(delay);
wim 4:0e1ffa381c62 586 QYF.clrIcon(TM1638_QYF::DP7); wait(delay);
wim 4:0e1ffa381c62 587 QYF.clrIcon(TM1638_QYF::DP6); wait(delay);
wim 4:0e1ffa381c62 588 QYF.clrIcon(TM1638_QYF::DP5); wait(delay);
wim 4:0e1ffa381c62 589 QYF.clrIcon(TM1638_QYF::DP4); wait(delay);
wim 4:0e1ffa381c62 590 QYF.clrIcon(TM1638_QYF::DP3); wait(delay);
wim 4:0e1ffa381c62 591 QYF.clrIcon(TM1638_QYF::DP2); wait(delay);
wim 4:0e1ffa381c62 592 QYF.clrIcon(TM1638_QYF::DP1); wait(delay);
wim 4:0e1ffa381c62 593 }
wim 4:0e1ffa381c62 594
wim 4:0e1ffa381c62 595 if (keydata[QYF_SW8_IDX] == QYF_SW8_BIT) { //sw8
wim 4:0e1ffa381c62 596 QYF.cls();
wim 4:0e1ffa381c62 597 QYF.printf("Hello");
wim 4:0e1ffa381c62 598 }
wim 4:0e1ffa381c62 599
wim 4:0e1ffa381c62 600 if (keydata[QYF_SW9_IDX] == QYF_SW9_BIT) { //sw9
wim 4:0e1ffa381c62 601 QYF.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 602 QYF.printf("Bye");
wim 4:0e1ffa381c62 603 }
wim 4:0e1ffa381c62 604
wim 4:0e1ffa381c62 605 } //if Key
wim 4:0e1ffa381c62 606
wim 4:0e1ffa381c62 607 myled = !myled;
wim 4:0e1ffa381c62 608 wait(0.3);
wim 4:0e1ffa381c62 609 } //while
wim 4:0e1ffa381c62 610 }
wim 4:0e1ffa381c62 611 #endif
wim 4:0e1ffa381c62 612
wim 4:0e1ffa381c62 613
wim 4:0e1ffa381c62 614 #if (LKM1638_TEST == 1)
wim 4:0e1ffa381c62 615 // LKM1638 TM1638 Test
wim 4:0e1ffa381c62 616 #include "Font_7Seg.h"
wim 4:0e1ffa381c62 617
wim 4:0e1ffa381c62 618 Serial pc(USBTX, USBRX);
wim 4:0e1ffa381c62 619 DigitalOut myled(LED1);
wim 4:0e1ffa381c62 620
wim 4:0e1ffa381c62 621 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments)
wim 4:0e1ffa381c62 622 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03};
wim 4:0e1ffa381c62 623 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 4:0e1ffa381c62 624 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 4:0e1ffa381c62 625 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 4:0e1ffa381c62 626
wim 4:0e1ffa381c62 627 TM1638::DisplayData_t animate[] = {
wim 4:0e1ffa381c62 628 {S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 629 {0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 630 {0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 631 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 632 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 633 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 634 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 635 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00},
wim 4:0e1ffa381c62 636
wim 4:0e1ffa381c62 637 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_B,0x00},
wim 4:0e1ffa381c62 638 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_C,0x00},
wim 4:0e1ffa381c62 639
wim 4:0e1ffa381c62 640 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00},
wim 4:0e1ffa381c62 641 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 642 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 643 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 644 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 645 {0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 646 {0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 647 {S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 648
wim 4:0e1ffa381c62 649 {S7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 650 {S7_F,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00},
wim 4:0e1ffa381c62 651 };
wim 4:0e1ffa381c62 652 // KeyData_t size is 4 bytes
wim 4:0e1ffa381c62 653 TM1638::KeyData_t keydata;
wim 4:0e1ffa381c62 654
wim 4:0e1ffa381c62 655 //TM1638_LKM1638 declaration
wim 4:0e1ffa381c62 656 TM1638_LKM1638 LKM1638(p5,p6,p7, p8);
wim 4:0e1ffa381c62 657
wim 4:0e1ffa381c62 658 char cmd, bits;
wim 4:0e1ffa381c62 659 int main() {
wim 4:0e1ffa381c62 660
wim 4:0e1ffa381c62 661 pc.printf("Hello World\r\n"); //
wim 4:0e1ffa381c62 662
wim 4:0e1ffa381c62 663 LKM1638.cls();
wim 4:0e1ffa381c62 664 LKM1638.writeData(all_str);
wim 4:0e1ffa381c62 665 wait(2);
wim 4:0e1ffa381c62 666 LKM1638.setBrightness(TM1638_BRT3);
wim 4:0e1ffa381c62 667 wait(1);
wim 4:0e1ffa381c62 668 LKM1638.setBrightness(TM1638_BRT0);
wim 4:0e1ffa381c62 669 wait(1);
wim 4:0e1ffa381c62 670 LKM1638.setBrightness(TM1638_BRT4);
wim 4:0e1ffa381c62 671
wim 4:0e1ffa381c62 672 wait(1);
wim 4:0e1ffa381c62 673 LKM1638.cls(true);
wim 4:0e1ffa381c62 674 LKM1638.writeData(hello_str);
wim 4:0e1ffa381c62 675
wim 4:0e1ffa381c62 676 while (1) {
wim 4:0e1ffa381c62 677
wim 4:0e1ffa381c62 678 // Check and read keydata
wim 4:0e1ffa381c62 679 if (LKM1638.getKeys(&keydata)) {
wim 4:0e1ffa381c62 680 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]);
wim 4:0e1ffa381c62 681
wim 4:0e1ffa381c62 682 if (keydata[LKM1638_SW1_IDX] == LKM1638_SW1_BIT) { //sw1
wim 4:0e1ffa381c62 683 LKM1638.cls();
wim 4:0e1ffa381c62 684 LKM1638.writeData(all_str);
wim 4:0e1ffa381c62 685
wim 4:0e1ffa381c62 686 wait(0.5);
wim 4:0e1ffa381c62 687 for (int i=0; i<20; i++) {
wim 4:0e1ffa381c62 688 LKM1638.writeData(animate[i]);
wim 4:0e1ffa381c62 689 wait(0.05);
wim 4:0e1ffa381c62 690 }
wim 4:0e1ffa381c62 691 }
wim 4:0e1ffa381c62 692
wim 4:0e1ffa381c62 693 if (keydata[LKM1638_SW2_IDX] == LKM1638_SW2_BIT) { //sw2
wim 4:0e1ffa381c62 694 LKM1638.cls();
wim 4:0e1ffa381c62 695 // LKM1638.writeData(hello_str);
wim 4:0e1ffa381c62 696 #if(1)
wim 4:0e1ffa381c62 697 //test to show all segs
wim 4:0e1ffa381c62 698 pc.printf("Show all segs\r\n");
wim 4:0e1ffa381c62 699 wait(1);
wim 4:0e1ffa381c62 700 LKM1638.cls();
wim 4:0e1ffa381c62 701
wim 4:0e1ffa381c62 702 for (int i=0; i<TM1638_DISPLAY_MEM; i++) {
wim 4:0e1ffa381c62 703 for (int bit=0; bit<8; bit++) {
wim 4:0e1ffa381c62 704 LKM1638.cls();
wim 4:0e1ffa381c62 705
wim 4:0e1ffa381c62 706 bits = 0x01 << bit;
wim 4:0e1ffa381c62 707 LKM1638.writeData(bits, i);
wim 4:0e1ffa381c62 708
wim 4:0e1ffa381c62 709 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 4:0e1ffa381c62 710 // wait(0.5);
wim 4:0e1ffa381c62 711 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 712 }
wim 4:0e1ffa381c62 713 }
wim 4:0e1ffa381c62 714 pc.printf("\r\nShow all segs done\r\n");
wim 4:0e1ffa381c62 715 #endif
wim 4:0e1ffa381c62 716
wim 4:0e1ffa381c62 717 }
wim 4:0e1ffa381c62 718
wim 4:0e1ffa381c62 719 if (keydata[LKM1638_SW3_IDX] == LKM1638_SW3_BIT) { //sw3
wim 4:0e1ffa381c62 720 // LKM1638.cls();
wim 4:0e1ffa381c62 721 // LKM1638.writeData(mbed_str);
wim 4:0e1ffa381c62 722
wim 4:0e1ffa381c62 723
wim 4:0e1ffa381c62 724 #if(1)
wim 4:0e1ffa381c62 725 //test to show all chars
wim 4:0e1ffa381c62 726 pc.printf("Show all NATO Alpha chars\r\n");
wim 4:0e1ffa381c62 727
wim 4:0e1ffa381c62 728 LKM1638.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 729 for (int i=0; i<26; i++) {
wim 4:0e1ffa381c62 730 LKM1638.locate(0);
wim 4:0e1ffa381c62 731 LKM1638.printf("%s", NATO[i]);
wim 4:0e1ffa381c62 732 wait(0.5);
wim 4:0e1ffa381c62 733 }
wim 4:0e1ffa381c62 734 pc.printf("Show all NATO Alpha chars done\r\n");
wim 4:0e1ffa381c62 735 #endif
wim 4:0e1ffa381c62 736
wim 4:0e1ffa381c62 737 #if(0)
wim 4:0e1ffa381c62 738 //test to show all chars
wim 4:0e1ffa381c62 739 pc.printf("Show all alpha chars\r\n");
wim 4:0e1ffa381c62 740 wait(1);
wim 4:0e1ffa381c62 741 LKM1638.cls();
wim 4:0e1ffa381c62 742
wim 4:0e1ffa381c62 743 for (int i=0; i<26; i++) {
wim 4:0e1ffa381c62 744 LKM1638.printf("%c", char(i + 'A'));
wim 4:0e1ffa381c62 745 // LKM1638.printf("%c", char(i + 'a'));
wim 4:0e1ffa381c62 746 wait(0.25);
wim 4:0e1ffa381c62 747 }
wim 4:0e1ffa381c62 748 pc.printf("Show all alpha chars done\r\n");
wim 4:0e1ffa381c62 749 #endif
wim 4:0e1ffa381c62 750
wim 4:0e1ffa381c62 751 #if(0)
wim 4:0e1ffa381c62 752 //test to show all chars
wim 4:0e1ffa381c62 753 pc.printf("Show all chars\r\n");
wim 4:0e1ffa381c62 754 wait(1);
wim 4:0e1ffa381c62 755 LKM1638.cls();
wim 4:0e1ffa381c62 756
wim 4:0e1ffa381c62 757 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 4:0e1ffa381c62 758 LKM1638.printf("%c", char(i));
wim 4:0e1ffa381c62 759 // wait(0.25);
wim 4:0e1ffa381c62 760 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 761 }
wim 4:0e1ffa381c62 762 pc.printf("Show all chars done\r\n");
wim 4:0e1ffa381c62 763 #endif
wim 4:0e1ffa381c62 764
wim 4:0e1ffa381c62 765
wim 4:0e1ffa381c62 766 #if(0)
wim 4:0e1ffa381c62 767 //test to show all digits (base is 10)
wim 4:0e1ffa381c62 768 pc.printf("Show all digits\r\n");
wim 4:0e1ffa381c62 769 wait(1);
wim 4:0e1ffa381c62 770 LKM1638.cls();
wim 4:0e1ffa381c62 771
wim 4:0e1ffa381c62 772 for (int i=0; i<LKM1638_NR_DIGITS; i++) {
wim 4:0e1ffa381c62 773
wim 4:0e1ffa381c62 774 for (int cnt=0; cnt<10; cnt++) {
wim 4:0e1ffa381c62 775 LKM1638.locate(i);
wim 4:0e1ffa381c62 776 LKM1638.printf("%0d", cnt);
wim 4:0e1ffa381c62 777
wim 4:0e1ffa381c62 778 // wait(0.5);
wim 4:0e1ffa381c62 779 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 780 }
wim 4:0e1ffa381c62 781 }
wim 4:0e1ffa381c62 782 pc.printf("\r\nShow all digits done\r\n");
wim 4:0e1ffa381c62 783 #endif
wim 4:0e1ffa381c62 784
wim 4:0e1ffa381c62 785 #if(1)
wim 4:0e1ffa381c62 786 //test to show all digits (base is 0x10)
wim 4:0e1ffa381c62 787 pc.printf("Show all hex digits\r\n");
wim 4:0e1ffa381c62 788 wait(1);
wim 4:0e1ffa381c62 789 LKM1638.cls();
wim 4:0e1ffa381c62 790
wim 4:0e1ffa381c62 791 LKM1638.printf("%08x", 0x012345AB);
wim 4:0e1ffa381c62 792 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 793 LKM1638.printf("%08x", 0x00);
wim 4:0e1ffa381c62 794
wim 4:0e1ffa381c62 795 for (int i=0; i<LKM1638_NR_DIGITS; i++) {
wim 4:0e1ffa381c62 796
wim 4:0e1ffa381c62 797 for (int cnt=0; cnt<0x10; cnt++) {
wim 4:0e1ffa381c62 798 LKM1638.locate(i);
wim 4:0e1ffa381c62 799 LKM1638.printf("%0x", cnt);
wim 4:0e1ffa381c62 800
wim 4:0e1ffa381c62 801 // wait(0.5);
wim 4:0e1ffa381c62 802 cmd = pc.getc(); // wait for key
wim 4:0e1ffa381c62 803 }
wim 4:0e1ffa381c62 804
wim 4:0e1ffa381c62 805 }
wim 4:0e1ffa381c62 806 pc.printf("\r\nShow all hex digits done\r\n");
wim 4:0e1ffa381c62 807 #endif
wim 4:0e1ffa381c62 808 }
wim 4:0e1ffa381c62 809
wim 4:0e1ffa381c62 810 if (keydata[LKM1638_SW4_IDX] == LKM1638_SW4_BIT) { //sw4
wim 4:0e1ffa381c62 811 // LKM1638.cls();
wim 4:0e1ffa381c62 812 // LKM1638.writeData(mbed_str);
wim 4:0e1ffa381c62 813 #if(1)
wim 4:0e1ffa381c62 814 //test to show all icons
wim 4:0e1ffa381c62 815 pc.printf("Show all icons\r\n");
wim 4:0e1ffa381c62 816 LKM1638.cls(true); // Also clear all Icons
wim 4:0e1ffa381c62 817
wim 4:0e1ffa381c62 818 float delay=0.1;
wim 4:0e1ffa381c62 819 // Icons on
wim 4:0e1ffa381c62 820 LKM1638.setIcon(TM1638_LKM1638::RD1); wait(delay);
wim 4:0e1ffa381c62 821 LKM1638.setIcon(TM1638_LKM1638::RD2); wait(delay);
wim 4:0e1ffa381c62 822 LKM1638.setIcon(TM1638_LKM1638::RD3); wait(delay);
wim 4:0e1ffa381c62 823 LKM1638.setIcon(TM1638_LKM1638::RD4); wait(delay);
wim 4:0e1ffa381c62 824 LKM1638.setIcon(TM1638_LKM1638::RD5); wait(delay);
wim 4:0e1ffa381c62 825 LKM1638.setIcon(TM1638_LKM1638::RD6); wait(delay);
wim 4:0e1ffa381c62 826 LKM1638.setIcon(TM1638_LKM1638::RD7); wait(delay);
wim 4:0e1ffa381c62 827 LKM1638.setIcon(TM1638_LKM1638::RD8); wait(delay);
wim 4:0e1ffa381c62 828
wim 4:0e1ffa381c62 829 wait(delay);
wim 4:0e1ffa381c62 830
wim 4:0e1ffa381c62 831 // Icons off
wim 4:0e1ffa381c62 832 LKM1638.clrIcon(TM1638_LKM1638::RD1); wait(delay);
wim 4:0e1ffa381c62 833 LKM1638.clrIcon(TM1638_LKM1638::RD2); wait(delay);
wim 4:0e1ffa381c62 834 LKM1638.clrIcon(TM1638_LKM1638::RD3); wait(delay);
wim 4:0e1ffa381c62 835 LKM1638.clrIcon(TM1638_LKM1638::RD4); wait(delay);
wim 4:0e1ffa381c62 836 LKM1638.clrIcon(TM1638_LKM1638::RD5); wait(delay);
wim 4:0e1ffa381c62 837 LKM1638.clrIcon(TM1638_LKM1638::RD6); wait(delay);
wim 4:0e1ffa381c62 838 LKM1638.clrIcon(TM1638_LKM1638::RD7); wait(delay);
wim 4:0e1ffa381c62 839 LKM1638.clrIcon(TM1638_LKM1638::RD8); wait(delay);
wim 4:0e1ffa381c62 840
wim 4:0e1ffa381c62 841 wait(delay);
wim 4:0e1ffa381c62 842
wim 4:0e1ffa381c62 843 // Icons on
wim 4:0e1ffa381c62 844 LKM1638.setIcon(TM1638_LKM1638::GR1); wait(delay);
wim 4:0e1ffa381c62 845 LKM1638.setIcon(TM1638_LKM1638::GR2); wait(delay);
wim 4:0e1ffa381c62 846 LKM1638.setIcon(TM1638_LKM1638::GR3); wait(delay);
wim 4:0e1ffa381c62 847 LKM1638.setIcon(TM1638_LKM1638::GR4); wait(delay);
wim 4:0e1ffa381c62 848 LKM1638.setIcon(TM1638_LKM1638::GR5); wait(delay);
wim 4:0e1ffa381c62 849 LKM1638.setIcon(TM1638_LKM1638::GR6); wait(delay);
wim 4:0e1ffa381c62 850 LKM1638.setIcon(TM1638_LKM1638::GR7); wait(delay);
wim 4:0e1ffa381c62 851 LKM1638.setIcon(TM1638_LKM1638::GR8); wait(delay);
wim 4:0e1ffa381c62 852
wim 4:0e1ffa381c62 853 wait(delay);
wim 4:0e1ffa381c62 854
wim 4:0e1ffa381c62 855 // Icons off
wim 4:0e1ffa381c62 856 LKM1638.clrIcon(TM1638_LKM1638::GR1); wait(delay);
wim 4:0e1ffa381c62 857 LKM1638.clrIcon(TM1638_LKM1638::GR2); wait(delay);
wim 4:0e1ffa381c62 858 LKM1638.clrIcon(TM1638_LKM1638::GR3); wait(delay);
wim 4:0e1ffa381c62 859 LKM1638.clrIcon(TM1638_LKM1638::GR4); wait(delay);
wim 4:0e1ffa381c62 860 LKM1638.clrIcon(TM1638_LKM1638::GR5); wait(delay);
wim 4:0e1ffa381c62 861 LKM1638.clrIcon(TM1638_LKM1638::GR6); wait(delay);
wim 4:0e1ffa381c62 862 LKM1638.clrIcon(TM1638_LKM1638::GR7); wait(delay);
wim 4:0e1ffa381c62 863 LKM1638.clrIcon(TM1638_LKM1638::GR8); wait(delay);
wim 4:0e1ffa381c62 864
wim 4:0e1ffa381c62 865 wait(delay);
wim 4:0e1ffa381c62 866
wim 4:0e1ffa381c62 867 // Icons on
wim 4:0e1ffa381c62 868 LKM1638.setIcon(TM1638_LKM1638::YL1); wait(delay);
wim 4:0e1ffa381c62 869 LKM1638.setIcon(TM1638_LKM1638::YL2); wait(delay);
wim 4:0e1ffa381c62 870 LKM1638.setIcon(TM1638_LKM1638::YL3); wait(delay);
wim 4:0e1ffa381c62 871 LKM1638.setIcon(TM1638_LKM1638::YL4); wait(delay);
wim 4:0e1ffa381c62 872 LKM1638.setIcon(TM1638_LKM1638::YL5); wait(delay);
wim 4:0e1ffa381c62 873 LKM1638.setIcon(TM1638_LKM1638::YL6); wait(delay);
wim 4:0e1ffa381c62 874 LKM1638.setIcon(TM1638_LKM1638::YL7); wait(delay);
wim 4:0e1ffa381c62 875 LKM1638.setIcon(TM1638_LKM1638::YL8); wait(delay);
wim 4:0e1ffa381c62 876
wim 4:0e1ffa381c62 877 wait(delay);
wim 4:0e1ffa381c62 878
wim 4:0e1ffa381c62 879 // Icons off
wim 4:0e1ffa381c62 880 // Note: Yellow is hardly recognisable. Red LED is much brighter than Green
wim 4:0e1ffa381c62 881 LKM1638.clrIcon(TM1638_LKM1638::YL1); wait(delay);
wim 4:0e1ffa381c62 882 LKM1638.clrIcon(TM1638_LKM1638::YL2); wait(delay);
wim 4:0e1ffa381c62 883 LKM1638.clrIcon(TM1638_LKM1638::YL3); wait(delay);
wim 4:0e1ffa381c62 884 LKM1638.clrIcon(TM1638_LKM1638::YL4); wait(delay);
wim 4:0e1ffa381c62 885 LKM1638.clrIcon(TM1638_LKM1638::YL5); wait(delay);
wim 4:0e1ffa381c62 886 LKM1638.clrIcon(TM1638_LKM1638::YL6); wait(delay);
wim 4:0e1ffa381c62 887 LKM1638.clrIcon(TM1638_LKM1638::YL7); wait(delay);
wim 4:0e1ffa381c62 888 LKM1638.clrIcon(TM1638_LKM1638::YL8); wait(delay);
wim 4:0e1ffa381c62 889
wim 4:0e1ffa381c62 890 // wait(1);
wim 4:0e1ffa381c62 891 // LKM1638.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 892 pc.printf("Show all icons done\r\n");
wim 4:0e1ffa381c62 893 #endif
wim 4:0e1ffa381c62 894 }
wim 4:0e1ffa381c62 895
wim 4:0e1ffa381c62 896 if (keydata[LKM1638_SW5_IDX] == LKM1638_SW5_BIT) { //sw5
wim 4:0e1ffa381c62 897 LKM1638.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 898
wim 4:0e1ffa381c62 899 #if(0)
wim 4:0e1ffa381c62 900 LKM1638.printf("Count");
wim 4:0e1ffa381c62 901 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 4:0e1ffa381c62 902 LKM1638.locate(6);
wim 4:0e1ffa381c62 903 LKM1638.printf("%02x", cnt);
wim 4:0e1ffa381c62 904 wait(0.2);
wim 4:0e1ffa381c62 905 }
wim 4:0e1ffa381c62 906 #endif
wim 4:0e1ffa381c62 907
wim 4:0e1ffa381c62 908
wim 4:0e1ffa381c62 909 // LKM1638.writeData(hello_str);
wim 4:0e1ffa381c62 910 LKM1638.printf("hello");
wim 4:0e1ffa381c62 911 }
wim 4:0e1ffa381c62 912
wim 4:0e1ffa381c62 913 if (keydata[LKM1638_SW6_IDX] == LKM1638_SW6_BIT) { //sw6
wim 4:0e1ffa381c62 914 LKM1638.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 915 // LKM1638.writeData(bye_str);
wim 4:0e1ffa381c62 916 LKM1638.printf("Bye");
wim 4:0e1ffa381c62 917 }
wim 4:0e1ffa381c62 918
wim 4:0e1ffa381c62 919 if (keydata[LKM1638_SW7_IDX] == LKM1638_SW7_BIT) { //sw7
wim 4:0e1ffa381c62 920 LKM1638.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 921 LKM1638.printf("%2.3f", -0.1234); // test decimal point display
wim 4:0e1ffa381c62 922 wait(0.5);
wim 4:0e1ffa381c62 923 LKM1638.cls(); // clear all, preserve Icons
wim 4:0e1ffa381c62 924 LKM1638.printf("%2.3f", -012.345); // test decimal point display
wim 4:0e1ffa381c62 925 }
wim 4:0e1ffa381c62 926
wim 4:0e1ffa381c62 927 if (keydata[LKM1638_SW8_IDX] == LKM1638_SW8_BIT) { //sw8
wim 4:0e1ffa381c62 928 float delay=0.1;
wim 4:0e1ffa381c62 929 // Icons on
wim 4:0e1ffa381c62 930 LKM1638.setIcon(TM1638_LKM1638::DP1); wait(delay);
wim 4:0e1ffa381c62 931 LKM1638.setIcon(TM1638_LKM1638::DP2); wait(delay);
wim 4:0e1ffa381c62 932 LKM1638.setIcon(TM1638_LKM1638::DP3); wait(delay);
wim 4:0e1ffa381c62 933 LKM1638.setIcon(TM1638_LKM1638::DP4); wait(delay);
wim 4:0e1ffa381c62 934 LKM1638.setIcon(TM1638_LKM1638::DP5); wait(delay);
wim 4:0e1ffa381c62 935 LKM1638.setIcon(TM1638_LKM1638::DP6); wait(delay);
wim 4:0e1ffa381c62 936 LKM1638.setIcon(TM1638_LKM1638::DP7); wait(delay);
wim 4:0e1ffa381c62 937 LKM1638.setIcon(TM1638_LKM1638::DP8); wait(delay);
wim 4:0e1ffa381c62 938
wim 4:0e1ffa381c62 939 wait(delay);
wim 4:0e1ffa381c62 940
wim 4:0e1ffa381c62 941 // Icons off
wim 4:0e1ffa381c62 942 LKM1638.clrIcon(TM1638_LKM1638::DP8); wait(delay);
wim 4:0e1ffa381c62 943 LKM1638.clrIcon(TM1638_LKM1638::DP7); wait(delay);
wim 4:0e1ffa381c62 944 LKM1638.clrIcon(TM1638_LKM1638::DP6); wait(delay);
wim 4:0e1ffa381c62 945 LKM1638.clrIcon(TM1638_LKM1638::DP5); wait(delay);
wim 4:0e1ffa381c62 946 LKM1638.clrIcon(TM1638_LKM1638::DP4); wait(delay);
wim 4:0e1ffa381c62 947 LKM1638.clrIcon(TM1638_LKM1638::DP3); wait(delay);
wim 4:0e1ffa381c62 948 LKM1638.clrIcon(TM1638_LKM1638::DP2); wait(delay);
wim 4:0e1ffa381c62 949 LKM1638.clrIcon(TM1638_LKM1638::DP1); wait(delay);
wim 4:0e1ffa381c62 950 }
wim 4:0e1ffa381c62 951
wim 4:0e1ffa381c62 952 } //if Key
wim 4:0e1ffa381c62 953
wim 4:0e1ffa381c62 954 myled = !myled;
wim 4:0e1ffa381c62 955 wait(0.3);
wim 4:0e1ffa381c62 956 } //while
wim 4:0e1ffa381c62 957 }
wim 4:0e1ffa381c62 958 #endif
wim 4:0e1ffa381c62 959
wim 4:0e1ffa381c62 960
wim 0:e7bc81df3e38 961
wim 0:e7bc81df3e38 962 #if (TM1638_TEST == 1)
wim 0:e7bc81df3e38 963 // Direct TM1638 Test
wim 0:e7bc81df3e38 964
wim 0:e7bc81df3e38 965 Serial pc(USBTX, USBRX);
wim 0:e7bc81df3e38 966 DigitalOut myled(LED1);
wim 0:e7bc81df3e38 967
wim 0:e7bc81df3e38 968 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments)
wim 0:e7bc81df3e38 969 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03};
wim 0:e7bc81df3e38 970 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 0:e7bc81df3e38 971
wim 0:e7bc81df3e38 972 // KeyData_t size is 4 bytes
wim 0:e7bc81df3e38 973 TM1638::KeyData_t keydata;
wim 0:e7bc81df3e38 974
wim 0:e7bc81df3e38 975 TM1638 TM1638(p5,p6,p7, p8);
wim 0:e7bc81df3e38 976
wim 0:e7bc81df3e38 977 char cmd, bits;
wim 0:e7bc81df3e38 978 int main() {
wim 0:e7bc81df3e38 979
wim 0:e7bc81df3e38 980 pc.printf("Hello World\r\n"); //
wim 0:e7bc81df3e38 981
wim 0:e7bc81df3e38 982 TM1638.cls();
wim 0:e7bc81df3e38 983 TM1638.writeData(all_str);
wim 0:e7bc81df3e38 984 wait(2);
wim 0:e7bc81df3e38 985 TM1638.setBrightness(TM1638_BRT3);
wim 0:e7bc81df3e38 986 wait(1);
wim 0:e7bc81df3e38 987 TM1638.setBrightness(TM1638_BRT0);
wim 0:e7bc81df3e38 988 wait(1);
wim 0:e7bc81df3e38 989 TM1638.setBrightness(TM1638_BRT4);
wim 0:e7bc81df3e38 990
wim 0:e7bc81df3e38 991 while (1) {
wim 0:e7bc81df3e38 992
wim 0:e7bc81df3e38 993 // Check and read keydata
wim 0:e7bc81df3e38 994 if (TM1638.getKeys(&keydata)) {
wim 0:e7bc81df3e38 995 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 996
wim 0:e7bc81df3e38 997 if (keydata[0] == 0x01) { //sw1
wim 0:e7bc81df3e38 998 TM1638.cls();
wim 0:e7bc81df3e38 999 TM1638.writeData(all_str);
wim 0:e7bc81df3e38 1000 }
wim 0:e7bc81df3e38 1001
wim 0:e7bc81df3e38 1002 if (keydata[1] == 0x01) { //sw2
wim 0:e7bc81df3e38 1003 TM1638.cls();
wim 0:e7bc81df3e38 1004 TM1638.writeData(cls_str);
wim 0:e7bc81df3e38 1005 }
wim 0:e7bc81df3e38 1006
wim 0:e7bc81df3e38 1007
wim 0:e7bc81df3e38 1008 if (keydata[2] == 0x01) { //sw3
wim 0:e7bc81df3e38 1009 #if(1)
wim 0:e7bc81df3e38 1010 //test to show all segs
wim 0:e7bc81df3e38 1011 pc.printf("Show all segs\r\n");
wim 0:e7bc81df3e38 1012 wait(1);
wim 0:e7bc81df3e38 1013 TM1638.cls();
wim 0:e7bc81df3e38 1014
wim 0:e7bc81df3e38 1015 for (int i=0; i<TM1638_DISPLAY_MEM; i++) {
wim 0:e7bc81df3e38 1016 for (int bit=0; bit<8; bit++) {
wim 0:e7bc81df3e38 1017 TM1638.cls();
wim 0:e7bc81df3e38 1018
wim 0:e7bc81df3e38 1019 bits = 0x01 << bit;
wim 4:0e1ffa381c62 1020 TM1638.writeData(bits, i);
wim 0:e7bc81df3e38 1021
wim 0:e7bc81df3e38 1022 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:e7bc81df3e38 1023 // wait(0.5);
wim 0:e7bc81df3e38 1024 cmd = pc.getc(); // wait for key
wim 0:e7bc81df3e38 1025 }
wim 0:e7bc81df3e38 1026 }
wim 0:e7bc81df3e38 1027 pc.printf("Show all segs done\r\n");
wim 0:e7bc81df3e38 1028 #endif
wim 0:e7bc81df3e38 1029 }
wim 0:e7bc81df3e38 1030
wim 0:e7bc81df3e38 1031 if (keydata[3] == 0x01) { //sw4
wim 0:e7bc81df3e38 1032 TM1638.cls();
wim 0:e7bc81df3e38 1033 // TM1638.writeData(hello_str);
wim 0:e7bc81df3e38 1034 }
wim 0:e7bc81df3e38 1035
wim 0:e7bc81df3e38 1036
wim 0:e7bc81df3e38 1037 } //if Key
wim 0:e7bc81df3e38 1038
wim 0:e7bc81df3e38 1039 myled = !myled;
wim 0:e7bc81df3e38 1040 wait(0.3);
wim 0:e7bc81df3e38 1041 } //while
wim 0:e7bc81df3e38 1042 }
wim 0:e7bc81df3e38 1043 #endif