Test program for TM1638 LED controller. Supports LED&KEY, QYF-TM1638 and JY-LKM1638 module.
See here for more information.
main.cpp@3:f1484bfa0574, 2016-01-19 (annotated)
- Committer:
- wim
- Date:
- Tue Jan 19 18:58:35 2016 +0000
- Revision:
- 3:f1484bfa0574
- Parent:
- 2:d6720abfe574
- Child:
- 4:0e1ffa381c62
Animation demo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wim | 1:12dadbc0017d | 1 | /* mbed TM1638 Test program, for TM1638 LED controller |
wim | 0:e7bc81df3e38 | 2 | * Copyright (c) 2015, v01: WH, Initial version |
wim | 2:d6720abfe574 | 3 | * 2016, v02: WH, Added ASCII alphabet test |
wim | 0:e7bc81df3e38 | 4 | * |
wim | 0:e7bc81df3e38 | 5 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
wim | 0:e7bc81df3e38 | 6 | * of this software and associated documentation files (the "Software"), to deal |
wim | 0:e7bc81df3e38 | 7 | * in the Software without restriction, including without limitation the rights |
wim | 0:e7bc81df3e38 | 8 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
wim | 0:e7bc81df3e38 | 9 | * copies of the Software, and to permit persons to whom the Software is |
wim | 0:e7bc81df3e38 | 10 | * furnished to do so, subject to the following conditions: |
wim | 0:e7bc81df3e38 | 11 | * |
wim | 0:e7bc81df3e38 | 12 | * The above copyright notice and this permission notice shall be included in |
wim | 0:e7bc81df3e38 | 13 | * all copies or substantial portions of the Software. |
wim | 0:e7bc81df3e38 | 14 | * |
wim | 0:e7bc81df3e38 | 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
wim | 0:e7bc81df3e38 | 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
wim | 0:e7bc81df3e38 | 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
wim | 0:e7bc81df3e38 | 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
wim | 0:e7bc81df3e38 | 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
wim | 0:e7bc81df3e38 | 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
wim | 0:e7bc81df3e38 | 21 | * THE SOFTWARE. |
wim | 0:e7bc81df3e38 | 22 | */ |
wim | 0:e7bc81df3e38 | 23 | #include "mbed.h" |
wim | 0:e7bc81df3e38 | 24 | #include "TM1638.h" |
wim | 0:e7bc81df3e38 | 25 | |
wim | 0:e7bc81df3e38 | 26 | #if (LEDKEY8_TEST == 1) |
wim | 0:e7bc81df3e38 | 27 | // LEDKEY8 TM1638 Test |
wim | 0:e7bc81df3e38 | 28 | #include "Font_7Seg.h" |
wim | 0:e7bc81df3e38 | 29 | |
wim | 0:e7bc81df3e38 | 30 | Serial pc(USBTX, USBRX); |
wim | 0:e7bc81df3e38 | 31 | DigitalOut myled(LED1); |
wim | 0:e7bc81df3e38 | 32 | |
wim | 0:e7bc81df3e38 | 33 | // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments) |
wim | 0:e7bc81df3e38 | 34 | TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03}; |
wim | 0:e7bc81df3e38 | 35 | TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; |
wim | 0:e7bc81df3e38 | 36 | TM1638::DisplayData_t hello_str = {C7_H,0x00, C7_E,0x00, C7_L,0x00, C7_L,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; |
wim | 1:12dadbc0017d | 37 | TM1638::DisplayData_t bye_str = {C7_B,0x00, C7_Y,0x00, C7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; |
wim | 0:e7bc81df3e38 | 38 | |
wim | 3:f1484bfa0574 | 39 | TM1638::DisplayData_t animate[] = { |
wim | 3:f1484bfa0574 | 40 | {S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 41 | {0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 42 | {0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 43 | {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 44 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 45 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 46 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 47 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00}, |
wim | 3:f1484bfa0574 | 48 | |
wim | 3:f1484bfa0574 | 49 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_B,0x00}, |
wim | 3:f1484bfa0574 | 50 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_C,0x00}, |
wim | 3:f1484bfa0574 | 51 | |
wim | 3:f1484bfa0574 | 52 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00}, |
wim | 3:f1484bfa0574 | 53 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 54 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 55 | {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 56 | {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 57 | {0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 58 | {0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 59 | {S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 60 | |
wim | 3:f1484bfa0574 | 61 | {S7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 62 | {S7_F,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, |
wim | 3:f1484bfa0574 | 63 | }; |
wim | 0:e7bc81df3e38 | 64 | // KeyData_t size is 3 bytes |
wim | 0:e7bc81df3e38 | 65 | TM1638::KeyData_t keydata; |
wim | 0:e7bc81df3e38 | 66 | |
wim | 0:e7bc81df3e38 | 67 | // Switchdata is 1 byte |
wim | 0:e7bc81df3e38 | 68 | char switchdata; |
wim | 0:e7bc81df3e38 | 69 | |
wim | 0:e7bc81df3e38 | 70 | //TM1638_LEDKEY8 declaration |
wim | 0:e7bc81df3e38 | 71 | TM1638_LEDKEY8 LEDKEY8(p5,p6,p7, p8); |
wim | 0:e7bc81df3e38 | 72 | |
wim | 0:e7bc81df3e38 | 73 | char cmd, bits; |
wim | 0:e7bc81df3e38 | 74 | int main() { |
wim | 0:e7bc81df3e38 | 75 | |
wim | 0:e7bc81df3e38 | 76 | pc.printf("Hello World\r\n"); // |
wim | 0:e7bc81df3e38 | 77 | |
wim | 0:e7bc81df3e38 | 78 | LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 79 | LEDKEY8.writeData(all_str); |
wim | 0:e7bc81df3e38 | 80 | wait(2); |
wim | 0:e7bc81df3e38 | 81 | LEDKEY8.setBrightness(TM1638_BRT3); |
wim | 0:e7bc81df3e38 | 82 | wait(1); |
wim | 0:e7bc81df3e38 | 83 | LEDKEY8.setBrightness(TM1638_BRT0); |
wim | 0:e7bc81df3e38 | 84 | wait(1); |
wim | 0:e7bc81df3e38 | 85 | LEDKEY8.setBrightness(TM1638_BRT4); |
wim | 0:e7bc81df3e38 | 86 | |
wim | 0:e7bc81df3e38 | 87 | wait(1); |
wim | 0:e7bc81df3e38 | 88 | LEDKEY8.cls(true); |
wim | 0:e7bc81df3e38 | 89 | LEDKEY8.writeData(hello_str); |
wim | 0:e7bc81df3e38 | 90 | |
wim | 0:e7bc81df3e38 | 91 | while (1) { |
wim | 0:e7bc81df3e38 | 92 | |
wim | 0:e7bc81df3e38 | 93 | // Check and read keydata |
wim | 0:e7bc81df3e38 | 94 | if (LEDKEY8.getKeys(&keydata)) { |
wim | 0:e7bc81df3e38 | 95 | pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]); |
wim | 0:e7bc81df3e38 | 96 | |
wim | 1:12dadbc0017d | 97 | if (keydata[LEDKEY8_SW1_IDX] == LEDKEY8_SW1_BIT) { //sw1 |
wim | 0:e7bc81df3e38 | 98 | LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 99 | LEDKEY8.writeData(all_str); |
wim | 3:f1484bfa0574 | 100 | |
wim | 3:f1484bfa0574 | 101 | wait(0.5); |
wim | 3:f1484bfa0574 | 102 | for (int i=0; i<20; i++) { |
wim | 3:f1484bfa0574 | 103 | LEDKEY8.writeData(animate[i]); |
wim | 3:f1484bfa0574 | 104 | wait(0.05); |
wim | 3:f1484bfa0574 | 105 | } |
wim | 0:e7bc81df3e38 | 106 | } |
wim | 0:e7bc81df3e38 | 107 | |
wim | 1:12dadbc0017d | 108 | if (keydata[LEDKEY8_SW2_IDX] == LEDKEY8_SW2_BIT) { //sw2 |
wim | 0:e7bc81df3e38 | 109 | LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 110 | // LEDKEY8.writeData(hello_str); |
wim | 0:e7bc81df3e38 | 111 | #if(1) |
wim | 0:e7bc81df3e38 | 112 | //test to show all segs |
wim | 0:e7bc81df3e38 | 113 | pc.printf("Show all segs\r\n"); |
wim | 0:e7bc81df3e38 | 114 | wait(1); |
wim | 0:e7bc81df3e38 | 115 | LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 116 | |
wim | 0:e7bc81df3e38 | 117 | for (int i=0; i<TM1638_DISPLAY_MEM; i++) { |
wim | 0:e7bc81df3e38 | 118 | for (int bit=0; bit<8; bit++) { |
wim | 0:e7bc81df3e38 | 119 | LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 120 | |
wim | 0:e7bc81df3e38 | 121 | bits = 0x01 << bit; |
wim | 0:e7bc81df3e38 | 122 | LEDKEY8.writeData(i, bits); |
wim | 0:e7bc81df3e38 | 123 | |
wim | 0:e7bc81df3e38 | 124 | pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); |
wim | 0:e7bc81df3e38 | 125 | // wait(0.5); |
wim | 0:e7bc81df3e38 | 126 | cmd = pc.getc(); // wait for key |
wim | 0:e7bc81df3e38 | 127 | } |
wim | 0:e7bc81df3e38 | 128 | } |
wim | 1:12dadbc0017d | 129 | pc.printf("\r\nShow all segs done\r\n"); |
wim | 0:e7bc81df3e38 | 130 | #endif |
wim | 0:e7bc81df3e38 | 131 | |
wim | 0:e7bc81df3e38 | 132 | } |
wim | 0:e7bc81df3e38 | 133 | |
wim | 1:12dadbc0017d | 134 | if (keydata[LEDKEY8_SW3_IDX] == LEDKEY8_SW3_BIT) { //sw3 |
wim | 0:e7bc81df3e38 | 135 | // LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 136 | // LEDKEY8.writeData(mbed_str); |
wim | 0:e7bc81df3e38 | 137 | |
wim | 3:f1484bfa0574 | 138 | |
wim | 2:d6720abfe574 | 139 | #if(1) |
wim | 2:d6720abfe574 | 140 | //test to show all chars |
wim | 3:f1484bfa0574 | 141 | pc.printf("Show all Alpha chars\r\n"); |
wim | 3:f1484bfa0574 | 142 | |
wim | 3:f1484bfa0574 | 143 | // 01234567 |
wim | 3:f1484bfa0574 | 144 | const char NATO[][9] = { {"Alpha "}, |
wim | 3:f1484bfa0574 | 145 | {"Bravo "}, |
wim | 3:f1484bfa0574 | 146 | {"Charlie "}, |
wim | 3:f1484bfa0574 | 147 | {"Delta "}, |
wim | 3:f1484bfa0574 | 148 | {"Echo "}, |
wim | 3:f1484bfa0574 | 149 | {"Foxtrot "}, |
wim | 3:f1484bfa0574 | 150 | {"Golf "}, |
wim | 3:f1484bfa0574 | 151 | {"Hotel "}, |
wim | 3:f1484bfa0574 | 152 | {"India "}, |
wim | 3:f1484bfa0574 | 153 | {"Juliet "}, |
wim | 3:f1484bfa0574 | 154 | {"Kilo "}, |
wim | 3:f1484bfa0574 | 155 | {"Lima "}, |
wim | 3:f1484bfa0574 | 156 | {"Mike "}, |
wim | 3:f1484bfa0574 | 157 | {"November"}, |
wim | 3:f1484bfa0574 | 158 | {"Oscar "}, |
wim | 3:f1484bfa0574 | 159 | {"Papa "}, |
wim | 3:f1484bfa0574 | 160 | {"Quebec "}, |
wim | 3:f1484bfa0574 | 161 | {"Romeo "}, |
wim | 3:f1484bfa0574 | 162 | {"Sierra "}, |
wim | 3:f1484bfa0574 | 163 | {"Tango "}, |
wim | 3:f1484bfa0574 | 164 | {"Uniform "}, |
wim | 3:f1484bfa0574 | 165 | {"Victor "}, |
wim | 3:f1484bfa0574 | 166 | {"Wiskey "}, |
wim | 3:f1484bfa0574 | 167 | {"X-ray "}, |
wim | 3:f1484bfa0574 | 168 | {"Yankee "}, |
wim | 3:f1484bfa0574 | 169 | {"Zulu "} |
wim | 3:f1484bfa0574 | 170 | }; |
wim | 3:f1484bfa0574 | 171 | |
wim | 3:f1484bfa0574 | 172 | LEDKEY8.cls(); // clear all, preserve Icons |
wim | 3:f1484bfa0574 | 173 | for (int i=0; i<26; i++) { |
wim | 3:f1484bfa0574 | 174 | LEDKEY8.locate(0); |
wim | 3:f1484bfa0574 | 175 | LEDKEY8.printf("%s", NATO[i]); |
wim | 3:f1484bfa0574 | 176 | wait(0.5); |
wim | 3:f1484bfa0574 | 177 | } |
wim | 3:f1484bfa0574 | 178 | pc.printf("Show all alpha chars done\r\n"); |
wim | 3:f1484bfa0574 | 179 | #endif |
wim | 3:f1484bfa0574 | 180 | |
wim | 3:f1484bfa0574 | 181 | #if(0) |
wim | 3:f1484bfa0574 | 182 | //test to show all chars |
wim | 2:d6720abfe574 | 183 | pc.printf("Show all alpha chars\r\n"); |
wim | 2:d6720abfe574 | 184 | wait(1); |
wim | 2:d6720abfe574 | 185 | LEDKEY8.cls(); |
wim | 2:d6720abfe574 | 186 | |
wim | 2:d6720abfe574 | 187 | for (int i=0; i<26; i++) { |
wim | 2:d6720abfe574 | 188 | LEDKEY8.printf("%c", char(i + 'A')); |
wim | 2:d6720abfe574 | 189 | // LEDKEY8.printf("%c", char(i + 'a')); |
wim | 2:d6720abfe574 | 190 | wait(0.25); |
wim | 2:d6720abfe574 | 191 | } |
wim | 2:d6720abfe574 | 192 | pc.printf("Show all alpha chars done\r\n"); |
wim | 2:d6720abfe574 | 193 | #endif |
wim | 2:d6720abfe574 | 194 | |
wim | 3:f1484bfa0574 | 195 | #if(0) |
wim | 0:e7bc81df3e38 | 196 | //test to show all chars |
wim | 0:e7bc81df3e38 | 197 | pc.printf("Show all chars\r\n"); |
wim | 0:e7bc81df3e38 | 198 | wait(1); |
wim | 0:e7bc81df3e38 | 199 | LEDKEY8.cls(); |
wim | 2:d6720abfe574 | 200 | |
wim | 2:d6720abfe574 | 201 | for (int i=FONT_7S_START; i<FONT_7S_END; i++) { |
wim | 2:d6720abfe574 | 202 | LEDKEY8.printf("%c", char(i)); |
wim | 2:d6720abfe574 | 203 | // wait(0.25); |
wim | 2:d6720abfe574 | 204 | cmd = pc.getc(); // wait for key |
wim | 0:e7bc81df3e38 | 205 | } |
wim | 0:e7bc81df3e38 | 206 | pc.printf("Show all chars done\r\n"); |
wim | 0:e7bc81df3e38 | 207 | #endif |
wim | 0:e7bc81df3e38 | 208 | |
wim | 0:e7bc81df3e38 | 209 | |
wim | 0:e7bc81df3e38 | 210 | #if(0) |
wim | 0:e7bc81df3e38 | 211 | //test to show all digits (base is 10) |
wim | 0:e7bc81df3e38 | 212 | pc.printf("Show all digits\r\n"); |
wim | 0:e7bc81df3e38 | 213 | wait(1); |
wim | 0:e7bc81df3e38 | 214 | LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 215 | |
wim | 0:e7bc81df3e38 | 216 | int val = 1; |
wim | 0:e7bc81df3e38 | 217 | for (int i=0; i<LEDKEY8_NR_DIGITS; i++) { |
wim | 0:e7bc81df3e38 | 218 | |
wim | 0:e7bc81df3e38 | 219 | for (int cnt=0; cnt<10; cnt++) { |
wim | 0:e7bc81df3e38 | 220 | LEDKEY8.locate(0); |
wim | 0:e7bc81df3e38 | 221 | LEDKEY8.printf("%07d", (val * cnt)); |
wim | 0:e7bc81df3e38 | 222 | |
wim | 0:e7bc81df3e38 | 223 | // wait(0.5); |
wim | 0:e7bc81df3e38 | 224 | cmd = pc.getc(); // wait for key |
wim | 0:e7bc81df3e38 | 225 | } |
wim | 0:e7bc81df3e38 | 226 | val = val * 10; |
wim | 0:e7bc81df3e38 | 227 | } |
wim | 1:12dadbc0017d | 228 | pc.printf("\r\nShow all digits done\r\n"); |
wim | 0:e7bc81df3e38 | 229 | #endif |
wim | 0:e7bc81df3e38 | 230 | |
wim | 0:e7bc81df3e38 | 231 | #if(1) |
wim | 0:e7bc81df3e38 | 232 | //test to show all digits (base is 0x10) |
wim | 0:e7bc81df3e38 | 233 | pc.printf("Show all hex digits\r\n"); |
wim | 0:e7bc81df3e38 | 234 | wait(1); |
wim | 0:e7bc81df3e38 | 235 | LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 236 | |
wim | 0:e7bc81df3e38 | 237 | LEDKEY8.printf("%08x", 0x012345AB); |
wim | 0:e7bc81df3e38 | 238 | cmd = pc.getc(); // wait for key |
wim | 0:e7bc81df3e38 | 239 | |
wim | 0:e7bc81df3e38 | 240 | int val = 1; |
wim | 0:e7bc81df3e38 | 241 | for (int i=0; i<LEDKEY8_NR_DIGITS; i++) { |
wim | 0:e7bc81df3e38 | 242 | |
wim | 0:e7bc81df3e38 | 243 | for (int cnt=0; cnt<0x10; cnt++) { |
wim | 0:e7bc81df3e38 | 244 | LEDKEY8.locate(0); |
wim | 0:e7bc81df3e38 | 245 | LEDKEY8.printf("%08x", (val * cnt)); |
wim | 0:e7bc81df3e38 | 246 | |
wim | 0:e7bc81df3e38 | 247 | // wait(0.5); |
wim | 0:e7bc81df3e38 | 248 | cmd = pc.getc(); // wait for key |
wim | 0:e7bc81df3e38 | 249 | } |
wim | 0:e7bc81df3e38 | 250 | val = val * 0x10; |
wim | 0:e7bc81df3e38 | 251 | } |
wim | 1:12dadbc0017d | 252 | pc.printf("\r\nShow all hex digits done\r\n"); |
wim | 0:e7bc81df3e38 | 253 | #endif |
wim | 0:e7bc81df3e38 | 254 | } |
wim | 1:12dadbc0017d | 255 | |
wim | 1:12dadbc0017d | 256 | if (keydata[LEDKEY8_SW4_IDX] == LEDKEY8_SW4_BIT) { //sw4 |
wim | 0:e7bc81df3e38 | 257 | // LEDKEY8.cls(); |
wim | 0:e7bc81df3e38 | 258 | // LEDKEY8.writeData(mbed_str); |
wim | 0:e7bc81df3e38 | 259 | #if(1) |
wim | 0:e7bc81df3e38 | 260 | //test to show all icons |
wim | 0:e7bc81df3e38 | 261 | pc.printf("Show all icons\r\n"); |
wim | 0:e7bc81df3e38 | 262 | LEDKEY8.cls(true); // Also clear all Icons |
wim | 0:e7bc81df3e38 | 263 | |
wim | 0:e7bc81df3e38 | 264 | float delay=0.1; |
wim | 0:e7bc81df3e38 | 265 | // Icons on |
wim | 0:e7bc81df3e38 | 266 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD1); wait(delay); |
wim | 0:e7bc81df3e38 | 267 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD2); wait(delay); |
wim | 0:e7bc81df3e38 | 268 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD3); wait(delay); |
wim | 0:e7bc81df3e38 | 269 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD4); wait(delay); |
wim | 0:e7bc81df3e38 | 270 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD5); wait(delay); |
wim | 0:e7bc81df3e38 | 271 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD6); wait(delay); |
wim | 0:e7bc81df3e38 | 272 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD7); wait(delay); |
wim | 0:e7bc81df3e38 | 273 | LEDKEY8.setIcon(TM1638_LEDKEY8::LD8); wait(delay); |
wim | 0:e7bc81df3e38 | 274 | |
wim | 0:e7bc81df3e38 | 275 | wait(delay); |
wim | 0:e7bc81df3e38 | 276 | |
wim | 0:e7bc81df3e38 | 277 | // Icons off |
wim | 0:e7bc81df3e38 | 278 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD1); wait(delay); |
wim | 0:e7bc81df3e38 | 279 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD2); wait(delay); |
wim | 0:e7bc81df3e38 | 280 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD3); wait(delay); |
wim | 0:e7bc81df3e38 | 281 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD4); wait(delay); |
wim | 0:e7bc81df3e38 | 282 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD5); wait(delay); |
wim | 0:e7bc81df3e38 | 283 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD6); wait(delay); |
wim | 0:e7bc81df3e38 | 284 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD7); wait(delay); |
wim | 0:e7bc81df3e38 | 285 | LEDKEY8.clrIcon(TM1638_LEDKEY8::LD8); wait(delay); |
wim | 0:e7bc81df3e38 | 286 | |
wim | 0:e7bc81df3e38 | 287 | // wait(1); |
wim | 1:12dadbc0017d | 288 | // LEDKEY8.cls(); // clear all, preserve Icons |
wim | 0:e7bc81df3e38 | 289 | pc.printf("Show all icons done\r\n"); |
wim | 0:e7bc81df3e38 | 290 | #endif |
wim | 0:e7bc81df3e38 | 291 | } |
wim | 0:e7bc81df3e38 | 292 | |
wim | 1:12dadbc0017d | 293 | if (keydata[LEDKEY8_SW5_IDX] == LEDKEY8_SW5_BIT) { //sw5 |
wim | 1:12dadbc0017d | 294 | LEDKEY8.cls(); // clear all, preserve Icons |
wim | 3:f1484bfa0574 | 295 | |
wim | 3:f1484bfa0574 | 296 | #if(0) |
wim | 3:f1484bfa0574 | 297 | LEDKEY8.printf("Count"); |
wim | 3:f1484bfa0574 | 298 | for (int cnt=0; cnt<=0xFF; cnt++) { |
wim | 3:f1484bfa0574 | 299 | LEDKEY8.locate(6); |
wim | 3:f1484bfa0574 | 300 | LEDKEY8.printf("%02x", cnt); |
wim | 3:f1484bfa0574 | 301 | wait(0.2); |
wim | 3:f1484bfa0574 | 302 | } |
wim | 3:f1484bfa0574 | 303 | #endif |
wim | 3:f1484bfa0574 | 304 | |
wim | 3:f1484bfa0574 | 305 | |
wim | 2:d6720abfe574 | 306 | // LEDKEY8.writeData(hello_str); |
wim | 2:d6720abfe574 | 307 | LEDKEY8.printf("hello"); |
wim | 0:e7bc81df3e38 | 308 | } |
wim | 0:e7bc81df3e38 | 309 | |
wim | 1:12dadbc0017d | 310 | if (keydata[LEDKEY8_SW6_IDX] == LEDKEY8_SW6_BIT) { //sw6 |
wim | 1:12dadbc0017d | 311 | LEDKEY8.cls(); // clear all, preserve Icons |
wim | 2:d6720abfe574 | 312 | // LEDKEY8.writeData(bye_str); |
wim | 2:d6720abfe574 | 313 | LEDKEY8.printf("Bye"); |
wim | 1:12dadbc0017d | 314 | } |
wim | 1:12dadbc0017d | 315 | |
wim | 1:12dadbc0017d | 316 | if (keydata[LEDKEY8_SW7_IDX] == LEDKEY8_SW7_BIT) { //sw7 |
wim | 1:12dadbc0017d | 317 | LEDKEY8.cls(); // clear all, preserve Icons |
wim | 1:12dadbc0017d | 318 | LEDKEY8.printf("%2.3f", -0.1234); // test decimal point display |
wim | 1:12dadbc0017d | 319 | wait(0.5); |
wim | 1:12dadbc0017d | 320 | LEDKEY8.cls(); // clear all, preserve Icons |
wim | 1:12dadbc0017d | 321 | LEDKEY8.printf("%2.3f", -012.345); // test decimal point display |
wim | 0:e7bc81df3e38 | 322 | } |
wim | 0:e7bc81df3e38 | 323 | |
wim | 1:12dadbc0017d | 324 | if (keydata[LEDKEY8_SW8_IDX] == LEDKEY8_SW8_BIT) { //sw8 |
wim | 1:12dadbc0017d | 325 | float delay=0.1; |
wim | 1:12dadbc0017d | 326 | // Icons on |
wim | 1:12dadbc0017d | 327 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP1); wait(delay); |
wim | 1:12dadbc0017d | 328 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP2); wait(delay); |
wim | 1:12dadbc0017d | 329 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP3); wait(delay); |
wim | 1:12dadbc0017d | 330 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP4); wait(delay); |
wim | 1:12dadbc0017d | 331 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP5); wait(delay); |
wim | 1:12dadbc0017d | 332 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP6); wait(delay); |
wim | 1:12dadbc0017d | 333 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP7); wait(delay); |
wim | 1:12dadbc0017d | 334 | LEDKEY8.setIcon(TM1638_LEDKEY8::DP8); wait(delay); |
wim | 1:12dadbc0017d | 335 | |
wim | 1:12dadbc0017d | 336 | wait(delay); |
wim | 1:12dadbc0017d | 337 | |
wim | 1:12dadbc0017d | 338 | // Icons off |
wim | 1:12dadbc0017d | 339 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP8); wait(delay); |
wim | 1:12dadbc0017d | 340 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP7); wait(delay); |
wim | 1:12dadbc0017d | 341 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP6); wait(delay); |
wim | 1:12dadbc0017d | 342 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP5); wait(delay); |
wim | 1:12dadbc0017d | 343 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP4); wait(delay); |
wim | 1:12dadbc0017d | 344 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP3); wait(delay); |
wim | 1:12dadbc0017d | 345 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP2); wait(delay); |
wim | 1:12dadbc0017d | 346 | LEDKEY8.clrIcon(TM1638_LEDKEY8::DP1); wait(delay); |
wim | 0:e7bc81df3e38 | 347 | } |
wim | 0:e7bc81df3e38 | 348 | |
wim | 0:e7bc81df3e38 | 349 | } //if Key |
wim | 0:e7bc81df3e38 | 350 | |
wim | 0:e7bc81df3e38 | 351 | myled = !myled; |
wim | 0:e7bc81df3e38 | 352 | wait(0.3); |
wim | 0:e7bc81df3e38 | 353 | } //while |
wim | 0:e7bc81df3e38 | 354 | } |
wim | 0:e7bc81df3e38 | 355 | #endif |
wim | 0:e7bc81df3e38 | 356 | |
wim | 0:e7bc81df3e38 | 357 | |
wim | 0:e7bc81df3e38 | 358 | |
wim | 0:e7bc81df3e38 | 359 | #if (TM1638_TEST == 1) |
wim | 0:e7bc81df3e38 | 360 | // Direct TM1638 Test |
wim | 0:e7bc81df3e38 | 361 | |
wim | 0:e7bc81df3e38 | 362 | Serial pc(USBTX, USBRX); |
wim | 0:e7bc81df3e38 | 363 | DigitalOut myled(LED1); |
wim | 0:e7bc81df3e38 | 364 | |
wim | 0:e7bc81df3e38 | 365 | // DisplayData_t size is 16 bytes (8 Grids @ 10 Segments) |
wim | 0:e7bc81df3e38 | 366 | TM1638::DisplayData_t all_str = {0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03}; |
wim | 0:e7bc81df3e38 | 367 | TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; |
wim | 0:e7bc81df3e38 | 368 | |
wim | 0:e7bc81df3e38 | 369 | // KeyData_t size is 4 bytes |
wim | 0:e7bc81df3e38 | 370 | TM1638::KeyData_t keydata; |
wim | 0:e7bc81df3e38 | 371 | |
wim | 0:e7bc81df3e38 | 372 | TM1638 TM1638(p5,p6,p7, p8); |
wim | 0:e7bc81df3e38 | 373 | |
wim | 0:e7bc81df3e38 | 374 | char cmd, bits; |
wim | 0:e7bc81df3e38 | 375 | int main() { |
wim | 0:e7bc81df3e38 | 376 | |
wim | 0:e7bc81df3e38 | 377 | pc.printf("Hello World\r\n"); // |
wim | 0:e7bc81df3e38 | 378 | |
wim | 0:e7bc81df3e38 | 379 | TM1638.cls(); |
wim | 0:e7bc81df3e38 | 380 | TM1638.writeData(all_str); |
wim | 0:e7bc81df3e38 | 381 | wait(2); |
wim | 0:e7bc81df3e38 | 382 | TM1638.setBrightness(TM1638_BRT3); |
wim | 0:e7bc81df3e38 | 383 | wait(1); |
wim | 0:e7bc81df3e38 | 384 | TM1638.setBrightness(TM1638_BRT0); |
wim | 0:e7bc81df3e38 | 385 | wait(1); |
wim | 0:e7bc81df3e38 | 386 | TM1638.setBrightness(TM1638_BRT4); |
wim | 0:e7bc81df3e38 | 387 | |
wim | 0:e7bc81df3e38 | 388 | while (1) { |
wim | 0:e7bc81df3e38 | 389 | |
wim | 0:e7bc81df3e38 | 390 | // Check and read keydata |
wim | 0:e7bc81df3e38 | 391 | if (TM1638.getKeys(&keydata)) { |
wim | 0:e7bc81df3e38 | 392 | pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]); |
wim | 0:e7bc81df3e38 | 393 | |
wim | 0:e7bc81df3e38 | 394 | if (keydata[0] == 0x01) { //sw1 |
wim | 0:e7bc81df3e38 | 395 | TM1638.cls(); |
wim | 0:e7bc81df3e38 | 396 | TM1638.writeData(all_str); |
wim | 0:e7bc81df3e38 | 397 | } |
wim | 0:e7bc81df3e38 | 398 | |
wim | 0:e7bc81df3e38 | 399 | if (keydata[1] == 0x01) { //sw2 |
wim | 0:e7bc81df3e38 | 400 | TM1638.cls(); |
wim | 0:e7bc81df3e38 | 401 | TM1638.writeData(cls_str); |
wim | 0:e7bc81df3e38 | 402 | } |
wim | 0:e7bc81df3e38 | 403 | |
wim | 0:e7bc81df3e38 | 404 | |
wim | 0:e7bc81df3e38 | 405 | if (keydata[2] == 0x01) { //sw3 |
wim | 0:e7bc81df3e38 | 406 | #if(1) |
wim | 0:e7bc81df3e38 | 407 | //test to show all segs |
wim | 0:e7bc81df3e38 | 408 | pc.printf("Show all segs\r\n"); |
wim | 0:e7bc81df3e38 | 409 | wait(1); |
wim | 0:e7bc81df3e38 | 410 | TM1638.cls(); |
wim | 0:e7bc81df3e38 | 411 | |
wim | 0:e7bc81df3e38 | 412 | for (int i=0; i<TM1638_DISPLAY_MEM; i++) { |
wim | 0:e7bc81df3e38 | 413 | for (int bit=0; bit<8; bit++) { |
wim | 0:e7bc81df3e38 | 414 | TM1638.cls(); |
wim | 0:e7bc81df3e38 | 415 | |
wim | 0:e7bc81df3e38 | 416 | bits = 0x01 << bit; |
wim | 0:e7bc81df3e38 | 417 | TM1638.writeData(i, bits); |
wim | 0:e7bc81df3e38 | 418 | |
wim | 0:e7bc81df3e38 | 419 | pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); |
wim | 0:e7bc81df3e38 | 420 | // wait(0.5); |
wim | 0:e7bc81df3e38 | 421 | cmd = pc.getc(); // wait for key |
wim | 0:e7bc81df3e38 | 422 | } |
wim | 0:e7bc81df3e38 | 423 | } |
wim | 0:e7bc81df3e38 | 424 | pc.printf("Show all segs done\r\n"); |
wim | 0:e7bc81df3e38 | 425 | #endif |
wim | 0:e7bc81df3e38 | 426 | } |
wim | 0:e7bc81df3e38 | 427 | |
wim | 0:e7bc81df3e38 | 428 | if (keydata[3] == 0x01) { //sw4 |
wim | 0:e7bc81df3e38 | 429 | TM1638.cls(); |
wim | 0:e7bc81df3e38 | 430 | // TM1638.writeData(hello_str); |
wim | 0:e7bc81df3e38 | 431 | } |
wim | 0:e7bc81df3e38 | 432 | |
wim | 0:e7bc81df3e38 | 433 | |
wim | 0:e7bc81df3e38 | 434 | } //if Key |
wim | 0:e7bc81df3e38 | 435 | |
wim | 0:e7bc81df3e38 | 436 | myled = !myled; |
wim | 0:e7bc81df3e38 | 437 | wait(0.3); |
wim | 0:e7bc81df3e38 | 438 | } //while |
wim | 0:e7bc81df3e38 | 439 | } |
wim | 0:e7bc81df3e38 | 440 | #endif |