Use TM1637 with 4 digits 7 segment LED
Diff: main.cpp
- Revision:
- 0:366d0d27531b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Mar 21 06:01:22 2022 +0000
@@ -0,0 +1,128 @@
+#include "mbed.h"
+#include "TM1637.h"
+
+#include "Font_7Seg.h"
+
+Serial pc(USBTX, USBRX);
+DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
+
+// DisplayData_t size is 6 bytes (6 Grids @ 8 Segments)
+TM1637::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
+TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00, 0x00, 0x00};
+//TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00};
+//TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00};
+
+TM1637::KeyData_t keydata;
+
+//TM1637 TM1637(D4, D5); //F303K8
+TM1637_EYEWINK TM1637(D4, D5); //F303K8
+
+
+void show_menu() {
+ //pc.printf("0: Exit\n\r");
+ pc.printf("1: All\n\r");
+ pc.printf("2: Cls\n\r");
+ pc.printf("3: Show all segs\r\n");
+ pc.printf("s: Timer 20s\r\n");
+}
+
+
+char cmd, bits;
+int main() {
+
+ pc.printf("Hello World\r\n");
+
+ TM1637.cls();
+ TM1637.setBrightness(TM1637_BRT3);
+ TM1637.writeData(all_str);
+ wait(0.5);
+ TM1637.setBrightness(TM1637_BRT0);
+ wait(0.5);
+ TM1637.setBrightness(TM1637_BRT3);
+
+ show_menu();
+
+ Timer timer;
+
+ while (1) {
+ cmd = pc.getc();
+
+ switch (cmd) {
+ case '1':
+ TM1637.cls();
+ TM1637.writeData(all_str);
+ break;
+
+ case '2':
+ TM1637.cls();
+ TM1637.writeData(cls_str);
+ break;
+
+ case '3':
+ //test to show all segs
+ pc.printf("Show all segs\r\n");
+ wait(1);
+ TM1637.cls();
+
+ //for (int i=0; i<TM1637_DISPLAY_MEM; i++) {
+ for (int i=0; i<4; i++) {
+ for (int bit=0; bit<8; bit++) {
+ TM1637.cls();
+
+ bits = 0x01 << bit;
+ TM1637.writeData(bits, i);
+
+ pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
+ cmd = pc.getc(); // wait for key
+ }
+ }
+ pc.printf("Show all segs done\r\n");
+ break;
+
+ /*
+ case '4':
+ TM1637.cls();
+ TM1637.printf("1");
+ break;
+
+ case '5':
+ TM1637.cls();
+ TM1637.printf(" 1");
+ break;
+
+ case '6':
+ TM1637.cls();
+ float data = 3.26;
+ TM1637.printf(" %2.2f", data);
+ break;
+ */
+
+ case 's':
+ timer.reset();
+ timer.start();
+ while(timer.read() < 20.0f){
+ float time = timer.read();
+ TM1637.cls();
+ if (time < 10.0f){
+ TM1637.printf(" %.2f", time);
+ }
+ else{
+ TM1637.printf("%.2f", time);
+ }
+ }
+ timer.stop();
+ wait(1.0f);
+ TM1637.cls();
+ break;
+
+ default:
+ break;
+ } //switch cmd
+
+ myled = !myled;
+ wait(0.2);
+ } //while
+}
+
+