Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
TM1638 LED controller (80 LEDs max), Keyboard scan (24 keys max)