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

Dependencies:   TM1638 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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