Use TM1637 with 4 digits 7 segment LED

Dependencies:   mbed TM1637

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TM1637.h"
00003 
00004 #include "Font_7Seg.h"
00005 
00006 Serial pc(USBTX, USBRX);
00007 DigitalOut myled(LED1);  //NOTE: On F401 LED1 is Pin D13, which is SCK!
00008 
00009 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments) 
00010 TM1637::DisplayData_t all_str   = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};  
00011 TM1637::DisplayData_t cls_str   = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  
00012 TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00, 0x00, 0x00};
00013 //TM1637::DisplayData_t cls_str   = {0x00, 0x00, 0x00, 0x00};  
00014 //TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00};
00015 
00016 TM1637::KeyData_t keydata;
00017 
00018 //TM1637 TM1637(D4, D5);     //F303K8
00019 TM1637_EYEWINK TM1637(D4, D5);     //F303K8
00020 
00021 
00022 void show_menu() {
00023     //pc.printf("0:   Exit\n\r");
00024     pc.printf("1:   All\n\r");
00025     pc.printf("2:   Cls\n\r");
00026     pc.printf("3:   Show all segs\r\n");
00027     pc.printf("s:   Timer 20s\r\n");
00028 }
00029 
00030 
00031 char cmd, bits;
00032 int main() {
00033     
00034     pc.printf("Hello World\r\n");
00035     
00036     TM1637.cls();
00037     TM1637.setBrightness(TM1637_BRT3);
00038     TM1637.writeData(all_str);
00039     wait(0.5);
00040     TM1637.setBrightness(TM1637_BRT0);
00041     wait(0.5);
00042     TM1637.setBrightness(TM1637_BRT3);
00043     
00044     show_menu();
00045     
00046     Timer timer;
00047     
00048     while (1) {
00049         cmd = pc.getc();
00050 
00051         switch (cmd) {
00052         case '1':
00053             TM1637.cls();
00054             TM1637.writeData(all_str);
00055          break;
00056                
00057         case '2':
00058             TM1637.cls();
00059             TM1637.writeData(cls_str);
00060          break;
00061                
00062         case '3':
00063             //test to show all segs
00064             pc.printf("Show all segs\r\n");
00065             wait(1);
00066             TM1637.cls();
00067          
00068             //for (int i=0; i<TM1637_DISPLAY_MEM; i++) {
00069             for (int i=0; i<4; i++) {
00070                 for (int bit=0; bit<8; bit++) {
00071                     TM1637.cls();
00072                     
00073                     bits = 0x01 << bit;
00074                     TM1637.writeData(bits, i);
00075                     
00076                     pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
00077                     cmd = pc.getc(); // wait for key
00078                 }
00079             }
00080             pc.printf("Show all segs done\r\n");
00081             break;
00082             
00083         /*
00084         case '4':
00085             TM1637.cls();
00086             TM1637.printf("1");
00087             break;
00088             
00089         case '5':
00090             TM1637.cls();
00091             TM1637.printf("   1");
00092             break;
00093             
00094         case '6':
00095             TM1637.cls();
00096             float data = 3.26;
00097             TM1637.printf(" %2.2f", data);
00098             break;
00099         */
00100         
00101         case 's':
00102             timer.reset();
00103             timer.start();
00104             while(timer.read() < 20.0f){
00105                 float time = timer.read();
00106                 TM1637.cls();
00107                 if (time < 10.0f){
00108                     TM1637.printf(" %.2f", time);
00109                 }
00110                 else{
00111                     TM1637.printf("%.2f", time);
00112                 }
00113             }
00114             timer.stop();
00115             wait(1.0f);
00116             TM1637.cls();
00117             break;
00118             
00119         default:
00120             break;
00121     } //switch cmd
00122 
00123     myled = !myled;
00124     wait(0.2);      
00125     } //while
00126 }
00127 
00128