Use TM1637 with 4 digits 7 segment LED

Dependencies:   mbed TM1637

Committer:
Sigma884
Date:
Mon Mar 21 06:01:22 2022 +0000
Revision:
0:366d0d27531b
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sigma884 0:366d0d27531b 1 #include "mbed.h"
Sigma884 0:366d0d27531b 2 #include "TM1637.h"
Sigma884 0:366d0d27531b 3
Sigma884 0:366d0d27531b 4 #include "Font_7Seg.h"
Sigma884 0:366d0d27531b 5
Sigma884 0:366d0d27531b 6 Serial pc(USBTX, USBRX);
Sigma884 0:366d0d27531b 7 DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
Sigma884 0:366d0d27531b 8
Sigma884 0:366d0d27531b 9 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments)
Sigma884 0:366d0d27531b 10 TM1637::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
Sigma884 0:366d0d27531b 11 TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
Sigma884 0:366d0d27531b 12 TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00, 0x00, 0x00};
Sigma884 0:366d0d27531b 13 //TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00};
Sigma884 0:366d0d27531b 14 //TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00};
Sigma884 0:366d0d27531b 15
Sigma884 0:366d0d27531b 16 TM1637::KeyData_t keydata;
Sigma884 0:366d0d27531b 17
Sigma884 0:366d0d27531b 18 //TM1637 TM1637(D4, D5); //F303K8
Sigma884 0:366d0d27531b 19 TM1637_EYEWINK TM1637(D4, D5); //F303K8
Sigma884 0:366d0d27531b 20
Sigma884 0:366d0d27531b 21
Sigma884 0:366d0d27531b 22 void show_menu() {
Sigma884 0:366d0d27531b 23 //pc.printf("0: Exit\n\r");
Sigma884 0:366d0d27531b 24 pc.printf("1: All\n\r");
Sigma884 0:366d0d27531b 25 pc.printf("2: Cls\n\r");
Sigma884 0:366d0d27531b 26 pc.printf("3: Show all segs\r\n");
Sigma884 0:366d0d27531b 27 pc.printf("s: Timer 20s\r\n");
Sigma884 0:366d0d27531b 28 }
Sigma884 0:366d0d27531b 29
Sigma884 0:366d0d27531b 30
Sigma884 0:366d0d27531b 31 char cmd, bits;
Sigma884 0:366d0d27531b 32 int main() {
Sigma884 0:366d0d27531b 33
Sigma884 0:366d0d27531b 34 pc.printf("Hello World\r\n");
Sigma884 0:366d0d27531b 35
Sigma884 0:366d0d27531b 36 TM1637.cls();
Sigma884 0:366d0d27531b 37 TM1637.setBrightness(TM1637_BRT3);
Sigma884 0:366d0d27531b 38 TM1637.writeData(all_str);
Sigma884 0:366d0d27531b 39 wait(0.5);
Sigma884 0:366d0d27531b 40 TM1637.setBrightness(TM1637_BRT0);
Sigma884 0:366d0d27531b 41 wait(0.5);
Sigma884 0:366d0d27531b 42 TM1637.setBrightness(TM1637_BRT3);
Sigma884 0:366d0d27531b 43
Sigma884 0:366d0d27531b 44 show_menu();
Sigma884 0:366d0d27531b 45
Sigma884 0:366d0d27531b 46 Timer timer;
Sigma884 0:366d0d27531b 47
Sigma884 0:366d0d27531b 48 while (1) {
Sigma884 0:366d0d27531b 49 cmd = pc.getc();
Sigma884 0:366d0d27531b 50
Sigma884 0:366d0d27531b 51 switch (cmd) {
Sigma884 0:366d0d27531b 52 case '1':
Sigma884 0:366d0d27531b 53 TM1637.cls();
Sigma884 0:366d0d27531b 54 TM1637.writeData(all_str);
Sigma884 0:366d0d27531b 55 break;
Sigma884 0:366d0d27531b 56
Sigma884 0:366d0d27531b 57 case '2':
Sigma884 0:366d0d27531b 58 TM1637.cls();
Sigma884 0:366d0d27531b 59 TM1637.writeData(cls_str);
Sigma884 0:366d0d27531b 60 break;
Sigma884 0:366d0d27531b 61
Sigma884 0:366d0d27531b 62 case '3':
Sigma884 0:366d0d27531b 63 //test to show all segs
Sigma884 0:366d0d27531b 64 pc.printf("Show all segs\r\n");
Sigma884 0:366d0d27531b 65 wait(1);
Sigma884 0:366d0d27531b 66 TM1637.cls();
Sigma884 0:366d0d27531b 67
Sigma884 0:366d0d27531b 68 //for (int i=0; i<TM1637_DISPLAY_MEM; i++) {
Sigma884 0:366d0d27531b 69 for (int i=0; i<4; i++) {
Sigma884 0:366d0d27531b 70 for (int bit=0; bit<8; bit++) {
Sigma884 0:366d0d27531b 71 TM1637.cls();
Sigma884 0:366d0d27531b 72
Sigma884 0:366d0d27531b 73 bits = 0x01 << bit;
Sigma884 0:366d0d27531b 74 TM1637.writeData(bits, i);
Sigma884 0:366d0d27531b 75
Sigma884 0:366d0d27531b 76 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
Sigma884 0:366d0d27531b 77 cmd = pc.getc(); // wait for key
Sigma884 0:366d0d27531b 78 }
Sigma884 0:366d0d27531b 79 }
Sigma884 0:366d0d27531b 80 pc.printf("Show all segs done\r\n");
Sigma884 0:366d0d27531b 81 break;
Sigma884 0:366d0d27531b 82
Sigma884 0:366d0d27531b 83 /*
Sigma884 0:366d0d27531b 84 case '4':
Sigma884 0:366d0d27531b 85 TM1637.cls();
Sigma884 0:366d0d27531b 86 TM1637.printf("1");
Sigma884 0:366d0d27531b 87 break;
Sigma884 0:366d0d27531b 88
Sigma884 0:366d0d27531b 89 case '5':
Sigma884 0:366d0d27531b 90 TM1637.cls();
Sigma884 0:366d0d27531b 91 TM1637.printf(" 1");
Sigma884 0:366d0d27531b 92 break;
Sigma884 0:366d0d27531b 93
Sigma884 0:366d0d27531b 94 case '6':
Sigma884 0:366d0d27531b 95 TM1637.cls();
Sigma884 0:366d0d27531b 96 float data = 3.26;
Sigma884 0:366d0d27531b 97 TM1637.printf(" %2.2f", data);
Sigma884 0:366d0d27531b 98 break;
Sigma884 0:366d0d27531b 99 */
Sigma884 0:366d0d27531b 100
Sigma884 0:366d0d27531b 101 case 's':
Sigma884 0:366d0d27531b 102 timer.reset();
Sigma884 0:366d0d27531b 103 timer.start();
Sigma884 0:366d0d27531b 104 while(timer.read() < 20.0f){
Sigma884 0:366d0d27531b 105 float time = timer.read();
Sigma884 0:366d0d27531b 106 TM1637.cls();
Sigma884 0:366d0d27531b 107 if (time < 10.0f){
Sigma884 0:366d0d27531b 108 TM1637.printf(" %.2f", time);
Sigma884 0:366d0d27531b 109 }
Sigma884 0:366d0d27531b 110 else{
Sigma884 0:366d0d27531b 111 TM1637.printf("%.2f", time);
Sigma884 0:366d0d27531b 112 }
Sigma884 0:366d0d27531b 113 }
Sigma884 0:366d0d27531b 114 timer.stop();
Sigma884 0:366d0d27531b 115 wait(1.0f);
Sigma884 0:366d0d27531b 116 TM1637.cls();
Sigma884 0:366d0d27531b 117 break;
Sigma884 0:366d0d27531b 118
Sigma884 0:366d0d27531b 119 default:
Sigma884 0:366d0d27531b 120 break;
Sigma884 0:366d0d27531b 121 } //switch cmd
Sigma884 0:366d0d27531b 122
Sigma884 0:366d0d27531b 123 myled = !myled;
Sigma884 0:366d0d27531b 124 wait(0.2);
Sigma884 0:366d0d27531b 125 } //while
Sigma884 0:366d0d27531b 126 }
Sigma884 0:366d0d27531b 127
Sigma884 0:366d0d27531b 128