Use TM1637 with 4 digits 7 segment LED
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Wed Jul 13 2022 10:40:27 by
1.7.2