Test program fro TM1637 LEDController Library, Initial release.

Dependencies:   TM1637 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* mbed TM1637 Test program, for TM1637 LED controller
00002  * Copyright (c) 2016, v01: WH, Initial version
00003  *               2017, v02: WH, Added RobotDyn 6 Digit module,
00004  *                          Added Eyewink 6 Digit + 5 Keys module,
00005  *                          Constructor adapted to 2 pins: dio, clk    
00006  *
00007  * Permission is hereby granted, free of charge, to any person obtaining a copy
00008  * of this software and associated documentation files (the "Software"), to deal
00009  * in the Software without restriction, including without limitation the rights
00010  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00011  * copies of the Software, and to permit persons to whom the Software is
00012  * furnished to do so, subject to the following conditions:
00013  *
00014  * The above copyright notice and this permission notice shall be included in
00015  * all copies or substantial portions of the Software.
00016  *
00017  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00018  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00019  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00020  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00021  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00022  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00023  * THE SOFTWARE.
00024  */
00025 #include "mbed.h"
00026 #include "TM1637.h"
00027 
00028 #if (CATALEX_TEST == 1)
00029 // CATALEX TM1637 4 Digit display test
00030 #include "Font_7Seg.h"
00031 
00032 Serial pc(USBTX, USBRX);
00033 DigitalOut myled(LED1);  //NOTE: On F401 LED1 is Pin D13, which is SCK!
00034 
00035 // DisplayData_t size is 4 bytes (4 Grids @ 8 Segments) 
00036 TM1637::DisplayData_t all_str   = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};  
00037 TM1637::DisplayData_t cls_str   = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  
00038 TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00, 0x00, 0x00};
00039 TM1637::DisplayData_t bye_str   = {C7_B, C7_Y, C7_E, 0x00, 0x00, 0x00};
00040 
00041 // KeyData_t size is 1 bytes  
00042 TM1637::KeyData_t keydata; 
00043 
00044 //TM1637_CATALEX declaration
00045 #if(SPI==1)
00046 //Old Constructor
00047 TM1637_CATALEX CATALEX(p5, p6, p7);   //LPC1768
00048 //TM1637_CATALEX CATALEX(D8, D9, D10);  //F401
00049 #else
00050 //New Constructor
00051 TM1637_CATALEX CATALEX(p6, p7);       //LPC1768
00052 //TM1637_CATALEX CATALEX(D9, D10);      //F401
00053 #endif
00054 
00055 void show_menu() {
00056 //    pc.printf("0:   Exit\n\r");
00057     pc.printf("1:   All\n\r");    
00058     pc.printf("2:   Show all segs\r\n");
00059     pc.printf("3:   Show all chars\n\r");
00060     pc.printf("4:   Show all digits\n\r");
00061     pc.printf("5:   Show all icons\n\r");
00062     pc.printf("6:   Counter\n\r");
00063     pc.printf("7:   Floats\n\r");
00064     pc.printf("8:   Kitt\n\r");
00065     pc.printf("9:   Cls\n\r");    
00066     pc.printf("A:   Bye\n\r");    
00067     pc.printf("k:   Key\n\r");
00068 }
00069 
00070 
00071 char cmd, bits;
00072 int main() {
00073     
00074     pc.printf("Hello World\r\n"); //    
00075     
00076     CATALEX.cls(); 
00077     CATALEX.writeData(all_str);
00078     wait(2);
00079     CATALEX.setBrightness(TM1637_BRT3);    
00080     wait(1);
00081     CATALEX.setBrightness(TM1637_BRT0);        
00082     wait(1);
00083     CATALEX.setBrightness(TM1637_BRT4);            
00084 
00085     wait(1);
00086     CATALEX.cls(true); 
00087     CATALEX.writeData(hello_str); 
00088     
00089     char cmd2 = '0';
00090     while (1) {
00091       
00092       show_menu();
00093       cmd2 = pc.getc();
00094 
00095       switch (cmd2) {
00096         case '1' : {
00097                       pc.printf("all\r\n");
00098                       CATALEX.cls(); 
00099                       CATALEX.writeData(all_str);
00100                       break;
00101         }
00102 
00103         case '2' : {
00104 #if(1)
00105 //test to show all segs
00106           pc.printf("Show all segs\r\n");
00107           wait(1);          
00108           CATALEX.cls(); 
00109          
00110           for (int i=0; i<TM1637_DISPLAY_MEM; i++) {            
00111             for (int bit=0; bit<8; bit++) {
00112               CATALEX.cls(); 
00113 
00114               bits = 0x01 << bit;              
00115               CATALEX.writeData(bits, i);
00116 
00117               pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);              
00118 //              wait(0.5);
00119               cmd = pc.getc(); // wait for key
00120             }  
00121           }
00122           pc.printf("\r\nShow all segs done\r\n");                    
00123 #endif 
00124           break;          
00125         }
00126 
00127         case '3' : {
00128 
00129 #if(1)
00130 //test to show all chars
00131           pc.printf("Show all alpha chars\r\n");
00132           wait(1);          
00133           CATALEX.cls(); 
00134          
00135           for (int i=0; i<26; i++) {
00136             CATALEX.printf("%c", char(i + 'A'));
00137 //            CATALEX.printf("%c", char(i + 'a'));            
00138             wait(0.25);                      
00139           }
00140           pc.printf("Show all alpha chars done\r\n");                    
00141 #endif            
00142 
00143 #if(0)
00144 //test to show all chars
00145           pc.printf("Show all chars\r\n");
00146           wait(1);          
00147           CATALEX.cls(); 
00148 
00149           for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
00150             CATALEX.printf("%c", char(i));
00151 //            wait(0.25);
00152             cmd = pc.getc(); // wait for key            
00153           }
00154           pc.printf("Show all chars done\r\n");                    
00155 #endif            
00156           break;          
00157         }
00158         case '4': {
00159 #if(0)
00160 //test to show all digits (base is 10)
00161           pc.printf("Show all digits\r\n");
00162           wait(1);          
00163           CATALEX.cls(); 
00164 
00165           for (int i=0; i<CATALEX_NR_DIGITS; i++) {
00166 
00167             for (int cnt=0; cnt<10; cnt++) {
00168               CATALEX.locate(i);
00169               CATALEX.printf("%0d", cnt);
00170 
00171 //              wait(0.5);
00172               cmd = pc.getc(); // wait for key
00173             }  
00174           }
00175           pc.printf("\r\nShow all digits done\r\n");                    
00176 #endif                
00177 
00178 #if(1)
00179 //test to show all digits (base is 0x10)
00180           pc.printf("Show all hex digits\r\n");
00181           wait(1);          
00182           CATALEX.cls(); 
00183 
00184           CATALEX.printf("%04x", 0x01AB);
00185           cmd = pc.getc(); // wait for key                                     
00186           CATALEX.printf("%04x", 0x0);
00187                     
00188           for (int i=0; i<CATALEX_NR_DIGITS; i++) {
00189 
00190             for (int cnt=0; cnt<0x10; cnt++) {
00191               CATALEX.locate(i);
00192               CATALEX.printf("%0x", cnt);
00193 
00194 //              wait(0.5);
00195               cmd = pc.getc(); // wait for key
00196             }  
00197           }
00198           pc.printf("\r\nShow all hex digits done\r\n");          
00199 #endif                
00200           break;          
00201         }
00202         case '5':  { 
00203 #if(1)
00204 //test to show all icons
00205           pc.printf("Show all icons\r\n");
00206           CATALEX.cls(true); // Also clear all Icons
00207           
00208           float delay=0.1;
00209           // Icons on, Note that some versions do not have decimal points, but a
00210           // a double colon on the second digit to show hours:min
00211           CATALEX.setIcon(TM1637_CATALEX::DP1); wait(delay);
00212           CATALEX.setIcon(TM1637_CATALEX::DP2); wait(delay);
00213 //          CATALEX.setIcon(TM1637_CATALEX::COL2); wait(delay);
00214           CATALEX.setIcon(TM1637_CATALEX::DP3); wait(delay);
00215           CATALEX.setIcon(TM1637_CATALEX::DP4); wait(delay);
00216 
00217           wait(delay);
00218  
00219           // Icons off
00220           CATALEX.clrIcon(TM1637_CATALEX::DP4); wait(delay);
00221           CATALEX.clrIcon(TM1637_CATALEX::DP3); wait(delay);
00222           CATALEX.clrIcon(TM1637_CATALEX::DP2); wait(delay);
00223 //          CATALEX.clrIcon(TM1637_CATALEX::COL2); wait(delay);
00224           CATALEX.clrIcon(TM1637_CATALEX::DP1); wait(delay);
00225 
00226 //          wait(1);
00227 //          CATALEX.cls(); // clear all, preserve Icons
00228           pc.printf("Show all icons done\r\n");                    
00229 #endif           
00230           break;
00231         }                          
00232 
00233         case '6': {
00234           CATALEX.cls(); // clear all, preserve Icons
00235 
00236 #if(1)
00237           CATALEX.locate(0);
00238          
00239           for (int cnt=0; cnt<=0xFF; cnt++) {
00240             CATALEX.locate(2);
00241             CATALEX.printf("%02x", cnt);           
00242             wait(0.2);
00243           }  
00244 #endif
00245 
00246 //          CATALEX.writeData(hello_str);
00247 //          CATALEX.printf("hello");                  
00248 
00249           break;          
00250         }
00251         case '7': {
00252           CATALEX.cls(); // clear all, preserve Icons
00253           CATALEX.printf("%1.2f", -0.12);  // test decimal point display                    
00254           wait(0.5);
00255           CATALEX.cls(); // clear all, preserve Icons          
00256           CATALEX.printf("%1.3f", 1.234);  // test decimal point display
00257           break;          
00258         }
00259 
00260         case '8': {
00261 
00262 #if(1)
00263 //test to show KITT
00264           pc.printf("Show KITT scanner\r\n");
00265 
00266           
00267 //                          0123
00268 const char KITT[][5]   = {{"8   "},
00269                           {"38  "},
00270                           {" 38 "},
00271                           {"  38"},
00272                           {"   3"},
00273                           {"    "},
00274                           {"   8"},
00275                           {"  8E"},
00276                           {" 8E "},
00277                           {"8E  "},
00278                           {"E   "},
00279                           {"    "}
00280                         };     
00281          
00282           CATALEX.cls(); // clear all, preserve Icons
00283           
00284           while (!pc.readable()) { // wait for key            
00285             for (int i=0; i < (sizeof(KITT) / 5) ; i++) {
00286               CATALEX.locate(0);
00287               CATALEX.printf("%s", KITT[i]);
00288               wait(0.05);
00289             }
00290           }
00291           cmd = pc.getc(); // read key           
00292           pc.printf("Show KITT done\r\n");
00293 #endif
00294           break;
00295         }  
00296 
00297         case '9': {
00298 //          CATALEX.cls(); // clear all, preserve Icons
00299           CATALEX.cls(true); // clear all, including Icons                
00300           break;
00301         }  
00302 
00303         case 'A': {
00304 
00305           CATALEX.cls(); // clear all, preserve Icons
00306 //          CATALEX.writeData(bye_str);
00307           CATALEX.printf("Bye");          
00308        
00309           break;
00310         }  
00311 
00312         case 'k': {
00313           if (CATALEX.getKeys(&keydata)) {
00314             pc.printf("Keydata = 0x%02x\r\n", keydata);
00315           } 
00316           break;
00317         }
00318           
00319         default : {
00320           break;
00321         }         
00322      
00323       } //switch cmd
00324 
00325 #if(1)
00326       // Check and read keydata
00327       if (CATALEX.getKeys(&keydata)) {
00328         pc.printf("Keydata = 0x%02x\r\n", keydata);
00329 
00330         CATALEX.cls(); 
00331         switch (keydata) {
00332           case TM1637_SW9_BIT : { //sw9, 0xF7
00333                                   CATALEX.printf("--09");
00334                                   break;
00335                                 }
00336 
00337           case TM1637_SW10_BIT: { //sw10, 0x77
00338                                   CATALEX.printf("--10");
00339                                   break;
00340                                 }
00341 
00342           default :             {
00343                                   CATALEX.printf("----");
00344                                   break;
00345                                 }         
00346         }  
00347 
00348       } // Check keydata
00349 #endif
00350 
00351       myled = !myled;
00352       wait(0.3);      
00353     } //while
00354 }
00355 #endif
00356 
00357 
00358 #if (ROBOTDYN_TEST == 1)
00359 // ROBOTDYN TM1637 6 Digit display test
00360 #include "Font_7Seg.h"
00361 
00362 Serial pc(USBTX, USBRX);
00363 DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
00364 
00365 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments) 
00366 TM1637::DisplayData_t all_str   = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};  
00367 TM1637::DisplayData_t cls_str   = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  
00368 TM1637::DisplayData_t hello_str = {0x00, 0x00, 0x00, C7_I, C7_H, 0x00};
00369 TM1637::DisplayData_t bye_str   = {0x00, 0x00, 0x00, C7_E, C7_Y, C7_B};
00370 
00371 // KeyData_t size is 1 bytes  
00372 TM1637::KeyData_t keydata; 
00373 
00374 //TM1637_ROBOTDYN declaration
00375 //New Constructor
00376 TM1637_ROBOTDYN ROBOTDYN(p6, p7);       //LPC1768
00377 //TM1637_ROBOTDYN ROBOTDYN(D9, D10);      //F401
00378 
00379 void show_menu() {
00380 //    pc.printf("0:   Exit\n\r");
00381     pc.printf("1:   All\n\r");    
00382     pc.printf("2:   Show all segs\r\n");
00383     pc.printf("3:   Show all chars\n\r");
00384     pc.printf("4:   Show all digits\n\r");
00385     pc.printf("5:   Show all icons\n\r");
00386     pc.printf("6:   Counter\n\r");
00387     pc.printf("7:   Floats\n\r");
00388     pc.printf("8:   Kitt\n\r");
00389     pc.printf("9:   Cls\n\r");
00390     pc.printf("A:   Bye\n\r");
00391 }
00392 
00393 
00394 char cmd, bits;
00395 int main() {
00396     
00397     pc.printf("Hello World\r\n"); //    
00398     
00399     ROBOTDYN.cls(); 
00400     ROBOTDYN.writeData(all_str);
00401     wait(2);
00402     ROBOTDYN.setBrightness(TM1637_BRT3);    
00403     wait(1);
00404     ROBOTDYN.setBrightness(TM1637_BRT0);        
00405     wait(1);
00406     ROBOTDYN.setBrightness(TM1637_BRT4);            
00407 
00408     wait(1);
00409     ROBOTDYN.cls(true); 
00410     ROBOTDYN.writeData(hello_str); 
00411     
00412     char cmd2 = '0';
00413     while (1) {
00414       
00415       show_menu();
00416       cmd2 = pc.getc();
00417 
00418       switch (cmd2) {
00419         case '1' : {
00420                       pc.printf("all\r\n");
00421                       ROBOTDYN.cls(); 
00422                       ROBOTDYN.writeData(all_str);
00423                       break;
00424         }
00425 
00426         case '2' : {
00427 #if(1)
00428 //test to show all segs
00429           pc.printf("Show all segs\r\n");
00430           wait(1);          
00431           ROBOTDYN.cls(); 
00432          
00433           for (int i=0; i<TM1637_DISPLAY_MEM; i++) {            
00434             for (int bit=0; bit<8; bit++) {
00435               ROBOTDYN.cls(); 
00436 
00437               bits = 0x01 << bit;              
00438               ROBOTDYN.writeData(bits, i);
00439 
00440               pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);              
00441 //              wait(0.5);
00442               cmd = pc.getc(); // wait for key
00443             }  
00444           }
00445           pc.printf("\r\nShow all segs done\r\n");                    
00446 #endif 
00447           break;          
00448         }
00449 
00450         case '3' : {
00451 
00452 #if(1)
00453 //test to show all chars
00454           pc.printf("Show all alpha chars\r\n");
00455           wait(1);          
00456           ROBOTDYN.cls(); 
00457          
00458           for (int i=0; i<26; i++) {
00459             ROBOTDYN.printf("%c", char(i + 'A'));
00460 //            ROBOTDYN.printf("%c", char(i + 'a'));            
00461             wait(0.25);                      
00462           }
00463           pc.printf("Show all alpha chars done\r\n");                    
00464 #endif            
00465 
00466 #if(0)
00467 //test to show all chars
00468           pc.printf("Show all chars\r\n");
00469           wait(1);          
00470           ROBOTDYN.cls(); 
00471 
00472           for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
00473             ROBOTDYN.printf("%c", char(i));
00474 //            wait(0.25);
00475             cmd = pc.getc(); // wait for key            
00476           }
00477           pc.printf("Show all chars done\r\n");                    
00478 #endif            
00479           break;          
00480         }
00481         case '4': {
00482 #if(0)
00483 //test to show all digits (base is 10)
00484           pc.printf("Show all digits\r\n");
00485           wait(1);          
00486           ROBOTDYN.cls(); 
00487 
00488           for (int i=0; i<ROBOTDYN_NR_DIGITS; i++) {
00489 
00490             for (int cnt=0; cnt<10; cnt++) {
00491               ROBOTDYN.locate(i);
00492               ROBOTDYN.printf("%0d", cnt);
00493 
00494 //              wait(0.5);
00495               cmd = pc.getc(); // wait for key
00496             }  
00497           }
00498           pc.printf("\r\nShow all digits done\r\n");                    
00499 #endif                
00500 
00501 #if(1)
00502 //test to show all digits (base is 0x10)
00503           pc.printf("Show all hex digits\r\n");
00504           wait(1);          
00505           ROBOTDYN.cls(); 
00506 
00507           ROBOTDYN.printf("%06x", 0x01ABCD);
00508           cmd = pc.getc(); // wait for key                                     
00509           ROBOTDYN.printf("%06x", 0x0);
00510                     
00511           for (int i=0; i<ROBOTDYN_NR_DIGITS; i++) {
00512 
00513             for (int cnt=0; cnt<0x10; cnt++) {
00514               ROBOTDYN.locate(i);
00515               ROBOTDYN.printf("%0x", cnt);
00516 
00517 //              wait(0.5);
00518               cmd = pc.getc(); // wait for key
00519             }  
00520           }
00521           pc.printf("\r\nShow all hex digits done\r\n");          
00522 #endif                
00523           break;          
00524         }
00525         case '5':  { 
00526 #if(1)
00527 //test to show all icons
00528           pc.printf("Show all icons\r\n");
00529           ROBOTDYN.cls(true); // Also clear all Icons
00530           
00531           float delay=0.1;
00532           // Icons on             
00533           ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP1); wait(delay);
00534           ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP2); wait(delay);
00535           ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP3); wait(delay);
00536           ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP4); wait(delay);
00537           ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP5); wait(delay);
00538           ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP6); wait(delay);                                                  
00539 
00540           wait(delay);
00541  
00542           // Icons off      
00543           ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP6); wait(delay);
00544           ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP5); wait(delay);
00545           ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP4); wait(delay);
00546           ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP3); wait(delay);
00547           ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP2); wait(delay);
00548           ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP1); wait(delay);                                        
00549 
00550 //          wait(1);          
00551 //          ROBOTDYN.cls(); // clear all, preserve Icons
00552           pc.printf("Show all icons done\r\n");                    
00553 #endif           
00554           break;
00555         }                          
00556 
00557         case '6': {
00558           ROBOTDYN.cls(); // clear all, preserve Icons
00559 
00560 #if(1)
00561           ROBOTDYN.locate(0);
00562          
00563           for (int cnt=0; cnt<=0xFF; cnt++) {
00564             ROBOTDYN.locate(4);
00565             ROBOTDYN.printf("%02x", cnt);           
00566             wait(0.2);
00567           }  
00568 #endif
00569 
00570 //          ROBOTDYN.writeData(hello_str);
00571 //          ROBOTDYN.printf("hello");                  
00572 
00573           break;          
00574         }
00575         case '7': {
00576           ROBOTDYN.cls(); // clear all, preserve Icons
00577           ROBOTDYN.printf("%1.4f", -0.1234);  // test decimal point display
00578           wait(0.5);
00579           ROBOTDYN.cls(); // clear all, preserve Icons          
00580           ROBOTDYN.printf("%3.3f", 123.456);  // test decimal point display
00581           break;          
00582         }
00583 
00584         case '8': {
00585 
00586 #if(1)
00587 //test to show KITT
00588           pc.printf("Show KITT scanner\r\n");
00589 
00590           
00591 //                          012345
00592 const char KITT[][7]   = {{"8     "},
00593                           {"38    "},
00594                           {" 38   "},
00595                           {"  38  "},
00596                           {"   38 "},
00597                           {"    38"},
00598                           {"     3"},
00599                           {"      "},
00600                           {"     8"},
00601                           {"    8E"},
00602                           {"   8E "},
00603                           {"  8E  "},
00604                           {" 8E   "},
00605                           {"8E    "},
00606                           {"E     "},
00607                           {"      "}
00608                         };     
00609          
00610           ROBOTDYN.cls(); // clear all, preserve Icons
00611           
00612           while (!pc.readable()) { // wait for key            
00613             for (int i=0; i < (sizeof(KITT) / 7) ; i++) {
00614               ROBOTDYN.locate(0);
00615               ROBOTDYN.printf("%s", KITT[i]);
00616               wait(0.1);
00617             }
00618           }
00619           cmd = pc.getc(); // read key           
00620           pc.printf("Show KITT done\r\n");
00621 #endif
00622           break;
00623         }  
00624 
00625 
00626         case '9': {
00627           ROBOTDYN.cls(true); // clear all, including Icons      
00628           break;
00629         }  
00630 
00631         case 'A': {
00632 
00633           ROBOTDYN.cls(); // clear all, preserve Icons
00634 //          ROBOTDYN.writeData(bye_str);
00635           ROBOTDYN.printf("Bye");          
00636        
00637           break;
00638         } 
00639 
00640         default : {
00641           break;
00642         }         
00643      
00644       } //switch cmd
00645 
00646       myled = !myled;
00647       wait(0.3);      
00648     } //while
00649 }
00650 #endif
00651 
00652 
00653 #if (EYEWINK_TEST == 1)
00654 // EYEWINK TM1637 6 Digit display with 5 keys test
00655 #include "Font_7Seg.h"
00656 
00657 Serial pc(USBTX, USBRX);
00658 DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
00659 
00660 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments) 
00661 TM1637::DisplayData_t all_str   = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};  
00662 TM1637::DisplayData_t cls_str   = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  
00663 TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00, 0x00, 0x00};
00664 TM1637::DisplayData_t bye_str   = {C7_B, C7_Y, C7_E, 0x00, 0x00, 0x00};
00665 
00666 // KeyData_t size is 1 bytes  
00667 TM1637::KeyData_t keydata; 
00668 
00669 //TM1637_EYEWINK declaration
00670 //New Constructor
00671 TM1637_EYEWINK EYEWINK(p6, p7);       //LPC1768
00672 //TM1637_EYEWINK EYEWINK(D9, D10);      //F401
00673 
00674 void show_menu() {
00675 //    pc.printf("0:   Exit\n\r");
00676     pc.printf("1:   All\n\r");    
00677     pc.printf("2:   Show all segs\r\n");
00678     pc.printf("3:   Show all chars\n\r");
00679     pc.printf("4:   Show all digits\n\r");
00680     pc.printf("5:   Show all icons\n\r");
00681     pc.printf("6:   Counter\n\r");
00682     pc.printf("7:   Floats\n\r");
00683     pc.printf("8:   Kitt\n\r");
00684     pc.printf("9:   Cls\n\r");
00685     pc.printf("A:   Bye\n\r");
00686     pc.printf("k:   Key\n\r");    
00687 }
00688 
00689 
00690 char cmd, bits;
00691 int main() {
00692     
00693     pc.printf("Hello World\r\n"); //    
00694     
00695     EYEWINK.cls(); 
00696     EYEWINK.writeData(all_str);
00697     wait(2);
00698     EYEWINK.setBrightness(TM1637_BRT3);    
00699     wait(1);
00700     EYEWINK.setBrightness(TM1637_BRT0);        
00701     wait(1);
00702     EYEWINK.setBrightness(TM1637_BRT4);            
00703 
00704     wait(1);
00705     EYEWINK.cls(true); 
00706     EYEWINK.writeData(hello_str); 
00707     
00708     char cmd2 = '0';
00709     while (1) {
00710       
00711       show_menu();
00712       cmd2 = pc.getc();
00713 
00714       switch (cmd2) {
00715         case '1' : {
00716                       pc.printf("all\r\n");
00717                       EYEWINK.cls(); 
00718                       EYEWINK.writeData(all_str);
00719                       break;
00720         }
00721 
00722         case '2' : {
00723 #if(1)
00724 //test to show all segs
00725           pc.printf("Show all segs\r\n");
00726           wait(1);          
00727           EYEWINK.cls(); 
00728          
00729           for (int i=0; i<TM1637_DISPLAY_MEM; i++) {            
00730             for (int bit=0; bit<8; bit++) {
00731               EYEWINK.cls(); 
00732 
00733               bits = 0x01 << bit;              
00734               EYEWINK.writeData(bits, i);
00735 
00736               pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);              
00737 //              wait(0.5);
00738               cmd = pc.getc(); // wait for key
00739             }  
00740           }
00741           pc.printf("\r\nShow all segs done\r\n");                    
00742 #endif 
00743           break;          
00744         }
00745 
00746         case '3' : {
00747 
00748 #if(1)
00749 //test to show all chars
00750           pc.printf("Show all alpha chars\r\n");
00751           wait(1);          
00752           EYEWINK.cls(); 
00753          
00754           for (int i=0; i<26; i++) {
00755             EYEWINK.printf("%c", char(i + 'A'));
00756 //            EYEWINK.printf("%c", char(i + 'a'));            
00757             wait(0.25);                      
00758           }
00759           pc.printf("Show all alpha chars done\r\n");                    
00760 #endif            
00761 
00762 #if(0)
00763 //test to show all chars
00764           pc.printf("Show all chars\r\n");
00765           wait(1);          
00766           EYEWINK.cls(); 
00767 
00768           for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
00769             EYEWINK.printf("%c", char(i));
00770 //            wait(0.25);
00771             cmd = pc.getc(); // wait for key            
00772           }
00773           pc.printf("Show all chars done\r\n");                    
00774 #endif            
00775           break;          
00776         }
00777         case '4': {
00778 #if(0)
00779 //test to show all digits (base is 10)
00780           pc.printf("Show all digits\r\n");
00781           wait(1);          
00782           EYEWINK.cls(); 
00783 
00784           for (int i=0; i<EYEWINK_NR_DIGITS; i++) {
00785 
00786             for (int cnt=0; cnt<10; cnt++) {
00787               EYEWINK.locate(i);
00788               EYEWINK.printf("%0d", cnt);
00789 
00790 //              wait(0.5);
00791               cmd = pc.getc(); // wait for key
00792             }  
00793           }
00794           pc.printf("\r\nShow all digits done\r\n");                    
00795 #endif                
00796 
00797 #if(1)
00798 //test to show all digits (base is 0x10)
00799           pc.printf("Show all hex digits\r\n");
00800           wait(1);          
00801           EYEWINK.cls(); 
00802 
00803           EYEWINK.printf("%06x", 0x01ABCD);
00804           cmd = pc.getc(); // wait for key                                     
00805           EYEWINK.printf("%06x", 0x0);
00806                     
00807           for (int i=0; i<EYEWINK_NR_DIGITS; i++) {
00808 
00809             for (int cnt=0; cnt<0x10; cnt++) {
00810               EYEWINK.locate(i);
00811               EYEWINK.printf("%0x", cnt);
00812 
00813 //              wait(0.5);
00814               cmd = pc.getc(); // wait for key
00815             }  
00816           }
00817           pc.printf("\r\nShow all hex digits done\r\n");          
00818 #endif                
00819           break;          
00820         }
00821         case '5':  { 
00822 #if(1)
00823 //test to show all icons
00824           pc.printf("Show all icons\r\n");
00825           EYEWINK.cls(true); // Also clear all Icons
00826           
00827           float delay=0.1;
00828           // Icons on             
00829           EYEWINK.setIcon(TM1637_EYEWINK::DP1); wait(delay);
00830           EYEWINK.setIcon(TM1637_EYEWINK::DP2); wait(delay);
00831           EYEWINK.setIcon(TM1637_EYEWINK::DP3); wait(delay);
00832           EYEWINK.setIcon(TM1637_EYEWINK::DP4); wait(delay);
00833           EYEWINK.setIcon(TM1637_EYEWINK::DP5); wait(delay);
00834           EYEWINK.setIcon(TM1637_EYEWINK::DP6); wait(delay);                                                  
00835 
00836           wait(delay);
00837  
00838           // Icons off      
00839           EYEWINK.clrIcon(TM1637_EYEWINK::DP6); wait(delay);
00840           EYEWINK.clrIcon(TM1637_EYEWINK::DP5); wait(delay);
00841           EYEWINK.clrIcon(TM1637_EYEWINK::DP4); wait(delay);
00842           EYEWINK.clrIcon(TM1637_EYEWINK::DP3); wait(delay);
00843           EYEWINK.clrIcon(TM1637_EYEWINK::DP2); wait(delay);
00844           EYEWINK.clrIcon(TM1637_EYEWINK::DP1); wait(delay);                                        
00845 
00846 //          wait(1);          
00847 //          EYEWINK.cls(); // clear all, preserve Icons
00848           pc.printf("Show all icons done\r\n");                    
00849 #endif           
00850           break;
00851         }                          
00852 
00853         case '6': {
00854           EYEWINK.cls(); // clear all, preserve Icons
00855 
00856 #if(1)
00857           EYEWINK.locate(0);
00858          
00859           for (int cnt=0; cnt<=0xFF; cnt++) {
00860             EYEWINK.locate(4);
00861             EYEWINK.printf("%02x", cnt);           
00862             wait(0.2);
00863           }  
00864 #endif
00865 
00866 //          EYEWINK.writeData(hello_str);
00867 //          EYEWINK.printf("hello");                  
00868 
00869           break;          
00870         }
00871         case '7': {
00872           EYEWINK.cls(); // clear all, preserve Icons
00873           EYEWINK.printf("%1.4f", -0.1234);  // test decimal point display
00874           wait(0.5);
00875           EYEWINK.cls(); // clear all, preserve Icons          
00876           EYEWINK.printf("%3.3f", 123.456);  // test decimal point display
00877           break;          
00878         }
00879 
00880         case '8': {
00881 
00882 #if(1)
00883 //test to show KITT
00884           pc.printf("Show KITT scanner\r\n");
00885 
00886           
00887 //                          012345
00888 const char KITT[][7]   = {{"8     "},
00889                           {"38    "},
00890                           {" 38   "},
00891                           {"  38  "},
00892                           {"   38 "},
00893                           {"    38"},
00894                           {"     3"},
00895                           {"      "},
00896                           {"     8"},
00897                           {"    8E"},
00898                           {"   8E "},
00899                           {"  8E  "},
00900                           {" 8E   "},
00901                           {"8E    "},
00902                           {"E     "},
00903                           {"      "}
00904                         };     
00905          
00906           EYEWINK.cls(); // clear all, preserve Icons
00907           
00908           while (!pc.readable()) { // wait for key            
00909             for (int i=0; i < (sizeof(KITT) / 7) ; i++) {
00910               EYEWINK.locate(0);
00911               EYEWINK.printf("%s", KITT[i]);
00912               wait(0.1);
00913             }
00914           }
00915           cmd = pc.getc(); // read key           
00916           pc.printf("Show KITT done\r\n");
00917 #endif
00918           break;
00919         }  
00920 
00921 
00922         case '9': {
00923           EYEWINK.cls(true); // clear all, including Icons      
00924           break;
00925         }  
00926 
00927         case 'A': {
00928 
00929           EYEWINK.cls(); // clear all, preserve Icons
00930 //          EYEWINK.writeData(bye_str);
00931           EYEWINK.printf("Bye");          
00932        
00933           break;
00934         } 
00935 
00936         case 'k': {
00937           if (EYEWINK.getKeys(&keydata)) {
00938             pc.printf("Keydata = 0x%02X\r\n", keydata);
00939           } 
00940           break;
00941         }       
00942 
00943         default : {
00944           break;
00945         }         
00946      
00947       } //switch cmd
00948 
00949 #if(1)
00950       // Check and read keydata
00951       if (EYEWINK.getKeys(&keydata)) {
00952         pc.printf("Keydata = 0x%02X\r\n", keydata);
00953 
00954         if (keydata == TM1637_SW1_BIT) { //sw1 0xEF 
00955           EYEWINK.cls(); 
00956           EYEWINK.printf("----01");
00957         }  
00958 
00959         if (keydata == TM1637_SW2_BIT) { //sw2  0x6F
00960           EYEWINK.cls(); 
00961           EYEWINK.printf("----02");          
00962         }  
00963 
00964         if (keydata == TM1637_SW3_BIT) { //sw3 0xAF 
00965           EYEWINK.cls(); 
00966           EYEWINK.printf("----03");
00967         }  
00968 
00969         if (keydata == TM1637_SW4_BIT) { //sw4 0x2F
00970           EYEWINK.cls(); 
00971           EYEWINK.printf("----04");          
00972         }  
00973 
00974         if (keydata == TM1637_SW5_BIT) { //sw5 0xCF 
00975           EYEWINK.cls(); 
00976           EYEWINK.printf("----05");
00977         }  
00978 
00979         if (keydata == TM1637_SW6_BIT) { //sw6 0x4F
00980           EYEWINK.cls(); 
00981           EYEWINK.printf("----06");          
00982         }  
00983 
00984       } // Check keydata
00985 #endif
00986 
00987 
00988       myled = !myled;
00989       wait(0.3);      
00990     } //while
00991 }
00992 #endif
00993 
00994 
00995 
00996 #if (TM1637_TEST == 1)
00997 // Direct TM1637 Test
00998 
00999 Serial pc(USBTX, USBRX);
01000 DigitalOut myled(LED1);
01001 
01002 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments) 
01003 TM1637::DisplayData_t all_str   = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};  
01004 TM1637::DisplayData_t cls_str   = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  
01005 
01006 // KeyData_t size is 1 bytes  
01007 TM1637::KeyData_t keydata; 
01008 
01009 // TM1637 declaration
01010 //Old Constructor
01011 //TM1637 TM1637(p5,p6,p7);  //LPC1768
01012 //New Constructor
01013 TM1637 TM1637(p6,p7);     //LPC1768
01014 
01015 void show_menu() {
01016 //    pc.printf("0:   Exit\n\r");
01017     pc.printf("1:   All\n\r");    
01018     pc.printf("2:   Cls\n\r");        
01019     pc.printf("3:   Show all segs\r\n");
01020 }
01021 
01022 
01023 char cmd, bits;
01024 int main() {
01025     
01026     pc.printf("Hello World\r\n"); //    
01027     
01028     TM1637.cls(); 
01029     TM1637.writeData(all_str);
01030     wait(2);
01031     TM1637.setBrightness(TM1637_BRT3);    
01032     wait(1);
01033     TM1637.setBrightness(TM1637_BRT0);        
01034     wait(1);
01035     TM1637.setBrightness(TM1637_BRT4);            
01036     
01037     while (1) {
01038      
01039       cmd = pc.getc();
01040 
01041       switch (cmd) {
01042         case '1' : 
01043           TM1637.cls(); 
01044           TM1637.writeData(all_str);
01045          break;    
01046                
01047         case '2' :       
01048           TM1637.cls(); 
01049           TM1637.writeData(cls_str);
01050          break;    
01051                
01052         case '3' :
01053 
01054 #if(1)
01055 //test to show all segs
01056           pc.printf("Show all segs\r\n");
01057           wait(1);          
01058           TM1637.cls(); 
01059          
01060           for (int i=0; i<TM1637_DISPLAY_MEM; i++) {            
01061             for (int bit=0; bit<8; bit++) {
01062               TM1637.cls(); 
01063 
01064               bits = 0x01 << bit;              
01065               TM1637.writeData(bits, i);
01066 
01067               pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);              
01068 //              wait(0.5);
01069               cmd = pc.getc(); // wait for key
01070             }  
01071           }
01072           pc.printf("Show all segs done\r\n");                    
01073 #endif 
01074          break;    
01075                        
01076         default : 
01077           break;          
01078      
01079       } //switch cmd
01080 
01081       // Check and read keydata
01082       if (TM1637.getKeys(&keydata)) {
01083         pc.printf("Keydata = 0x%02x\r\n", keydata);
01084  
01085         if (keydata == TM1637_SW9_BIT) { //sw9  
01086           TM1637.cls(); 
01087           TM1637.writeData(0xFF, 1);
01088           TM1637.writeData(0xFF, 2);          
01089         }  
01090       } // Check keydata
01091 
01092       myled = !myled;
01093       wait(0.3);      
01094     } //while
01095 }
01096 #endif