Wim Huiskamp
/
mbed_TM1638
Test program for TM1638 LED controller. Supports LED&KEY, QYF-TM1638 and JY-LKM1638 module.
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 /* mbed TM1638 Test program, for TM1638 LED controller 00002 * Copyright (c) 2015, v01: WH, Initial version 00003 * 2016, v02: WH, Added ASCII alphabet test 00004 * 2016, v03: WH, Added QYF-TM1638 and LKM1638, refactoring of writeData() 00005 * 00006 * Permission is hereby granted, free of charge, to any person obtaining a copy 00007 * of this software and associated documentation files (the "Software"), to deal 00008 * in the Software without restriction, including without limitation the rights 00009 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00010 * copies of the Software, and to permit persons to whom the Software is 00011 * furnished to do so, subject to the following conditions: 00012 * 00013 * The above copyright notice and this permission notice shall be included in 00014 * all copies or substantial portions of the Software. 00015 * 00016 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00017 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00018 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00019 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00020 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00021 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00022 * THE SOFTWARE. 00023 */ 00024 #include "mbed.h" 00025 #include "TM1638.h" 00026 00027 // 01234567 00028 const char NATO[][9] = { {"Alpha "}, 00029 {"Bravo "}, 00030 {"Charlie "}, 00031 {"Delta "}, 00032 {"Echo "}, 00033 {"Foxtrot "}, 00034 {"Golf "}, 00035 {"Hotel "}, 00036 {"India "}, 00037 {"Juliet "}, 00038 {"Kilo "}, 00039 {"Lima "}, 00040 {"Mike "}, 00041 {"November"}, 00042 {"Oscar "}, 00043 {"Papa "}, 00044 {"Quebec "}, 00045 {"Romeo "}, 00046 {"Sierra "}, 00047 {"Tango "}, 00048 {"Uniform "}, 00049 {"Victor "}, 00050 {"Whiskey "}, 00051 {"X-ray "}, 00052 {"Yankee "}, 00053 {"Zulu "} 00054 }; 00055 00056 00057 #if (LEDKEY8_TEST == 1) 00058 // LEDKEY8 TM1638 Test 00059 #include "Font_7Seg.h" 00060 00061 Serial pc(USBTX, USBRX); 00062 DigitalOut myled(LED1); 00063 00064 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments) 00065 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03}; 00066 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; 00067 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}; 00068 TM1638::DisplayData_t bye_str = {C7_B,0x00, C7_Y,0x00, C7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; 00069 00070 TM1638::DisplayData_t animate[] = { 00071 {S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00072 {0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00073 {0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00074 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00075 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00076 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00}, 00077 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00}, 00078 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00}, 00079 00080 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_B,0x00}, 00081 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_C,0x00}, 00082 00083 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00}, 00084 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00}, 00085 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00}, 00086 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00087 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00088 {0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00089 {0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00090 {S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00091 00092 {S7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00093 {S7_F,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00094 }; 00095 // KeyData_t size is 4 bytes 00096 TM1638::KeyData_t keydata; 00097 00098 //TM1638_LEDKEY8 declaration 00099 TM1638_LEDKEY8 LEDKEY8(p5,p6,p7, p8); 00100 00101 char cmd, bits; 00102 int main() { 00103 00104 pc.printf("Hello World\r\n"); // 00105 00106 LEDKEY8.cls(); 00107 LEDKEY8.writeData(all_str); 00108 wait(2); 00109 LEDKEY8.setBrightness(TM1638_BRT3); 00110 wait(1); 00111 LEDKEY8.setBrightness(TM1638_BRT0); 00112 wait(1); 00113 LEDKEY8.setBrightness(TM1638_BRT4); 00114 00115 wait(1); 00116 LEDKEY8.cls(true); 00117 LEDKEY8.writeData(hello_str); 00118 00119 while (1) { 00120 00121 // Check and read keydata 00122 if (LEDKEY8.getKeys(&keydata)) { 00123 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]); 00124 00125 if (keydata[LEDKEY8_SW1_IDX] == LEDKEY8_SW1_BIT) { //sw1 00126 LEDKEY8.cls(); 00127 LEDKEY8.writeData(all_str); 00128 00129 wait(0.5); 00130 for (int i=0; i<20; i++) { 00131 LEDKEY8.writeData(animate[i]); 00132 wait(0.05); 00133 } 00134 } 00135 00136 if (keydata[LEDKEY8_SW2_IDX] == LEDKEY8_SW2_BIT) { //sw2 00137 LEDKEY8.cls(); 00138 // LEDKEY8.writeData(hello_str); 00139 #if(1) 00140 //test to show all segs 00141 pc.printf("Show all segs\r\n"); 00142 wait(1); 00143 LEDKEY8.cls(); 00144 00145 for (int i=0; i<TM1638_DISPLAY_MEM; i++) { 00146 for (int bit=0; bit<8; bit++) { 00147 LEDKEY8.cls(); 00148 00149 bits = 0x01 << bit; 00150 LEDKEY8.writeData(bits, i); 00151 00152 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); 00153 // wait(0.5); 00154 cmd = pc.getc(); // wait for key 00155 } 00156 } 00157 pc.printf("\r\nShow all segs done\r\n"); 00158 #endif 00159 00160 } 00161 00162 if (keydata[LEDKEY8_SW3_IDX] == LEDKEY8_SW3_BIT) { //sw3 00163 // LEDKEY8.cls(); 00164 // LEDKEY8.writeData(mbed_str); 00165 00166 00167 #if(1) 00168 //test to show all chars 00169 pc.printf("Show all NATO Alpha chars\r\n"); 00170 00171 LEDKEY8.cls(); // clear all, preserve Icons 00172 for (int i=0; i<26; i++) { 00173 LEDKEY8.locate(0); 00174 LEDKEY8.printf("%s", NATO[i]); 00175 wait(0.5); 00176 } 00177 pc.printf("Show all NATO Alpha chars done\r\n"); 00178 #endif 00179 00180 #if(0) 00181 //test to show all chars 00182 pc.printf("Show all alpha chars\r\n"); 00183 wait(1); 00184 LEDKEY8.cls(); 00185 00186 for (int i=0; i<26; i++) { 00187 LEDKEY8.printf("%c", char(i + 'A')); 00188 // LEDKEY8.printf("%c", char(i + 'a')); 00189 wait(0.25); 00190 } 00191 pc.printf("Show all alpha chars done\r\n"); 00192 #endif 00193 00194 #if(0) 00195 //test to show all chars 00196 pc.printf("Show all chars\r\n"); 00197 wait(1); 00198 LEDKEY8.cls(); 00199 00200 for (int i=FONT_7S_START; i<FONT_7S_END; i++) { 00201 LEDKEY8.printf("%c", char(i)); 00202 // wait(0.25); 00203 cmd = pc.getc(); // wait for key 00204 } 00205 pc.printf("Show all chars done\r\n"); 00206 #endif 00207 00208 00209 #if(0) 00210 //test to show all digits (base is 10) 00211 pc.printf("Show all digits\r\n"); 00212 wait(1); 00213 LEDKEY8.cls(); 00214 00215 for (int i=0; i<LEDKEY8_NR_DIGITS; i++) { 00216 00217 for (int cnt=0; cnt<10; cnt++) { 00218 LEDKEY8.locate(i); 00219 LEDKEY8.printf("%0d", cnt); 00220 00221 // wait(0.5); 00222 cmd = pc.getc(); // wait for key 00223 } 00224 } 00225 pc.printf("\r\nShow all digits done\r\n"); 00226 #endif 00227 00228 #if(1) 00229 //test to show all digits (base is 0x10) 00230 pc.printf("Show all hex digits\r\n"); 00231 wait(1); 00232 LEDKEY8.cls(); 00233 00234 LEDKEY8.printf("%08x", 0x012345AB); 00235 cmd = pc.getc(); // wait for key 00236 LEDKEY8.printf("%08x", 0x00); 00237 00238 for (int i=0; i<LEDKEY8_NR_DIGITS; i++) { 00239 00240 for (int cnt=0; cnt<0x10; cnt++) { 00241 LEDKEY8.locate(i); 00242 LEDKEY8.printf("%0x", cnt); 00243 00244 // wait(0.5); 00245 cmd = pc.getc(); // wait for key 00246 } 00247 00248 } 00249 pc.printf("\r\nShow all hex digits done\r\n"); 00250 #endif 00251 } 00252 00253 if (keydata[LEDKEY8_SW4_IDX] == LEDKEY8_SW4_BIT) { //sw4 00254 // LEDKEY8.cls(); 00255 // LEDKEY8.writeData(mbed_str); 00256 #if(1) 00257 //test to show all icons 00258 pc.printf("Show all icons\r\n"); 00259 LEDKEY8.cls(true); // Also clear all Icons 00260 00261 float delay=0.1; 00262 // Icons on 00263 LEDKEY8.setIcon(TM1638_LEDKEY8::LD1); wait(delay); 00264 LEDKEY8.setIcon(TM1638_LEDKEY8::LD2); wait(delay); 00265 LEDKEY8.setIcon(TM1638_LEDKEY8::LD3); wait(delay); 00266 LEDKEY8.setIcon(TM1638_LEDKEY8::LD4); wait(delay); 00267 LEDKEY8.setIcon(TM1638_LEDKEY8::LD5); wait(delay); 00268 LEDKEY8.setIcon(TM1638_LEDKEY8::LD6); wait(delay); 00269 LEDKEY8.setIcon(TM1638_LEDKEY8::LD7); wait(delay); 00270 LEDKEY8.setIcon(TM1638_LEDKEY8::LD8); wait(delay); 00271 00272 wait(delay); 00273 00274 // Icons off 00275 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD1); wait(delay); 00276 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD2); wait(delay); 00277 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD3); wait(delay); 00278 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD4); wait(delay); 00279 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD5); wait(delay); 00280 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD6); wait(delay); 00281 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD7); wait(delay); 00282 LEDKEY8.clrIcon(TM1638_LEDKEY8::LD8); wait(delay); 00283 00284 // wait(1); 00285 // LEDKEY8.cls(); // clear all, preserve Icons 00286 pc.printf("Show all icons done\r\n"); 00287 #endif 00288 } 00289 00290 if (keydata[LEDKEY8_SW5_IDX] == LEDKEY8_SW5_BIT) { //sw5 00291 LEDKEY8.cls(); // clear all, preserve Icons 00292 00293 #if(0) 00294 LEDKEY8.printf("Count"); 00295 for (int cnt=0; cnt<=0xFF; cnt++) { 00296 LEDKEY8.locate(6); 00297 LEDKEY8.printf("%02x", cnt); 00298 wait(0.2); 00299 } 00300 #endif 00301 00302 00303 // LEDKEY8.writeData(hello_str); 00304 LEDKEY8.printf("hello"); 00305 } 00306 00307 if (keydata[LEDKEY8_SW6_IDX] == LEDKEY8_SW6_BIT) { //sw6 00308 LEDKEY8.cls(); // clear all, preserve Icons 00309 // LEDKEY8.writeData(bye_str); 00310 LEDKEY8.printf("Bye"); 00311 } 00312 00313 if (keydata[LEDKEY8_SW7_IDX] == LEDKEY8_SW7_BIT) { //sw7 00314 LEDKEY8.cls(); // clear all, preserve Icons 00315 LEDKEY8.printf("%2.3f", -0.1234); // test decimal point display 00316 wait(0.5); 00317 LEDKEY8.cls(); // clear all, preserve Icons 00318 LEDKEY8.printf("%2.3f", -012.345); // test decimal point display 00319 } 00320 00321 if (keydata[LEDKEY8_SW8_IDX] == LEDKEY8_SW8_BIT) { //sw8 00322 float delay=0.1; 00323 // Icons on 00324 LEDKEY8.setIcon(TM1638_LEDKEY8::DP1); wait(delay); 00325 LEDKEY8.setIcon(TM1638_LEDKEY8::DP2); wait(delay); 00326 LEDKEY8.setIcon(TM1638_LEDKEY8::DP3); wait(delay); 00327 LEDKEY8.setIcon(TM1638_LEDKEY8::DP4); wait(delay); 00328 LEDKEY8.setIcon(TM1638_LEDKEY8::DP5); wait(delay); 00329 LEDKEY8.setIcon(TM1638_LEDKEY8::DP6); wait(delay); 00330 LEDKEY8.setIcon(TM1638_LEDKEY8::DP7); wait(delay); 00331 LEDKEY8.setIcon(TM1638_LEDKEY8::DP8); wait(delay); 00332 00333 wait(delay); 00334 00335 // Icons off 00336 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP8); wait(delay); 00337 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP7); wait(delay); 00338 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP6); wait(delay); 00339 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP5); wait(delay); 00340 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP4); wait(delay); 00341 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP3); wait(delay); 00342 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP2); wait(delay); 00343 LEDKEY8.clrIcon(TM1638_LEDKEY8::DP1); wait(delay); 00344 } 00345 00346 } //if Key 00347 00348 myled = !myled; 00349 wait(0.3); 00350 } //while 00351 } 00352 #endif 00353 00354 00355 #if (QYF_TEST == 1) 00356 // QYF TM1638 Test 00357 #include "Font_7Seg.h" 00358 00359 Serial pc(USBTX, USBRX); 00360 DigitalOut myled(LED1); 00361 00362 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments) 00363 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03}; 00364 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; 00365 TM1638::DisplayData_t animate[] = { 00366 {S7_A1,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00367 {S7_A2,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00368 {S7_A3,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00369 {S7_A4,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00370 {S7_A5,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00371 {S7_A6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00372 {S7_A7,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00373 {S7_A8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00374 00375 {0x00,0x00, S7_B8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00376 {0x00,0x00, 0x00,0x00, S7_C8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00377 00378 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D8,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00379 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D7,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00380 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00381 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D5,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00382 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D4,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00383 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D3,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00384 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D2,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00385 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D1,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00386 00387 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_E1,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00388 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_F1,0x00, 0x00,0x00, 0x00,0x00}, 00389 }; 00390 // KeyData_t size is 4 bytes 00391 TM1638::KeyData_t keydata; 00392 00393 //TM1638_QFY declaration 00394 TM1638_QYF QYF(p5,p6,p7, p8); 00395 00396 char cmd, bits; 00397 int main() { 00398 00399 pc.printf("Hello World\r\n"); // 00400 00401 QYF.cls(); 00402 QYF.writeData(all_str); 00403 wait(2); 00404 QYF.setBrightness(TM1638_BRT3); 00405 wait(1); 00406 QYF.setBrightness(TM1638_BRT0); 00407 wait(1); 00408 QYF.setBrightness(TM1638_BRT4); 00409 00410 wait(1); 00411 QYF.cls(true); 00412 QYF.printf("Hello"); 00413 00414 while (1) { 00415 00416 // Check and read keydata 00417 if (QYF.getKeys(&keydata)) { 00418 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]); 00419 00420 if (keydata[QYF_SW1_IDX] == QYF_SW1_BIT) { //sw1 00421 QYF.cls(); 00422 QYF.writeData(all_str); 00423 00424 wait(0.5); 00425 for (int i=0; i<20; i++) { 00426 QYF.writeData(animate[i]); 00427 wait(0.05); 00428 } 00429 } 00430 00431 if (keydata[QYF_SW2_IDX] == QYF_SW2_BIT) { //sw2 00432 QYF.cls(); 00433 // QYF.writeData(hello_str); 00434 #if(1) 00435 //test to show all segs 00436 pc.printf("Show all segs\r\n"); 00437 wait(1); 00438 QYF.cls(); 00439 00440 for (int i=0; i<TM1638_DISPLAY_MEM; i++) { 00441 for (int bit=0; bit<8; bit++) { 00442 QYF.cls(); 00443 00444 bits = 0x01 << bit; 00445 QYF.writeData(bits, i); 00446 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); 00447 // wait(0.5); 00448 cmd = pc.getc(); // wait for key 00449 } 00450 } 00451 pc.printf("\r\nShow all segs done\r\n"); 00452 #endif 00453 00454 } 00455 00456 if (keydata[QYF_SW3_IDX] == QYF_SW3_BIT) { //sw3 00457 // QYF.cls(); 00458 00459 #if(1) 00460 //test to show all NATO alpha chars 00461 pc.printf("Show all NATO Alpha chars\r\n"); 00462 00463 QYF.cls(); // clear all, preserve Icons 00464 for (int i=0; i<26; i++) { 00465 QYF.locate(0); 00466 QYF.printf("%s", NATO[i]); 00467 wait(0.5); 00468 } 00469 pc.printf("Show all NATO Alpha chars done\r\n"); 00470 #endif 00471 00472 #if(0) 00473 //test to show all alpha chars 00474 pc.printf("Show all alpha chars\r\n"); 00475 wait(1); 00476 QYF.cls(); 00477 00478 for (int i=0; i<26; i++) { 00479 QYF.printf("%c", char(i + 'A')); 00480 // QYF.printf("%c", char(i + 'a')); 00481 wait(0.25); 00482 } 00483 pc.printf("Show all alpha chars done\r\n"); 00484 #endif 00485 00486 #if(0) 00487 //test to show all chars 00488 pc.printf("Show all chars\r\n"); 00489 wait(1); 00490 QYF.cls(); 00491 00492 for (int i=FONT_7S_START; i<FONT_7S_END; i++) { 00493 QYF.printf("%c", char(i)); 00494 // wait(0.25); 00495 cmd = pc.getc(); // wait for key 00496 } 00497 pc.printf("Show all chars done\r\n"); 00498 #endif 00499 00500 00501 } 00502 00503 if (keydata[QYF_SW4_IDX] == QYF_SW4_BIT) { //sw4 00504 00505 #if(0) 00506 //test to show all digits (base is 10) 00507 pc.printf("Show all digits\r\n"); 00508 wait(1); 00509 QYF.cls(); 00510 00511 for (int i=0; i<QYF_NR_DIGITS; i++) { 00512 00513 for (int cnt=0; cnt<10; cnt++) { 00514 QYF.locate(i); 00515 QYF.printf("%0d", cnt); 00516 00517 // wait(0.5); 00518 cmd = pc.getc(); // wait for key 00519 } 00520 } 00521 pc.printf("\r\nShow all digits done\r\n"); 00522 #endif 00523 00524 #if(1) 00525 //test to show all digits (base is 0x10) 00526 pc.printf("Show all hex digits\r\n"); 00527 wait(1); 00528 QYF.cls(); 00529 00530 QYF.printf("%08x", 0x012345AB); 00531 cmd = pc.getc(); // wait for key 00532 QYF.printf("%08x", 0x0); 00533 00534 for (int i=0; i<QYF_NR_DIGITS; i++) { 00535 00536 for (int cnt=0; cnt<0x10; cnt++) { 00537 QYF.locate(i); 00538 QYF.printf("%0x", cnt); 00539 00540 // wait(0.5); 00541 cmd = pc.getc(); // wait for key 00542 } 00543 00544 } 00545 pc.printf("\r\nShow all hex digits done\r\n"); 00546 #endif 00547 } 00548 00549 if (keydata[QYF_SW5_IDX] == QYF_SW5_BIT) { //sw5 00550 QYF.cls(); // clear all, preserve Icons 00551 00552 #if(1) 00553 QYF.printf("Count"); 00554 for (int cnt=0; cnt<=0xFF; cnt++) { 00555 QYF.locate(6); 00556 QYF.printf("%02x", cnt); 00557 wait(0.2); 00558 } 00559 #endif 00560 } 00561 00562 if (keydata[QYF_SW6_IDX] == QYF_SW6_BIT) { //sw6 00563 QYF.cls(); // clear all, preserve Icons 00564 QYF.printf("%2.3f", -0.1234); // test decimal point display 00565 wait(0.5); 00566 QYF.cls(); // clear all, preserve Icons 00567 QYF.printf("%2.3f", -012.345); // test decimal point display 00568 } 00569 00570 if (keydata[QYF_SW7_IDX] == QYF_SW7_BIT) { //sw7 00571 float delay=0.1; 00572 // Icons on 00573 QYF.setIcon(TM1638_QYF::DP1); wait(delay); 00574 QYF.setIcon(TM1638_QYF::DP2); wait(delay); 00575 QYF.setIcon(TM1638_QYF::DP3); wait(delay); 00576 QYF.setIcon(TM1638_QYF::DP4); wait(delay); 00577 QYF.setIcon(TM1638_QYF::DP5); wait(delay); 00578 QYF.setIcon(TM1638_QYF::DP6); wait(delay); 00579 QYF.setIcon(TM1638_QYF::DP7); wait(delay); 00580 QYF.setIcon(TM1638_QYF::DP8); wait(delay); 00581 00582 wait(delay); 00583 00584 // Icons off 00585 QYF.clrIcon(TM1638_QYF::DP8); wait(delay); 00586 QYF.clrIcon(TM1638_QYF::DP7); wait(delay); 00587 QYF.clrIcon(TM1638_QYF::DP6); wait(delay); 00588 QYF.clrIcon(TM1638_QYF::DP5); wait(delay); 00589 QYF.clrIcon(TM1638_QYF::DP4); wait(delay); 00590 QYF.clrIcon(TM1638_QYF::DP3); wait(delay); 00591 QYF.clrIcon(TM1638_QYF::DP2); wait(delay); 00592 QYF.clrIcon(TM1638_QYF::DP1); wait(delay); 00593 } 00594 00595 if (keydata[QYF_SW8_IDX] == QYF_SW8_BIT) { //sw8 00596 QYF.cls(); 00597 QYF.printf("Hello"); 00598 } 00599 00600 if (keydata[QYF_SW9_IDX] == QYF_SW9_BIT) { //sw9 00601 QYF.cls(); // clear all, preserve Icons 00602 QYF.printf("Bye"); 00603 } 00604 00605 } //if Key 00606 00607 myled = !myled; 00608 wait(0.3); 00609 } //while 00610 } 00611 #endif 00612 00613 00614 #if (LKM1638_TEST == 1) 00615 // LKM1638 TM1638 Test 00616 #include "Font_7Seg.h" 00617 00618 Serial pc(USBTX, USBRX); 00619 DigitalOut myled(LED1); 00620 00621 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments) 00622 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03}; 00623 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; 00624 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}; 00625 TM1638::DisplayData_t bye_str = {C7_B,0x00, C7_Y,0x00, C7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; 00626 00627 TM1638::DisplayData_t animate[] = { 00628 {S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00629 {0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00630 {0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00631 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00632 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00633 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00}, 00634 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00}, 00635 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00}, 00636 00637 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_B,0x00}, 00638 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_C,0x00}, 00639 00640 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00}, 00641 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00}, 00642 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00}, 00643 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00644 {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00645 {0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00646 {0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00647 {S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00648 00649 {S7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00650 {S7_F,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, 00651 }; 00652 // KeyData_t size is 4 bytes 00653 TM1638::KeyData_t keydata; 00654 00655 //TM1638_LKM1638 declaration 00656 TM1638_LKM1638 LKM1638(p5,p6,p7, p8); 00657 00658 char cmd, bits; 00659 int main() { 00660 00661 pc.printf("Hello World\r\n"); // 00662 00663 LKM1638.cls(); 00664 LKM1638.writeData(all_str); 00665 wait(2); 00666 LKM1638.setBrightness(TM1638_BRT3); 00667 wait(1); 00668 LKM1638.setBrightness(TM1638_BRT0); 00669 wait(1); 00670 LKM1638.setBrightness(TM1638_BRT4); 00671 00672 wait(1); 00673 LKM1638.cls(true); 00674 LKM1638.writeData(hello_str); 00675 00676 while (1) { 00677 00678 // Check and read keydata 00679 if (LKM1638.getKeys(&keydata)) { 00680 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]); 00681 00682 if (keydata[LKM1638_SW1_IDX] == LKM1638_SW1_BIT) { //sw1 00683 LKM1638.cls(); 00684 LKM1638.writeData(all_str); 00685 00686 wait(0.5); 00687 for (int i=0; i<20; i++) { 00688 LKM1638.writeData(animate[i]); 00689 wait(0.05); 00690 } 00691 } 00692 00693 if (keydata[LKM1638_SW2_IDX] == LKM1638_SW2_BIT) { //sw2 00694 LKM1638.cls(); 00695 // LKM1638.writeData(hello_str); 00696 #if(1) 00697 //test to show all segs 00698 pc.printf("Show all segs\r\n"); 00699 wait(1); 00700 LKM1638.cls(); 00701 00702 for (int i=0; i<TM1638_DISPLAY_MEM; i++) { 00703 for (int bit=0; bit<8; bit++) { 00704 LKM1638.cls(); 00705 00706 bits = 0x01 << bit; 00707 LKM1638.writeData(bits, i); 00708 00709 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); 00710 // wait(0.5); 00711 cmd = pc.getc(); // wait for key 00712 } 00713 } 00714 pc.printf("\r\nShow all segs done\r\n"); 00715 #endif 00716 00717 } 00718 00719 if (keydata[LKM1638_SW3_IDX] == LKM1638_SW3_BIT) { //sw3 00720 // LKM1638.cls(); 00721 // LKM1638.writeData(mbed_str); 00722 00723 00724 #if(1) 00725 //test to show all chars 00726 pc.printf("Show all NATO Alpha chars\r\n"); 00727 00728 LKM1638.cls(); // clear all, preserve Icons 00729 for (int i=0; i<26; i++) { 00730 LKM1638.locate(0); 00731 LKM1638.printf("%s", NATO[i]); 00732 wait(0.5); 00733 } 00734 pc.printf("Show all NATO Alpha chars done\r\n"); 00735 #endif 00736 00737 #if(0) 00738 //test to show all chars 00739 pc.printf("Show all alpha chars\r\n"); 00740 wait(1); 00741 LKM1638.cls(); 00742 00743 for (int i=0; i<26; i++) { 00744 LKM1638.printf("%c", char(i + 'A')); 00745 // LKM1638.printf("%c", char(i + 'a')); 00746 wait(0.25); 00747 } 00748 pc.printf("Show all alpha chars done\r\n"); 00749 #endif 00750 00751 #if(0) 00752 //test to show all chars 00753 pc.printf("Show all chars\r\n"); 00754 wait(1); 00755 LKM1638.cls(); 00756 00757 for (int i=FONT_7S_START; i<FONT_7S_END; i++) { 00758 LKM1638.printf("%c", char(i)); 00759 // wait(0.25); 00760 cmd = pc.getc(); // wait for key 00761 } 00762 pc.printf("Show all chars done\r\n"); 00763 #endif 00764 00765 00766 #if(0) 00767 //test to show all digits (base is 10) 00768 pc.printf("Show all digits\r\n"); 00769 wait(1); 00770 LKM1638.cls(); 00771 00772 for (int i=0; i<LKM1638_NR_DIGITS; i++) { 00773 00774 for (int cnt=0; cnt<10; cnt++) { 00775 LKM1638.locate(i); 00776 LKM1638.printf("%0d", cnt); 00777 00778 // wait(0.5); 00779 cmd = pc.getc(); // wait for key 00780 } 00781 } 00782 pc.printf("\r\nShow all digits done\r\n"); 00783 #endif 00784 00785 #if(1) 00786 //test to show all digits (base is 0x10) 00787 pc.printf("Show all hex digits\r\n"); 00788 wait(1); 00789 LKM1638.cls(); 00790 00791 LKM1638.printf("%08x", 0x012345AB); 00792 cmd = pc.getc(); // wait for key 00793 LKM1638.printf("%08x", 0x00); 00794 00795 for (int i=0; i<LKM1638_NR_DIGITS; i++) { 00796 00797 for (int cnt=0; cnt<0x10; cnt++) { 00798 LKM1638.locate(i); 00799 LKM1638.printf("%0x", cnt); 00800 00801 // wait(0.5); 00802 cmd = pc.getc(); // wait for key 00803 } 00804 00805 } 00806 pc.printf("\r\nShow all hex digits done\r\n"); 00807 #endif 00808 } 00809 00810 if (keydata[LKM1638_SW4_IDX] == LKM1638_SW4_BIT) { //sw4 00811 // LKM1638.cls(); 00812 // LKM1638.writeData(mbed_str); 00813 #if(1) 00814 //test to show all icons 00815 pc.printf("Show all icons\r\n"); 00816 LKM1638.cls(true); // Also clear all Icons 00817 00818 float delay=0.1; 00819 // Icons on 00820 LKM1638.setIcon(TM1638_LKM1638::RD1); wait(delay); 00821 LKM1638.setIcon(TM1638_LKM1638::RD2); wait(delay); 00822 LKM1638.setIcon(TM1638_LKM1638::RD3); wait(delay); 00823 LKM1638.setIcon(TM1638_LKM1638::RD4); wait(delay); 00824 LKM1638.setIcon(TM1638_LKM1638::RD5); wait(delay); 00825 LKM1638.setIcon(TM1638_LKM1638::RD6); wait(delay); 00826 LKM1638.setIcon(TM1638_LKM1638::RD7); wait(delay); 00827 LKM1638.setIcon(TM1638_LKM1638::RD8); wait(delay); 00828 00829 wait(delay); 00830 00831 // Icons off 00832 LKM1638.clrIcon(TM1638_LKM1638::RD1); wait(delay); 00833 LKM1638.clrIcon(TM1638_LKM1638::RD2); wait(delay); 00834 LKM1638.clrIcon(TM1638_LKM1638::RD3); wait(delay); 00835 LKM1638.clrIcon(TM1638_LKM1638::RD4); wait(delay); 00836 LKM1638.clrIcon(TM1638_LKM1638::RD5); wait(delay); 00837 LKM1638.clrIcon(TM1638_LKM1638::RD6); wait(delay); 00838 LKM1638.clrIcon(TM1638_LKM1638::RD7); wait(delay); 00839 LKM1638.clrIcon(TM1638_LKM1638::RD8); wait(delay); 00840 00841 wait(delay); 00842 00843 // Icons on 00844 LKM1638.setIcon(TM1638_LKM1638::GR1); wait(delay); 00845 LKM1638.setIcon(TM1638_LKM1638::GR2); wait(delay); 00846 LKM1638.setIcon(TM1638_LKM1638::GR3); wait(delay); 00847 LKM1638.setIcon(TM1638_LKM1638::GR4); wait(delay); 00848 LKM1638.setIcon(TM1638_LKM1638::GR5); wait(delay); 00849 LKM1638.setIcon(TM1638_LKM1638::GR6); wait(delay); 00850 LKM1638.setIcon(TM1638_LKM1638::GR7); wait(delay); 00851 LKM1638.setIcon(TM1638_LKM1638::GR8); wait(delay); 00852 00853 wait(delay); 00854 00855 // Icons off 00856 LKM1638.clrIcon(TM1638_LKM1638::GR1); wait(delay); 00857 LKM1638.clrIcon(TM1638_LKM1638::GR2); wait(delay); 00858 LKM1638.clrIcon(TM1638_LKM1638::GR3); wait(delay); 00859 LKM1638.clrIcon(TM1638_LKM1638::GR4); wait(delay); 00860 LKM1638.clrIcon(TM1638_LKM1638::GR5); wait(delay); 00861 LKM1638.clrIcon(TM1638_LKM1638::GR6); wait(delay); 00862 LKM1638.clrIcon(TM1638_LKM1638::GR7); wait(delay); 00863 LKM1638.clrIcon(TM1638_LKM1638::GR8); wait(delay); 00864 00865 wait(delay); 00866 00867 // Icons on 00868 LKM1638.setIcon(TM1638_LKM1638::YL1); wait(delay); 00869 LKM1638.setIcon(TM1638_LKM1638::YL2); wait(delay); 00870 LKM1638.setIcon(TM1638_LKM1638::YL3); wait(delay); 00871 LKM1638.setIcon(TM1638_LKM1638::YL4); wait(delay); 00872 LKM1638.setIcon(TM1638_LKM1638::YL5); wait(delay); 00873 LKM1638.setIcon(TM1638_LKM1638::YL6); wait(delay); 00874 LKM1638.setIcon(TM1638_LKM1638::YL7); wait(delay); 00875 LKM1638.setIcon(TM1638_LKM1638::YL8); wait(delay); 00876 00877 wait(delay); 00878 00879 // Icons off 00880 // Note: Yellow is hardly recognisable. Red LED is much brighter than Green 00881 LKM1638.clrIcon(TM1638_LKM1638::YL1); wait(delay); 00882 LKM1638.clrIcon(TM1638_LKM1638::YL2); wait(delay); 00883 LKM1638.clrIcon(TM1638_LKM1638::YL3); wait(delay); 00884 LKM1638.clrIcon(TM1638_LKM1638::YL4); wait(delay); 00885 LKM1638.clrIcon(TM1638_LKM1638::YL5); wait(delay); 00886 LKM1638.clrIcon(TM1638_LKM1638::YL6); wait(delay); 00887 LKM1638.clrIcon(TM1638_LKM1638::YL7); wait(delay); 00888 LKM1638.clrIcon(TM1638_LKM1638::YL8); wait(delay); 00889 00890 // wait(1); 00891 // LKM1638.cls(); // clear all, preserve Icons 00892 pc.printf("Show all icons done\r\n"); 00893 #endif 00894 } 00895 00896 if (keydata[LKM1638_SW5_IDX] == LKM1638_SW5_BIT) { //sw5 00897 LKM1638.cls(); // clear all, preserve Icons 00898 00899 #if(0) 00900 LKM1638.printf("Count"); 00901 for (int cnt=0; cnt<=0xFF; cnt++) { 00902 LKM1638.locate(6); 00903 LKM1638.printf("%02x", cnt); 00904 wait(0.2); 00905 } 00906 #endif 00907 00908 00909 // LKM1638.writeData(hello_str); 00910 LKM1638.printf("hello"); 00911 } 00912 00913 if (keydata[LKM1638_SW6_IDX] == LKM1638_SW6_BIT) { //sw6 00914 LKM1638.cls(); // clear all, preserve Icons 00915 // LKM1638.writeData(bye_str); 00916 LKM1638.printf("Bye"); 00917 } 00918 00919 if (keydata[LKM1638_SW7_IDX] == LKM1638_SW7_BIT) { //sw7 00920 LKM1638.cls(); // clear all, preserve Icons 00921 LKM1638.printf("%2.3f", -0.1234); // test decimal point display 00922 wait(0.5); 00923 LKM1638.cls(); // clear all, preserve Icons 00924 LKM1638.printf("%2.3f", -012.345); // test decimal point display 00925 } 00926 00927 if (keydata[LKM1638_SW8_IDX] == LKM1638_SW8_BIT) { //sw8 00928 float delay=0.1; 00929 // Icons on 00930 LKM1638.setIcon(TM1638_LKM1638::DP1); wait(delay); 00931 LKM1638.setIcon(TM1638_LKM1638::DP2); wait(delay); 00932 LKM1638.setIcon(TM1638_LKM1638::DP3); wait(delay); 00933 LKM1638.setIcon(TM1638_LKM1638::DP4); wait(delay); 00934 LKM1638.setIcon(TM1638_LKM1638::DP5); wait(delay); 00935 LKM1638.setIcon(TM1638_LKM1638::DP6); wait(delay); 00936 LKM1638.setIcon(TM1638_LKM1638::DP7); wait(delay); 00937 LKM1638.setIcon(TM1638_LKM1638::DP8); wait(delay); 00938 00939 wait(delay); 00940 00941 // Icons off 00942 LKM1638.clrIcon(TM1638_LKM1638::DP8); wait(delay); 00943 LKM1638.clrIcon(TM1638_LKM1638::DP7); wait(delay); 00944 LKM1638.clrIcon(TM1638_LKM1638::DP6); wait(delay); 00945 LKM1638.clrIcon(TM1638_LKM1638::DP5); wait(delay); 00946 LKM1638.clrIcon(TM1638_LKM1638::DP4); wait(delay); 00947 LKM1638.clrIcon(TM1638_LKM1638::DP3); wait(delay); 00948 LKM1638.clrIcon(TM1638_LKM1638::DP2); wait(delay); 00949 LKM1638.clrIcon(TM1638_LKM1638::DP1); wait(delay); 00950 } 00951 00952 } //if Key 00953 00954 myled = !myled; 00955 wait(0.3); 00956 } //while 00957 } 00958 #endif 00959 00960 00961 00962 #if (TM1638_TEST == 1) 00963 // Direct TM1638 Test 00964 00965 Serial pc(USBTX, USBRX); 00966 DigitalOut myled(LED1); 00967 00968 // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments) 00969 TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03}; 00970 TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; 00971 00972 // KeyData_t size is 4 bytes 00973 TM1638::KeyData_t keydata; 00974 00975 TM1638 TM1638(p5,p6,p7, p8); 00976 00977 char cmd, bits; 00978 int main() { 00979 00980 pc.printf("Hello World\r\n"); // 00981 00982 TM1638.cls(); 00983 TM1638.writeData(all_str); 00984 wait(2); 00985 TM1638.setBrightness(TM1638_BRT3); 00986 wait(1); 00987 TM1638.setBrightness(TM1638_BRT0); 00988 wait(1); 00989 TM1638.setBrightness(TM1638_BRT4); 00990 00991 while (1) { 00992 00993 // Check and read keydata 00994 if (TM1638.getKeys(&keydata)) { 00995 pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]); 00996 00997 if (keydata[0] == 0x01) { //sw1 00998 TM1638.cls(); 00999 TM1638.writeData(all_str); 01000 } 01001 01002 if (keydata[1] == 0x01) { //sw2 01003 TM1638.cls(); 01004 TM1638.writeData(cls_str); 01005 } 01006 01007 01008 if (keydata[2] == 0x01) { //sw3 01009 #if(1) 01010 //test to show all segs 01011 pc.printf("Show all segs\r\n"); 01012 wait(1); 01013 TM1638.cls(); 01014 01015 for (int i=0; i<TM1638_DISPLAY_MEM; i++) { 01016 for (int bit=0; bit<8; bit++) { 01017 TM1638.cls(); 01018 01019 bits = 0x01 << bit; 01020 TM1638.writeData(bits, i); 01021 01022 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); 01023 // wait(0.5); 01024 cmd = pc.getc(); // wait for key 01025 } 01026 } 01027 pc.printf("Show all segs done\r\n"); 01028 #endif 01029 } 01030 01031 if (keydata[3] == 0x01) { //sw4 01032 TM1638.cls(); 01033 // TM1638.writeData(hello_str); 01034 } 01035 01036 01037 } //if Key 01038 01039 myled = !myled; 01040 wait(0.3); 01041 } //while 01042 } 01043 #endif
Generated on Sat Jul 16 2022 13:15:11 by 1.7.2