Test program fro TM1637 LEDController Library, Initial release.

Dependencies:   TM1637 mbed

See here for more information.

Committer:
wim
Date:
Fri Oct 06 16:44:20 2017 +0000
Revision:
1:0dab5786c471
Parent:
0:672ec7a524fa
Added RobotDyn 6 Digit module,; Added Eyewink 6 Digit + 5 Keys module,; Constructor adapted to 2 pins: dio, clk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:672ec7a524fa 1 /* mbed TM1637 Test program, for TM1637 LED controller
wim 0:672ec7a524fa 2 * Copyright (c) 2016, v01: WH, Initial version
wim 1:0dab5786c471 3 * 2017, v02: WH, Added RobotDyn 6 Digit module,
wim 1:0dab5786c471 4 * Added Eyewink 6 Digit + 5 Keys module,
wim 1:0dab5786c471 5 * Constructor adapted to 2 pins: dio, clk
wim 0:672ec7a524fa 6 *
wim 0:672ec7a524fa 7 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:672ec7a524fa 8 * of this software and associated documentation files (the "Software"), to deal
wim 0:672ec7a524fa 9 * in the Software without restriction, including without limitation the rights
wim 0:672ec7a524fa 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:672ec7a524fa 11 * copies of the Software, and to permit persons to whom the Software is
wim 0:672ec7a524fa 12 * furnished to do so, subject to the following conditions:
wim 0:672ec7a524fa 13 *
wim 0:672ec7a524fa 14 * The above copyright notice and this permission notice shall be included in
wim 0:672ec7a524fa 15 * all copies or substantial portions of the Software.
wim 0:672ec7a524fa 16 *
wim 0:672ec7a524fa 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:672ec7a524fa 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:672ec7a524fa 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:672ec7a524fa 20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:672ec7a524fa 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:672ec7a524fa 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:672ec7a524fa 23 * THE SOFTWARE.
wim 0:672ec7a524fa 24 */
wim 0:672ec7a524fa 25 #include "mbed.h"
wim 0:672ec7a524fa 26 #include "TM1637.h"
wim 0:672ec7a524fa 27
wim 0:672ec7a524fa 28 #if (CATALEX_TEST == 1)
wim 1:0dab5786c471 29 // CATALEX TM1637 4 Digit display test
wim 0:672ec7a524fa 30 #include "Font_7Seg.h"
wim 0:672ec7a524fa 31
wim 0:672ec7a524fa 32 Serial pc(USBTX, USBRX);
wim 1:0dab5786c471 33 DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
wim 0:672ec7a524fa 34
wim 0:672ec7a524fa 35 // DisplayData_t size is 4 bytes (4 Grids @ 8 Segments)
wim 0:672ec7a524fa 36 TM1637::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
wim 0:672ec7a524fa 37 TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
wim 0:672ec7a524fa 38 TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00, 0x00, 0x00};
wim 0:672ec7a524fa 39 TM1637::DisplayData_t bye_str = {C7_B, C7_Y, C7_E, 0x00, 0x00, 0x00};
wim 0:672ec7a524fa 40
wim 0:672ec7a524fa 41 // KeyData_t size is 1 bytes
wim 0:672ec7a524fa 42 TM1637::KeyData_t keydata;
wim 0:672ec7a524fa 43
wim 0:672ec7a524fa 44 //TM1637_CATALEX declaration
wim 1:0dab5786c471 45 #if(SPI==1)
wim 1:0dab5786c471 46 //Old Constructor
wim 1:0dab5786c471 47 TM1637_CATALEX CATALEX(p5, p6, p7); //LPC1768
wim 1:0dab5786c471 48 //TM1637_CATALEX CATALEX(D8, D9, D10); //F401
wim 1:0dab5786c471 49 #else
wim 1:0dab5786c471 50 //New Constructor
wim 1:0dab5786c471 51 TM1637_CATALEX CATALEX(p6, p7); //LPC1768
wim 1:0dab5786c471 52 //TM1637_CATALEX CATALEX(D9, D10); //F401
wim 1:0dab5786c471 53 #endif
wim 0:672ec7a524fa 54
wim 0:672ec7a524fa 55 void show_menu() {
wim 0:672ec7a524fa 56 // pc.printf("0: Exit\n\r");
wim 0:672ec7a524fa 57 pc.printf("1: All\n\r");
wim 0:672ec7a524fa 58 pc.printf("2: Show all segs\r\n");
wim 0:672ec7a524fa 59 pc.printf("3: Show all chars\n\r");
wim 0:672ec7a524fa 60 pc.printf("4: Show all digits\n\r");
wim 0:672ec7a524fa 61 pc.printf("5: Show all icons\n\r");
wim 0:672ec7a524fa 62 pc.printf("6: Counter\n\r");
wim 0:672ec7a524fa 63 pc.printf("7: Floats\n\r");
wim 0:672ec7a524fa 64 pc.printf("8: Kitt\n\r");
wim 1:0dab5786c471 65 pc.printf("9: Cls\n\r");
wim 1:0dab5786c471 66 pc.printf("A: Bye\n\r");
wim 1:0dab5786c471 67 pc.printf("k: Key\n\r");
wim 0:672ec7a524fa 68 }
wim 0:672ec7a524fa 69
wim 0:672ec7a524fa 70
wim 0:672ec7a524fa 71 char cmd, bits;
wim 0:672ec7a524fa 72 int main() {
wim 0:672ec7a524fa 73
wim 0:672ec7a524fa 74 pc.printf("Hello World\r\n"); //
wim 0:672ec7a524fa 75
wim 0:672ec7a524fa 76 CATALEX.cls();
wim 0:672ec7a524fa 77 CATALEX.writeData(all_str);
wim 0:672ec7a524fa 78 wait(2);
wim 0:672ec7a524fa 79 CATALEX.setBrightness(TM1637_BRT3);
wim 0:672ec7a524fa 80 wait(1);
wim 0:672ec7a524fa 81 CATALEX.setBrightness(TM1637_BRT0);
wim 0:672ec7a524fa 82 wait(1);
wim 0:672ec7a524fa 83 CATALEX.setBrightness(TM1637_BRT4);
wim 0:672ec7a524fa 84
wim 0:672ec7a524fa 85 wait(1);
wim 0:672ec7a524fa 86 CATALEX.cls(true);
wim 0:672ec7a524fa 87 CATALEX.writeData(hello_str);
wim 0:672ec7a524fa 88
wim 0:672ec7a524fa 89 char cmd2 = '0';
wim 0:672ec7a524fa 90 while (1) {
wim 0:672ec7a524fa 91
wim 0:672ec7a524fa 92 show_menu();
wim 0:672ec7a524fa 93 cmd2 = pc.getc();
wim 0:672ec7a524fa 94
wim 0:672ec7a524fa 95 switch (cmd2) {
wim 0:672ec7a524fa 96 case '1' : {
wim 0:672ec7a524fa 97 pc.printf("all\r\n");
wim 0:672ec7a524fa 98 CATALEX.cls();
wim 0:672ec7a524fa 99 CATALEX.writeData(all_str);
wim 0:672ec7a524fa 100 break;
wim 0:672ec7a524fa 101 }
wim 0:672ec7a524fa 102
wim 0:672ec7a524fa 103 case '2' : {
wim 0:672ec7a524fa 104 #if(1)
wim 0:672ec7a524fa 105 //test to show all segs
wim 0:672ec7a524fa 106 pc.printf("Show all segs\r\n");
wim 0:672ec7a524fa 107 wait(1);
wim 0:672ec7a524fa 108 CATALEX.cls();
wim 0:672ec7a524fa 109
wim 0:672ec7a524fa 110 for (int i=0; i<TM1637_DISPLAY_MEM; i++) {
wim 0:672ec7a524fa 111 for (int bit=0; bit<8; bit++) {
wim 0:672ec7a524fa 112 CATALEX.cls();
wim 0:672ec7a524fa 113
wim 0:672ec7a524fa 114 bits = 0x01 << bit;
wim 0:672ec7a524fa 115 CATALEX.writeData(bits, i);
wim 0:672ec7a524fa 116
wim 0:672ec7a524fa 117 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:672ec7a524fa 118 // wait(0.5);
wim 0:672ec7a524fa 119 cmd = pc.getc(); // wait for key
wim 0:672ec7a524fa 120 }
wim 0:672ec7a524fa 121 }
wim 0:672ec7a524fa 122 pc.printf("\r\nShow all segs done\r\n");
wim 0:672ec7a524fa 123 #endif
wim 0:672ec7a524fa 124 break;
wim 0:672ec7a524fa 125 }
wim 0:672ec7a524fa 126
wim 0:672ec7a524fa 127 case '3' : {
wim 0:672ec7a524fa 128
wim 0:672ec7a524fa 129 #if(1)
wim 0:672ec7a524fa 130 //test to show all chars
wim 0:672ec7a524fa 131 pc.printf("Show all alpha chars\r\n");
wim 0:672ec7a524fa 132 wait(1);
wim 0:672ec7a524fa 133 CATALEX.cls();
wim 0:672ec7a524fa 134
wim 0:672ec7a524fa 135 for (int i=0; i<26; i++) {
wim 0:672ec7a524fa 136 CATALEX.printf("%c", char(i + 'A'));
wim 0:672ec7a524fa 137 // CATALEX.printf("%c", char(i + 'a'));
wim 0:672ec7a524fa 138 wait(0.25);
wim 0:672ec7a524fa 139 }
wim 0:672ec7a524fa 140 pc.printf("Show all alpha chars done\r\n");
wim 0:672ec7a524fa 141 #endif
wim 0:672ec7a524fa 142
wim 0:672ec7a524fa 143 #if(0)
wim 0:672ec7a524fa 144 //test to show all chars
wim 0:672ec7a524fa 145 pc.printf("Show all chars\r\n");
wim 0:672ec7a524fa 146 wait(1);
wim 0:672ec7a524fa 147 CATALEX.cls();
wim 0:672ec7a524fa 148
wim 0:672ec7a524fa 149 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 0:672ec7a524fa 150 CATALEX.printf("%c", char(i));
wim 0:672ec7a524fa 151 // wait(0.25);
wim 0:672ec7a524fa 152 cmd = pc.getc(); // wait for key
wim 0:672ec7a524fa 153 }
wim 0:672ec7a524fa 154 pc.printf("Show all chars done\r\n");
wim 0:672ec7a524fa 155 #endif
wim 0:672ec7a524fa 156 break;
wim 0:672ec7a524fa 157 }
wim 0:672ec7a524fa 158 case '4': {
wim 0:672ec7a524fa 159 #if(0)
wim 0:672ec7a524fa 160 //test to show all digits (base is 10)
wim 0:672ec7a524fa 161 pc.printf("Show all digits\r\n");
wim 0:672ec7a524fa 162 wait(1);
wim 0:672ec7a524fa 163 CATALEX.cls();
wim 0:672ec7a524fa 164
wim 0:672ec7a524fa 165 for (int i=0; i<CATALEX_NR_DIGITS; i++) {
wim 0:672ec7a524fa 166
wim 0:672ec7a524fa 167 for (int cnt=0; cnt<10; cnt++) {
wim 0:672ec7a524fa 168 CATALEX.locate(i);
wim 0:672ec7a524fa 169 CATALEX.printf("%0d", cnt);
wim 0:672ec7a524fa 170
wim 0:672ec7a524fa 171 // wait(0.5);
wim 0:672ec7a524fa 172 cmd = pc.getc(); // wait for key
wim 0:672ec7a524fa 173 }
wim 0:672ec7a524fa 174 }
wim 0:672ec7a524fa 175 pc.printf("\r\nShow all digits done\r\n");
wim 0:672ec7a524fa 176 #endif
wim 0:672ec7a524fa 177
wim 0:672ec7a524fa 178 #if(1)
wim 0:672ec7a524fa 179 //test to show all digits (base is 0x10)
wim 0:672ec7a524fa 180 pc.printf("Show all hex digits\r\n");
wim 0:672ec7a524fa 181 wait(1);
wim 0:672ec7a524fa 182 CATALEX.cls();
wim 0:672ec7a524fa 183
wim 0:672ec7a524fa 184 CATALEX.printf("%04x", 0x01AB);
wim 0:672ec7a524fa 185 cmd = pc.getc(); // wait for key
wim 0:672ec7a524fa 186 CATALEX.printf("%04x", 0x0);
wim 0:672ec7a524fa 187
wim 0:672ec7a524fa 188 for (int i=0; i<CATALEX_NR_DIGITS; i++) {
wim 0:672ec7a524fa 189
wim 0:672ec7a524fa 190 for (int cnt=0; cnt<0x10; cnt++) {
wim 0:672ec7a524fa 191 CATALEX.locate(i);
wim 0:672ec7a524fa 192 CATALEX.printf("%0x", cnt);
wim 0:672ec7a524fa 193
wim 0:672ec7a524fa 194 // wait(0.5);
wim 0:672ec7a524fa 195 cmd = pc.getc(); // wait for key
wim 0:672ec7a524fa 196 }
wim 0:672ec7a524fa 197 }
wim 0:672ec7a524fa 198 pc.printf("\r\nShow all hex digits done\r\n");
wim 0:672ec7a524fa 199 #endif
wim 0:672ec7a524fa 200 break;
wim 0:672ec7a524fa 201 }
wim 0:672ec7a524fa 202 case '5': {
wim 0:672ec7a524fa 203 #if(1)
wim 0:672ec7a524fa 204 //test to show all icons
wim 0:672ec7a524fa 205 pc.printf("Show all icons\r\n");
wim 0:672ec7a524fa 206 CATALEX.cls(true); // Also clear all Icons
wim 0:672ec7a524fa 207
wim 0:672ec7a524fa 208 float delay=0.1;
wim 1:0dab5786c471 209 // Icons on, Note that some versions do not have decimal points, but a
wim 1:0dab5786c471 210 // a double colon on the second digit to show hours:min
wim 1:0dab5786c471 211 CATALEX.setIcon(TM1637_CATALEX::DP1); wait(delay);
wim 1:0dab5786c471 212 CATALEX.setIcon(TM1637_CATALEX::DP2); wait(delay);
wim 1:0dab5786c471 213 // CATALEX.setIcon(TM1637_CATALEX::COL2); wait(delay);
wim 1:0dab5786c471 214 CATALEX.setIcon(TM1637_CATALEX::DP3); wait(delay);
wim 1:0dab5786c471 215 CATALEX.setIcon(TM1637_CATALEX::DP4); wait(delay);
wim 0:672ec7a524fa 216
wim 0:672ec7a524fa 217 wait(delay);
wim 0:672ec7a524fa 218
wim 1:0dab5786c471 219 // Icons off
wim 1:0dab5786c471 220 CATALEX.clrIcon(TM1637_CATALEX::DP4); wait(delay);
wim 1:0dab5786c471 221 CATALEX.clrIcon(TM1637_CATALEX::DP3); wait(delay);
wim 1:0dab5786c471 222 CATALEX.clrIcon(TM1637_CATALEX::DP2); wait(delay);
wim 1:0dab5786c471 223 // CATALEX.clrIcon(TM1637_CATALEX::COL2); wait(delay);
wim 1:0dab5786c471 224 CATALEX.clrIcon(TM1637_CATALEX::DP1); wait(delay);
wim 0:672ec7a524fa 225
wim 1:0dab5786c471 226 // wait(1);
wim 0:672ec7a524fa 227 // CATALEX.cls(); // clear all, preserve Icons
wim 0:672ec7a524fa 228 pc.printf("Show all icons done\r\n");
wim 0:672ec7a524fa 229 #endif
wim 0:672ec7a524fa 230 break;
wim 0:672ec7a524fa 231 }
wim 0:672ec7a524fa 232
wim 0:672ec7a524fa 233 case '6': {
wim 0:672ec7a524fa 234 CATALEX.cls(); // clear all, preserve Icons
wim 0:672ec7a524fa 235
wim 0:672ec7a524fa 236 #if(1)
wim 0:672ec7a524fa 237 CATALEX.locate(0);
wim 0:672ec7a524fa 238
wim 0:672ec7a524fa 239 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 0:672ec7a524fa 240 CATALEX.locate(2);
wim 0:672ec7a524fa 241 CATALEX.printf("%02x", cnt);
wim 0:672ec7a524fa 242 wait(0.2);
wim 0:672ec7a524fa 243 }
wim 0:672ec7a524fa 244 #endif
wim 0:672ec7a524fa 245
wim 0:672ec7a524fa 246 // CATALEX.writeData(hello_str);
wim 0:672ec7a524fa 247 // CATALEX.printf("hello");
wim 0:672ec7a524fa 248
wim 0:672ec7a524fa 249 break;
wim 0:672ec7a524fa 250 }
wim 0:672ec7a524fa 251 case '7': {
wim 0:672ec7a524fa 252 CATALEX.cls(); // clear all, preserve Icons
wim 0:672ec7a524fa 253 CATALEX.printf("%1.2f", -0.12); // test decimal point display
wim 0:672ec7a524fa 254 wait(0.5);
wim 0:672ec7a524fa 255 CATALEX.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 256 CATALEX.printf("%1.3f", 1.234); // test decimal point display
wim 0:672ec7a524fa 257 break;
wim 0:672ec7a524fa 258 }
wim 0:672ec7a524fa 259
wim 0:672ec7a524fa 260 case '8': {
wim 0:672ec7a524fa 261
wim 0:672ec7a524fa 262 #if(1)
wim 0:672ec7a524fa 263 //test to show KITT
wim 0:672ec7a524fa 264 pc.printf("Show KITT scanner\r\n");
wim 0:672ec7a524fa 265
wim 0:672ec7a524fa 266
wim 0:672ec7a524fa 267 // 0123
wim 0:672ec7a524fa 268 const char KITT[][5] = {{"8 "},
wim 0:672ec7a524fa 269 {"38 "},
wim 0:672ec7a524fa 270 {" 38 "},
wim 0:672ec7a524fa 271 {" 38"},
wim 0:672ec7a524fa 272 {" 3"},
wim 0:672ec7a524fa 273 {" "},
wim 0:672ec7a524fa 274 {" 8"},
wim 0:672ec7a524fa 275 {" 8E"},
wim 0:672ec7a524fa 276 {" 8E "},
wim 0:672ec7a524fa 277 {"8E "},
wim 0:672ec7a524fa 278 {"E "},
wim 0:672ec7a524fa 279 {" "}
wim 0:672ec7a524fa 280 };
wim 0:672ec7a524fa 281
wim 0:672ec7a524fa 282 CATALEX.cls(); // clear all, preserve Icons
wim 0:672ec7a524fa 283
wim 0:672ec7a524fa 284 while (!pc.readable()) { // wait for key
wim 0:672ec7a524fa 285 for (int i=0; i < (sizeof(KITT) / 5) ; i++) {
wim 0:672ec7a524fa 286 CATALEX.locate(0);
wim 0:672ec7a524fa 287 CATALEX.printf("%s", KITT[i]);
wim 0:672ec7a524fa 288 wait(0.05);
wim 0:672ec7a524fa 289 }
wim 0:672ec7a524fa 290 }
wim 0:672ec7a524fa 291 cmd = pc.getc(); // read key
wim 0:672ec7a524fa 292 pc.printf("Show KITT done\r\n");
wim 0:672ec7a524fa 293 #endif
wim 0:672ec7a524fa 294 break;
wim 0:672ec7a524fa 295 }
wim 0:672ec7a524fa 296
wim 1:0dab5786c471 297 case '9': {
wim 1:0dab5786c471 298 // CATALEX.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 299 CATALEX.cls(true); // clear all, including Icons
wim 1:0dab5786c471 300 break;
wim 1:0dab5786c471 301 }
wim 0:672ec7a524fa 302
wim 1:0dab5786c471 303 case 'A': {
wim 0:672ec7a524fa 304
wim 0:672ec7a524fa 305 CATALEX.cls(); // clear all, preserve Icons
wim 0:672ec7a524fa 306 // CATALEX.writeData(bye_str);
wim 0:672ec7a524fa 307 CATALEX.printf("Bye");
wim 0:672ec7a524fa 308
wim 0:672ec7a524fa 309 break;
wim 0:672ec7a524fa 310 }
wim 0:672ec7a524fa 311
wim 1:0dab5786c471 312 case 'k': {
wim 1:0dab5786c471 313 if (CATALEX.getKeys(&keydata)) {
wim 1:0dab5786c471 314 pc.printf("Keydata = 0x%02x\r\n", keydata);
wim 1:0dab5786c471 315 }
wim 1:0dab5786c471 316 break;
wim 1:0dab5786c471 317 }
wim 1:0dab5786c471 318
wim 1:0dab5786c471 319 default : {
wim 1:0dab5786c471 320 break;
wim 1:0dab5786c471 321 }
wim 1:0dab5786c471 322
wim 1:0dab5786c471 323 } //switch cmd
wim 1:0dab5786c471 324
wim 1:0dab5786c471 325 #if(1)
wim 1:0dab5786c471 326 // Check and read keydata
wim 1:0dab5786c471 327 if (CATALEX.getKeys(&keydata)) {
wim 1:0dab5786c471 328 pc.printf("Keydata = 0x%02x\r\n", keydata);
wim 1:0dab5786c471 329
wim 1:0dab5786c471 330 CATALEX.cls();
wim 1:0dab5786c471 331 switch (keydata) {
wim 1:0dab5786c471 332 case TM1637_SW9_BIT : { //sw9, 0xF7
wim 1:0dab5786c471 333 CATALEX.printf("--09");
wim 1:0dab5786c471 334 break;
wim 1:0dab5786c471 335 }
wim 1:0dab5786c471 336
wim 1:0dab5786c471 337 case TM1637_SW10_BIT: { //sw10, 0x77
wim 1:0dab5786c471 338 CATALEX.printf("--10");
wim 1:0dab5786c471 339 break;
wim 1:0dab5786c471 340 }
wim 1:0dab5786c471 341
wim 1:0dab5786c471 342 default : {
wim 1:0dab5786c471 343 CATALEX.printf("----");
wim 1:0dab5786c471 344 break;
wim 1:0dab5786c471 345 }
wim 1:0dab5786c471 346 }
wim 1:0dab5786c471 347
wim 1:0dab5786c471 348 } // Check keydata
wim 1:0dab5786c471 349 #endif
wim 1:0dab5786c471 350
wim 1:0dab5786c471 351 myled = !myled;
wim 1:0dab5786c471 352 wait(0.3);
wim 1:0dab5786c471 353 } //while
wim 1:0dab5786c471 354 }
wim 1:0dab5786c471 355 #endif
wim 1:0dab5786c471 356
wim 1:0dab5786c471 357
wim 1:0dab5786c471 358 #if (ROBOTDYN_TEST == 1)
wim 1:0dab5786c471 359 // ROBOTDYN TM1637 6 Digit display test
wim 1:0dab5786c471 360 #include "Font_7Seg.h"
wim 1:0dab5786c471 361
wim 1:0dab5786c471 362 Serial pc(USBTX, USBRX);
wim 1:0dab5786c471 363 DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
wim 1:0dab5786c471 364
wim 1:0dab5786c471 365 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments)
wim 1:0dab5786c471 366 TM1637::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
wim 1:0dab5786c471 367 TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
wim 1:0dab5786c471 368 TM1637::DisplayData_t hello_str = {0x00, 0x00, 0x00, C7_I, C7_H, 0x00};
wim 1:0dab5786c471 369 TM1637::DisplayData_t bye_str = {0x00, 0x00, 0x00, C7_E, C7_Y, C7_B};
wim 1:0dab5786c471 370
wim 1:0dab5786c471 371 // KeyData_t size is 1 bytes
wim 1:0dab5786c471 372 TM1637::KeyData_t keydata;
wim 1:0dab5786c471 373
wim 1:0dab5786c471 374 //TM1637_ROBOTDYN declaration
wim 1:0dab5786c471 375 //New Constructor
wim 1:0dab5786c471 376 TM1637_ROBOTDYN ROBOTDYN(p6, p7); //LPC1768
wim 1:0dab5786c471 377 //TM1637_ROBOTDYN ROBOTDYN(D9, D10); //F401
wim 1:0dab5786c471 378
wim 1:0dab5786c471 379 void show_menu() {
wim 1:0dab5786c471 380 // pc.printf("0: Exit\n\r");
wim 1:0dab5786c471 381 pc.printf("1: All\n\r");
wim 1:0dab5786c471 382 pc.printf("2: Show all segs\r\n");
wim 1:0dab5786c471 383 pc.printf("3: Show all chars\n\r");
wim 1:0dab5786c471 384 pc.printf("4: Show all digits\n\r");
wim 1:0dab5786c471 385 pc.printf("5: Show all icons\n\r");
wim 1:0dab5786c471 386 pc.printf("6: Counter\n\r");
wim 1:0dab5786c471 387 pc.printf("7: Floats\n\r");
wim 1:0dab5786c471 388 pc.printf("8: Kitt\n\r");
wim 1:0dab5786c471 389 pc.printf("9: Cls\n\r");
wim 1:0dab5786c471 390 pc.printf("A: Bye\n\r");
wim 1:0dab5786c471 391 }
wim 1:0dab5786c471 392
wim 1:0dab5786c471 393
wim 1:0dab5786c471 394 char cmd, bits;
wim 1:0dab5786c471 395 int main() {
wim 1:0dab5786c471 396
wim 1:0dab5786c471 397 pc.printf("Hello World\r\n"); //
wim 1:0dab5786c471 398
wim 1:0dab5786c471 399 ROBOTDYN.cls();
wim 1:0dab5786c471 400 ROBOTDYN.writeData(all_str);
wim 1:0dab5786c471 401 wait(2);
wim 1:0dab5786c471 402 ROBOTDYN.setBrightness(TM1637_BRT3);
wim 1:0dab5786c471 403 wait(1);
wim 1:0dab5786c471 404 ROBOTDYN.setBrightness(TM1637_BRT0);
wim 1:0dab5786c471 405 wait(1);
wim 1:0dab5786c471 406 ROBOTDYN.setBrightness(TM1637_BRT4);
wim 1:0dab5786c471 407
wim 1:0dab5786c471 408 wait(1);
wim 1:0dab5786c471 409 ROBOTDYN.cls(true);
wim 1:0dab5786c471 410 ROBOTDYN.writeData(hello_str);
wim 1:0dab5786c471 411
wim 1:0dab5786c471 412 char cmd2 = '0';
wim 1:0dab5786c471 413 while (1) {
wim 1:0dab5786c471 414
wim 1:0dab5786c471 415 show_menu();
wim 1:0dab5786c471 416 cmd2 = pc.getc();
wim 1:0dab5786c471 417
wim 1:0dab5786c471 418 switch (cmd2) {
wim 1:0dab5786c471 419 case '1' : {
wim 1:0dab5786c471 420 pc.printf("all\r\n");
wim 1:0dab5786c471 421 ROBOTDYN.cls();
wim 1:0dab5786c471 422 ROBOTDYN.writeData(all_str);
wim 1:0dab5786c471 423 break;
wim 1:0dab5786c471 424 }
wim 1:0dab5786c471 425
wim 1:0dab5786c471 426 case '2' : {
wim 1:0dab5786c471 427 #if(1)
wim 1:0dab5786c471 428 //test to show all segs
wim 1:0dab5786c471 429 pc.printf("Show all segs\r\n");
wim 1:0dab5786c471 430 wait(1);
wim 1:0dab5786c471 431 ROBOTDYN.cls();
wim 1:0dab5786c471 432
wim 1:0dab5786c471 433 for (int i=0; i<TM1637_DISPLAY_MEM; i++) {
wim 1:0dab5786c471 434 for (int bit=0; bit<8; bit++) {
wim 1:0dab5786c471 435 ROBOTDYN.cls();
wim 1:0dab5786c471 436
wim 1:0dab5786c471 437 bits = 0x01 << bit;
wim 1:0dab5786c471 438 ROBOTDYN.writeData(bits, i);
wim 1:0dab5786c471 439
wim 1:0dab5786c471 440 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 1:0dab5786c471 441 // wait(0.5);
wim 1:0dab5786c471 442 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 443 }
wim 1:0dab5786c471 444 }
wim 1:0dab5786c471 445 pc.printf("\r\nShow all segs done\r\n");
wim 1:0dab5786c471 446 #endif
wim 1:0dab5786c471 447 break;
wim 1:0dab5786c471 448 }
wim 1:0dab5786c471 449
wim 1:0dab5786c471 450 case '3' : {
wim 1:0dab5786c471 451
wim 1:0dab5786c471 452 #if(1)
wim 1:0dab5786c471 453 //test to show all chars
wim 1:0dab5786c471 454 pc.printf("Show all alpha chars\r\n");
wim 1:0dab5786c471 455 wait(1);
wim 1:0dab5786c471 456 ROBOTDYN.cls();
wim 1:0dab5786c471 457
wim 1:0dab5786c471 458 for (int i=0; i<26; i++) {
wim 1:0dab5786c471 459 ROBOTDYN.printf("%c", char(i + 'A'));
wim 1:0dab5786c471 460 // ROBOTDYN.printf("%c", char(i + 'a'));
wim 1:0dab5786c471 461 wait(0.25);
wim 1:0dab5786c471 462 }
wim 1:0dab5786c471 463 pc.printf("Show all alpha chars done\r\n");
wim 1:0dab5786c471 464 #endif
wim 1:0dab5786c471 465
wim 1:0dab5786c471 466 #if(0)
wim 1:0dab5786c471 467 //test to show all chars
wim 1:0dab5786c471 468 pc.printf("Show all chars\r\n");
wim 1:0dab5786c471 469 wait(1);
wim 1:0dab5786c471 470 ROBOTDYN.cls();
wim 1:0dab5786c471 471
wim 1:0dab5786c471 472 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 1:0dab5786c471 473 ROBOTDYN.printf("%c", char(i));
wim 1:0dab5786c471 474 // wait(0.25);
wim 1:0dab5786c471 475 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 476 }
wim 1:0dab5786c471 477 pc.printf("Show all chars done\r\n");
wim 1:0dab5786c471 478 #endif
wim 1:0dab5786c471 479 break;
wim 1:0dab5786c471 480 }
wim 1:0dab5786c471 481 case '4': {
wim 1:0dab5786c471 482 #if(0)
wim 1:0dab5786c471 483 //test to show all digits (base is 10)
wim 1:0dab5786c471 484 pc.printf("Show all digits\r\n");
wim 1:0dab5786c471 485 wait(1);
wim 1:0dab5786c471 486 ROBOTDYN.cls();
wim 1:0dab5786c471 487
wim 1:0dab5786c471 488 for (int i=0; i<ROBOTDYN_NR_DIGITS; i++) {
wim 1:0dab5786c471 489
wim 1:0dab5786c471 490 for (int cnt=0; cnt<10; cnt++) {
wim 1:0dab5786c471 491 ROBOTDYN.locate(i);
wim 1:0dab5786c471 492 ROBOTDYN.printf("%0d", cnt);
wim 1:0dab5786c471 493
wim 1:0dab5786c471 494 // wait(0.5);
wim 1:0dab5786c471 495 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 496 }
wim 1:0dab5786c471 497 }
wim 1:0dab5786c471 498 pc.printf("\r\nShow all digits done\r\n");
wim 1:0dab5786c471 499 #endif
wim 1:0dab5786c471 500
wim 1:0dab5786c471 501 #if(1)
wim 1:0dab5786c471 502 //test to show all digits (base is 0x10)
wim 1:0dab5786c471 503 pc.printf("Show all hex digits\r\n");
wim 1:0dab5786c471 504 wait(1);
wim 1:0dab5786c471 505 ROBOTDYN.cls();
wim 1:0dab5786c471 506
wim 1:0dab5786c471 507 ROBOTDYN.printf("%06x", 0x01ABCD);
wim 1:0dab5786c471 508 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 509 ROBOTDYN.printf("%06x", 0x0);
wim 1:0dab5786c471 510
wim 1:0dab5786c471 511 for (int i=0; i<ROBOTDYN_NR_DIGITS; i++) {
wim 1:0dab5786c471 512
wim 1:0dab5786c471 513 for (int cnt=0; cnt<0x10; cnt++) {
wim 1:0dab5786c471 514 ROBOTDYN.locate(i);
wim 1:0dab5786c471 515 ROBOTDYN.printf("%0x", cnt);
wim 1:0dab5786c471 516
wim 1:0dab5786c471 517 // wait(0.5);
wim 1:0dab5786c471 518 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 519 }
wim 1:0dab5786c471 520 }
wim 1:0dab5786c471 521 pc.printf("\r\nShow all hex digits done\r\n");
wim 1:0dab5786c471 522 #endif
wim 1:0dab5786c471 523 break;
wim 1:0dab5786c471 524 }
wim 1:0dab5786c471 525 case '5': {
wim 1:0dab5786c471 526 #if(1)
wim 1:0dab5786c471 527 //test to show all icons
wim 1:0dab5786c471 528 pc.printf("Show all icons\r\n");
wim 1:0dab5786c471 529 ROBOTDYN.cls(true); // Also clear all Icons
wim 1:0dab5786c471 530
wim 1:0dab5786c471 531 float delay=0.1;
wim 1:0dab5786c471 532 // Icons on
wim 1:0dab5786c471 533 ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP1); wait(delay);
wim 1:0dab5786c471 534 ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP2); wait(delay);
wim 1:0dab5786c471 535 ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP3); wait(delay);
wim 1:0dab5786c471 536 ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP4); wait(delay);
wim 1:0dab5786c471 537 ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP5); wait(delay);
wim 1:0dab5786c471 538 ROBOTDYN.setIcon(TM1637_ROBOTDYN::DP6); wait(delay);
wim 1:0dab5786c471 539
wim 1:0dab5786c471 540 wait(delay);
wim 1:0dab5786c471 541
wim 1:0dab5786c471 542 // Icons off
wim 1:0dab5786c471 543 ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP6); wait(delay);
wim 1:0dab5786c471 544 ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP5); wait(delay);
wim 1:0dab5786c471 545 ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP4); wait(delay);
wim 1:0dab5786c471 546 ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP3); wait(delay);
wim 1:0dab5786c471 547 ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP2); wait(delay);
wim 1:0dab5786c471 548 ROBOTDYN.clrIcon(TM1637_ROBOTDYN::DP1); wait(delay);
wim 1:0dab5786c471 549
wim 1:0dab5786c471 550 // wait(1);
wim 1:0dab5786c471 551 // ROBOTDYN.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 552 pc.printf("Show all icons done\r\n");
wim 1:0dab5786c471 553 #endif
wim 1:0dab5786c471 554 break;
wim 1:0dab5786c471 555 }
wim 1:0dab5786c471 556
wim 1:0dab5786c471 557 case '6': {
wim 1:0dab5786c471 558 ROBOTDYN.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 559
wim 1:0dab5786c471 560 #if(1)
wim 1:0dab5786c471 561 ROBOTDYN.locate(0);
wim 1:0dab5786c471 562
wim 1:0dab5786c471 563 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 1:0dab5786c471 564 ROBOTDYN.locate(4);
wim 1:0dab5786c471 565 ROBOTDYN.printf("%02x", cnt);
wim 1:0dab5786c471 566 wait(0.2);
wim 1:0dab5786c471 567 }
wim 1:0dab5786c471 568 #endif
wim 1:0dab5786c471 569
wim 1:0dab5786c471 570 // ROBOTDYN.writeData(hello_str);
wim 1:0dab5786c471 571 // ROBOTDYN.printf("hello");
wim 1:0dab5786c471 572
wim 1:0dab5786c471 573 break;
wim 1:0dab5786c471 574 }
wim 1:0dab5786c471 575 case '7': {
wim 1:0dab5786c471 576 ROBOTDYN.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 577 ROBOTDYN.printf("%1.4f", -0.1234); // test decimal point display
wim 1:0dab5786c471 578 wait(0.5);
wim 1:0dab5786c471 579 ROBOTDYN.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 580 ROBOTDYN.printf("%3.3f", 123.456); // test decimal point display
wim 1:0dab5786c471 581 break;
wim 1:0dab5786c471 582 }
wim 1:0dab5786c471 583
wim 1:0dab5786c471 584 case '8': {
wim 1:0dab5786c471 585
wim 1:0dab5786c471 586 #if(1)
wim 1:0dab5786c471 587 //test to show KITT
wim 1:0dab5786c471 588 pc.printf("Show KITT scanner\r\n");
wim 1:0dab5786c471 589
wim 1:0dab5786c471 590
wim 1:0dab5786c471 591 // 012345
wim 1:0dab5786c471 592 const char KITT[][7] = {{"8 "},
wim 1:0dab5786c471 593 {"38 "},
wim 1:0dab5786c471 594 {" 38 "},
wim 1:0dab5786c471 595 {" 38 "},
wim 1:0dab5786c471 596 {" 38 "},
wim 1:0dab5786c471 597 {" 38"},
wim 1:0dab5786c471 598 {" 3"},
wim 1:0dab5786c471 599 {" "},
wim 1:0dab5786c471 600 {" 8"},
wim 1:0dab5786c471 601 {" 8E"},
wim 1:0dab5786c471 602 {" 8E "},
wim 1:0dab5786c471 603 {" 8E "},
wim 1:0dab5786c471 604 {" 8E "},
wim 1:0dab5786c471 605 {"8E "},
wim 1:0dab5786c471 606 {"E "},
wim 1:0dab5786c471 607 {" "}
wim 1:0dab5786c471 608 };
wim 1:0dab5786c471 609
wim 1:0dab5786c471 610 ROBOTDYN.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 611
wim 1:0dab5786c471 612 while (!pc.readable()) { // wait for key
wim 1:0dab5786c471 613 for (int i=0; i < (sizeof(KITT) / 7) ; i++) {
wim 1:0dab5786c471 614 ROBOTDYN.locate(0);
wim 1:0dab5786c471 615 ROBOTDYN.printf("%s", KITT[i]);
wim 1:0dab5786c471 616 wait(0.1);
wim 1:0dab5786c471 617 }
wim 1:0dab5786c471 618 }
wim 1:0dab5786c471 619 cmd = pc.getc(); // read key
wim 1:0dab5786c471 620 pc.printf("Show KITT done\r\n");
wim 1:0dab5786c471 621 #endif
wim 1:0dab5786c471 622 break;
wim 1:0dab5786c471 623 }
wim 1:0dab5786c471 624
wim 1:0dab5786c471 625
wim 1:0dab5786c471 626 case '9': {
wim 1:0dab5786c471 627 ROBOTDYN.cls(true); // clear all, including Icons
wim 1:0dab5786c471 628 break;
wim 1:0dab5786c471 629 }
wim 1:0dab5786c471 630
wim 1:0dab5786c471 631 case 'A': {
wim 1:0dab5786c471 632
wim 1:0dab5786c471 633 ROBOTDYN.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 634 // ROBOTDYN.writeData(bye_str);
wim 1:0dab5786c471 635 ROBOTDYN.printf("Bye");
wim 1:0dab5786c471 636
wim 1:0dab5786c471 637 break;
wim 1:0dab5786c471 638 }
wim 1:0dab5786c471 639
wim 0:672ec7a524fa 640 default : {
wim 0:672ec7a524fa 641 break;
wim 0:672ec7a524fa 642 }
wim 0:672ec7a524fa 643
wim 0:672ec7a524fa 644 } //switch cmd
wim 0:672ec7a524fa 645
wim 1:0dab5786c471 646 myled = !myled;
wim 1:0dab5786c471 647 wait(0.3);
wim 1:0dab5786c471 648 } //while
wim 1:0dab5786c471 649 }
wim 1:0dab5786c471 650 #endif
wim 1:0dab5786c471 651
wim 1:0dab5786c471 652
wim 1:0dab5786c471 653 #if (EYEWINK_TEST == 1)
wim 1:0dab5786c471 654 // EYEWINK TM1637 6 Digit display with 5 keys test
wim 1:0dab5786c471 655 #include "Font_7Seg.h"
wim 1:0dab5786c471 656
wim 1:0dab5786c471 657 Serial pc(USBTX, USBRX);
wim 1:0dab5786c471 658 DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
wim 1:0dab5786c471 659
wim 1:0dab5786c471 660 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments)
wim 1:0dab5786c471 661 TM1637::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
wim 1:0dab5786c471 662 TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
wim 1:0dab5786c471 663 TM1637::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00, 0x00, 0x00};
wim 1:0dab5786c471 664 TM1637::DisplayData_t bye_str = {C7_B, C7_Y, C7_E, 0x00, 0x00, 0x00};
wim 1:0dab5786c471 665
wim 1:0dab5786c471 666 // KeyData_t size is 1 bytes
wim 1:0dab5786c471 667 TM1637::KeyData_t keydata;
wim 1:0dab5786c471 668
wim 1:0dab5786c471 669 //TM1637_EYEWINK declaration
wim 1:0dab5786c471 670 //New Constructor
wim 1:0dab5786c471 671 TM1637_EYEWINK EYEWINK(p6, p7); //LPC1768
wim 1:0dab5786c471 672 //TM1637_EYEWINK EYEWINK(D9, D10); //F401
wim 1:0dab5786c471 673
wim 1:0dab5786c471 674 void show_menu() {
wim 1:0dab5786c471 675 // pc.printf("0: Exit\n\r");
wim 1:0dab5786c471 676 pc.printf("1: All\n\r");
wim 1:0dab5786c471 677 pc.printf("2: Show all segs\r\n");
wim 1:0dab5786c471 678 pc.printf("3: Show all chars\n\r");
wim 1:0dab5786c471 679 pc.printf("4: Show all digits\n\r");
wim 1:0dab5786c471 680 pc.printf("5: Show all icons\n\r");
wim 1:0dab5786c471 681 pc.printf("6: Counter\n\r");
wim 1:0dab5786c471 682 pc.printf("7: Floats\n\r");
wim 1:0dab5786c471 683 pc.printf("8: Kitt\n\r");
wim 1:0dab5786c471 684 pc.printf("9: Cls\n\r");
wim 1:0dab5786c471 685 pc.printf("A: Bye\n\r");
wim 1:0dab5786c471 686 pc.printf("k: Key\n\r");
wim 1:0dab5786c471 687 }
wim 1:0dab5786c471 688
wim 1:0dab5786c471 689
wim 1:0dab5786c471 690 char cmd, bits;
wim 1:0dab5786c471 691 int main() {
wim 1:0dab5786c471 692
wim 1:0dab5786c471 693 pc.printf("Hello World\r\n"); //
wim 1:0dab5786c471 694
wim 1:0dab5786c471 695 EYEWINK.cls();
wim 1:0dab5786c471 696 EYEWINK.writeData(all_str);
wim 1:0dab5786c471 697 wait(2);
wim 1:0dab5786c471 698 EYEWINK.setBrightness(TM1637_BRT3);
wim 1:0dab5786c471 699 wait(1);
wim 1:0dab5786c471 700 EYEWINK.setBrightness(TM1637_BRT0);
wim 1:0dab5786c471 701 wait(1);
wim 1:0dab5786c471 702 EYEWINK.setBrightness(TM1637_BRT4);
wim 1:0dab5786c471 703
wim 1:0dab5786c471 704 wait(1);
wim 1:0dab5786c471 705 EYEWINK.cls(true);
wim 1:0dab5786c471 706 EYEWINK.writeData(hello_str);
wim 1:0dab5786c471 707
wim 1:0dab5786c471 708 char cmd2 = '0';
wim 1:0dab5786c471 709 while (1) {
wim 1:0dab5786c471 710
wim 1:0dab5786c471 711 show_menu();
wim 1:0dab5786c471 712 cmd2 = pc.getc();
wim 1:0dab5786c471 713
wim 1:0dab5786c471 714 switch (cmd2) {
wim 1:0dab5786c471 715 case '1' : {
wim 1:0dab5786c471 716 pc.printf("all\r\n");
wim 1:0dab5786c471 717 EYEWINK.cls();
wim 1:0dab5786c471 718 EYEWINK.writeData(all_str);
wim 1:0dab5786c471 719 break;
wim 1:0dab5786c471 720 }
wim 1:0dab5786c471 721
wim 1:0dab5786c471 722 case '2' : {
wim 1:0dab5786c471 723 #if(1)
wim 1:0dab5786c471 724 //test to show all segs
wim 1:0dab5786c471 725 pc.printf("Show all segs\r\n");
wim 1:0dab5786c471 726 wait(1);
wim 1:0dab5786c471 727 EYEWINK.cls();
wim 1:0dab5786c471 728
wim 1:0dab5786c471 729 for (int i=0; i<TM1637_DISPLAY_MEM; i++) {
wim 1:0dab5786c471 730 for (int bit=0; bit<8; bit++) {
wim 1:0dab5786c471 731 EYEWINK.cls();
wim 1:0dab5786c471 732
wim 1:0dab5786c471 733 bits = 0x01 << bit;
wim 1:0dab5786c471 734 EYEWINK.writeData(bits, i);
wim 1:0dab5786c471 735
wim 1:0dab5786c471 736 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 1:0dab5786c471 737 // wait(0.5);
wim 1:0dab5786c471 738 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 739 }
wim 1:0dab5786c471 740 }
wim 1:0dab5786c471 741 pc.printf("\r\nShow all segs done\r\n");
wim 1:0dab5786c471 742 #endif
wim 1:0dab5786c471 743 break;
wim 1:0dab5786c471 744 }
wim 1:0dab5786c471 745
wim 1:0dab5786c471 746 case '3' : {
wim 1:0dab5786c471 747
wim 1:0dab5786c471 748 #if(1)
wim 1:0dab5786c471 749 //test to show all chars
wim 1:0dab5786c471 750 pc.printf("Show all alpha chars\r\n");
wim 1:0dab5786c471 751 wait(1);
wim 1:0dab5786c471 752 EYEWINK.cls();
wim 1:0dab5786c471 753
wim 1:0dab5786c471 754 for (int i=0; i<26; i++) {
wim 1:0dab5786c471 755 EYEWINK.printf("%c", char(i + 'A'));
wim 1:0dab5786c471 756 // EYEWINK.printf("%c", char(i + 'a'));
wim 1:0dab5786c471 757 wait(0.25);
wim 1:0dab5786c471 758 }
wim 1:0dab5786c471 759 pc.printf("Show all alpha chars done\r\n");
wim 1:0dab5786c471 760 #endif
wim 1:0dab5786c471 761
wim 1:0dab5786c471 762 #if(0)
wim 1:0dab5786c471 763 //test to show all chars
wim 1:0dab5786c471 764 pc.printf("Show all chars\r\n");
wim 1:0dab5786c471 765 wait(1);
wim 1:0dab5786c471 766 EYEWINK.cls();
wim 0:672ec7a524fa 767
wim 1:0dab5786c471 768 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 1:0dab5786c471 769 EYEWINK.printf("%c", char(i));
wim 1:0dab5786c471 770 // wait(0.25);
wim 1:0dab5786c471 771 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 772 }
wim 1:0dab5786c471 773 pc.printf("Show all chars done\r\n");
wim 1:0dab5786c471 774 #endif
wim 1:0dab5786c471 775 break;
wim 1:0dab5786c471 776 }
wim 1:0dab5786c471 777 case '4': {
wim 1:0dab5786c471 778 #if(0)
wim 1:0dab5786c471 779 //test to show all digits (base is 10)
wim 1:0dab5786c471 780 pc.printf("Show all digits\r\n");
wim 1:0dab5786c471 781 wait(1);
wim 1:0dab5786c471 782 EYEWINK.cls();
wim 1:0dab5786c471 783
wim 1:0dab5786c471 784 for (int i=0; i<EYEWINK_NR_DIGITS; i++) {
wim 1:0dab5786c471 785
wim 1:0dab5786c471 786 for (int cnt=0; cnt<10; cnt++) {
wim 1:0dab5786c471 787 EYEWINK.locate(i);
wim 1:0dab5786c471 788 EYEWINK.printf("%0d", cnt);
wim 1:0dab5786c471 789
wim 1:0dab5786c471 790 // wait(0.5);
wim 1:0dab5786c471 791 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 792 }
wim 1:0dab5786c471 793 }
wim 1:0dab5786c471 794 pc.printf("\r\nShow all digits done\r\n");
wim 1:0dab5786c471 795 #endif
wim 1:0dab5786c471 796
wim 1:0dab5786c471 797 #if(1)
wim 1:0dab5786c471 798 //test to show all digits (base is 0x10)
wim 1:0dab5786c471 799 pc.printf("Show all hex digits\r\n");
wim 1:0dab5786c471 800 wait(1);
wim 1:0dab5786c471 801 EYEWINK.cls();
wim 1:0dab5786c471 802
wim 1:0dab5786c471 803 EYEWINK.printf("%06x", 0x01ABCD);
wim 1:0dab5786c471 804 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 805 EYEWINK.printf("%06x", 0x0);
wim 1:0dab5786c471 806
wim 1:0dab5786c471 807 for (int i=0; i<EYEWINK_NR_DIGITS; i++) {
wim 1:0dab5786c471 808
wim 1:0dab5786c471 809 for (int cnt=0; cnt<0x10; cnt++) {
wim 1:0dab5786c471 810 EYEWINK.locate(i);
wim 1:0dab5786c471 811 EYEWINK.printf("%0x", cnt);
wim 1:0dab5786c471 812
wim 1:0dab5786c471 813 // wait(0.5);
wim 1:0dab5786c471 814 cmd = pc.getc(); // wait for key
wim 1:0dab5786c471 815 }
wim 1:0dab5786c471 816 }
wim 1:0dab5786c471 817 pc.printf("\r\nShow all hex digits done\r\n");
wim 1:0dab5786c471 818 #endif
wim 1:0dab5786c471 819 break;
wim 1:0dab5786c471 820 }
wim 1:0dab5786c471 821 case '5': {
wim 1:0dab5786c471 822 #if(1)
wim 1:0dab5786c471 823 //test to show all icons
wim 1:0dab5786c471 824 pc.printf("Show all icons\r\n");
wim 1:0dab5786c471 825 EYEWINK.cls(true); // Also clear all Icons
wim 1:0dab5786c471 826
wim 1:0dab5786c471 827 float delay=0.1;
wim 1:0dab5786c471 828 // Icons on
wim 1:0dab5786c471 829 EYEWINK.setIcon(TM1637_EYEWINK::DP1); wait(delay);
wim 1:0dab5786c471 830 EYEWINK.setIcon(TM1637_EYEWINK::DP2); wait(delay);
wim 1:0dab5786c471 831 EYEWINK.setIcon(TM1637_EYEWINK::DP3); wait(delay);
wim 1:0dab5786c471 832 EYEWINK.setIcon(TM1637_EYEWINK::DP4); wait(delay);
wim 1:0dab5786c471 833 EYEWINK.setIcon(TM1637_EYEWINK::DP5); wait(delay);
wim 1:0dab5786c471 834 EYEWINK.setIcon(TM1637_EYEWINK::DP6); wait(delay);
wim 1:0dab5786c471 835
wim 1:0dab5786c471 836 wait(delay);
wim 1:0dab5786c471 837
wim 1:0dab5786c471 838 // Icons off
wim 1:0dab5786c471 839 EYEWINK.clrIcon(TM1637_EYEWINK::DP6); wait(delay);
wim 1:0dab5786c471 840 EYEWINK.clrIcon(TM1637_EYEWINK::DP5); wait(delay);
wim 1:0dab5786c471 841 EYEWINK.clrIcon(TM1637_EYEWINK::DP4); wait(delay);
wim 1:0dab5786c471 842 EYEWINK.clrIcon(TM1637_EYEWINK::DP3); wait(delay);
wim 1:0dab5786c471 843 EYEWINK.clrIcon(TM1637_EYEWINK::DP2); wait(delay);
wim 1:0dab5786c471 844 EYEWINK.clrIcon(TM1637_EYEWINK::DP1); wait(delay);
wim 1:0dab5786c471 845
wim 1:0dab5786c471 846 // wait(1);
wim 1:0dab5786c471 847 // EYEWINK.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 848 pc.printf("Show all icons done\r\n");
wim 1:0dab5786c471 849 #endif
wim 1:0dab5786c471 850 break;
wim 1:0dab5786c471 851 }
wim 1:0dab5786c471 852
wim 1:0dab5786c471 853 case '6': {
wim 1:0dab5786c471 854 EYEWINK.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 855
wim 1:0dab5786c471 856 #if(1)
wim 1:0dab5786c471 857 EYEWINK.locate(0);
wim 1:0dab5786c471 858
wim 1:0dab5786c471 859 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 1:0dab5786c471 860 EYEWINK.locate(4);
wim 1:0dab5786c471 861 EYEWINK.printf("%02x", cnt);
wim 1:0dab5786c471 862 wait(0.2);
wim 1:0dab5786c471 863 }
wim 1:0dab5786c471 864 #endif
wim 1:0dab5786c471 865
wim 1:0dab5786c471 866 // EYEWINK.writeData(hello_str);
wim 1:0dab5786c471 867 // EYEWINK.printf("hello");
wim 1:0dab5786c471 868
wim 1:0dab5786c471 869 break;
wim 1:0dab5786c471 870 }
wim 1:0dab5786c471 871 case '7': {
wim 1:0dab5786c471 872 EYEWINK.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 873 EYEWINK.printf("%1.4f", -0.1234); // test decimal point display
wim 1:0dab5786c471 874 wait(0.5);
wim 1:0dab5786c471 875 EYEWINK.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 876 EYEWINK.printf("%3.3f", 123.456); // test decimal point display
wim 1:0dab5786c471 877 break;
wim 1:0dab5786c471 878 }
wim 1:0dab5786c471 879
wim 1:0dab5786c471 880 case '8': {
wim 1:0dab5786c471 881
wim 1:0dab5786c471 882 #if(1)
wim 1:0dab5786c471 883 //test to show KITT
wim 1:0dab5786c471 884 pc.printf("Show KITT scanner\r\n");
wim 1:0dab5786c471 885
wim 1:0dab5786c471 886
wim 1:0dab5786c471 887 // 012345
wim 1:0dab5786c471 888 const char KITT[][7] = {{"8 "},
wim 1:0dab5786c471 889 {"38 "},
wim 1:0dab5786c471 890 {" 38 "},
wim 1:0dab5786c471 891 {" 38 "},
wim 1:0dab5786c471 892 {" 38 "},
wim 1:0dab5786c471 893 {" 38"},
wim 1:0dab5786c471 894 {" 3"},
wim 1:0dab5786c471 895 {" "},
wim 1:0dab5786c471 896 {" 8"},
wim 1:0dab5786c471 897 {" 8E"},
wim 1:0dab5786c471 898 {" 8E "},
wim 1:0dab5786c471 899 {" 8E "},
wim 1:0dab5786c471 900 {" 8E "},
wim 1:0dab5786c471 901 {"8E "},
wim 1:0dab5786c471 902 {"E "},
wim 1:0dab5786c471 903 {" "}
wim 1:0dab5786c471 904 };
wim 1:0dab5786c471 905
wim 1:0dab5786c471 906 EYEWINK.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 907
wim 1:0dab5786c471 908 while (!pc.readable()) { // wait for key
wim 1:0dab5786c471 909 for (int i=0; i < (sizeof(KITT) / 7) ; i++) {
wim 1:0dab5786c471 910 EYEWINK.locate(0);
wim 1:0dab5786c471 911 EYEWINK.printf("%s", KITT[i]);
wim 1:0dab5786c471 912 wait(0.1);
wim 1:0dab5786c471 913 }
wim 1:0dab5786c471 914 }
wim 1:0dab5786c471 915 cmd = pc.getc(); // read key
wim 1:0dab5786c471 916 pc.printf("Show KITT done\r\n");
wim 1:0dab5786c471 917 #endif
wim 1:0dab5786c471 918 break;
wim 0:672ec7a524fa 919 }
wim 0:672ec7a524fa 920
wim 1:0dab5786c471 921
wim 1:0dab5786c471 922 case '9': {
wim 1:0dab5786c471 923 EYEWINK.cls(true); // clear all, including Icons
wim 1:0dab5786c471 924 break;
wim 1:0dab5786c471 925 }
wim 1:0dab5786c471 926
wim 1:0dab5786c471 927 case 'A': {
wim 1:0dab5786c471 928
wim 1:0dab5786c471 929 EYEWINK.cls(); // clear all, preserve Icons
wim 1:0dab5786c471 930 // EYEWINK.writeData(bye_str);
wim 1:0dab5786c471 931 EYEWINK.printf("Bye");
wim 1:0dab5786c471 932
wim 1:0dab5786c471 933 break;
wim 1:0dab5786c471 934 }
wim 1:0dab5786c471 935
wim 1:0dab5786c471 936 case 'k': {
wim 1:0dab5786c471 937 if (EYEWINK.getKeys(&keydata)) {
wim 1:0dab5786c471 938 pc.printf("Keydata = 0x%02X\r\n", keydata);
wim 1:0dab5786c471 939 }
wim 1:0dab5786c471 940 break;
wim 1:0dab5786c471 941 }
wim 1:0dab5786c471 942
wim 1:0dab5786c471 943 default : {
wim 1:0dab5786c471 944 break;
wim 1:0dab5786c471 945 }
wim 1:0dab5786c471 946
wim 1:0dab5786c471 947 } //switch cmd
wim 1:0dab5786c471 948
wim 1:0dab5786c471 949 #if(1)
wim 1:0dab5786c471 950 // Check and read keydata
wim 1:0dab5786c471 951 if (EYEWINK.getKeys(&keydata)) {
wim 1:0dab5786c471 952 pc.printf("Keydata = 0x%02X\r\n", keydata);
wim 1:0dab5786c471 953
wim 1:0dab5786c471 954 if (keydata == TM1637_SW1_BIT) { //sw1 0xEF
wim 1:0dab5786c471 955 EYEWINK.cls();
wim 1:0dab5786c471 956 EYEWINK.printf("----01");
wim 1:0dab5786c471 957 }
wim 1:0dab5786c471 958
wim 1:0dab5786c471 959 if (keydata == TM1637_SW2_BIT) { //sw2 0x6F
wim 1:0dab5786c471 960 EYEWINK.cls();
wim 1:0dab5786c471 961 EYEWINK.printf("----02");
wim 1:0dab5786c471 962 }
wim 1:0dab5786c471 963
wim 1:0dab5786c471 964 if (keydata == TM1637_SW3_BIT) { //sw3 0xAF
wim 1:0dab5786c471 965 EYEWINK.cls();
wim 1:0dab5786c471 966 EYEWINK.printf("----03");
wim 1:0dab5786c471 967 }
wim 1:0dab5786c471 968
wim 1:0dab5786c471 969 if (keydata == TM1637_SW4_BIT) { //sw4 0x2F
wim 1:0dab5786c471 970 EYEWINK.cls();
wim 1:0dab5786c471 971 EYEWINK.printf("----04");
wim 1:0dab5786c471 972 }
wim 1:0dab5786c471 973
wim 1:0dab5786c471 974 if (keydata == TM1637_SW5_BIT) { //sw5 0xCF
wim 1:0dab5786c471 975 EYEWINK.cls();
wim 1:0dab5786c471 976 EYEWINK.printf("----05");
wim 1:0dab5786c471 977 }
wim 1:0dab5786c471 978
wim 1:0dab5786c471 979 if (keydata == TM1637_SW6_BIT) { //sw6 0x4F
wim 1:0dab5786c471 980 EYEWINK.cls();
wim 1:0dab5786c471 981 EYEWINK.printf("----06");
wim 0:672ec7a524fa 982 }
wim 0:672ec7a524fa 983
wim 0:672ec7a524fa 984 } // Check keydata
wim 1:0dab5786c471 985 #endif
wim 1:0dab5786c471 986
wim 0:672ec7a524fa 987
wim 0:672ec7a524fa 988 myled = !myled;
wim 0:672ec7a524fa 989 wait(0.3);
wim 0:672ec7a524fa 990 } //while
wim 0:672ec7a524fa 991 }
wim 0:672ec7a524fa 992 #endif
wim 0:672ec7a524fa 993
wim 0:672ec7a524fa 994
wim 1:0dab5786c471 995
wim 0:672ec7a524fa 996 #if (TM1637_TEST == 1)
wim 0:672ec7a524fa 997 // Direct TM1637 Test
wim 0:672ec7a524fa 998
wim 0:672ec7a524fa 999 Serial pc(USBTX, USBRX);
wim 0:672ec7a524fa 1000 DigitalOut myled(LED1);
wim 0:672ec7a524fa 1001
wim 0:672ec7a524fa 1002 // DisplayData_t size is 6 bytes (6 Grids @ 8 Segments)
wim 0:672ec7a524fa 1003 TM1637::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
wim 0:672ec7a524fa 1004 TM1637::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
wim 0:672ec7a524fa 1005
wim 0:672ec7a524fa 1006 // KeyData_t size is 1 bytes
wim 0:672ec7a524fa 1007 TM1637::KeyData_t keydata;
wim 0:672ec7a524fa 1008
wim 0:672ec7a524fa 1009 // TM1637 declaration
wim 1:0dab5786c471 1010 //Old Constructor
wim 1:0dab5786c471 1011 //TM1637 TM1637(p5,p6,p7); //LPC1768
wim 1:0dab5786c471 1012 //New Constructor
wim 1:0dab5786c471 1013 TM1637 TM1637(p6,p7); //LPC1768
wim 0:672ec7a524fa 1014
wim 0:672ec7a524fa 1015 void show_menu() {
wim 0:672ec7a524fa 1016 // pc.printf("0: Exit\n\r");
wim 0:672ec7a524fa 1017 pc.printf("1: All\n\r");
wim 0:672ec7a524fa 1018 pc.printf("2: Cls\n\r");
wim 0:672ec7a524fa 1019 pc.printf("3: Show all segs\r\n");
wim 0:672ec7a524fa 1020 }
wim 0:672ec7a524fa 1021
wim 0:672ec7a524fa 1022
wim 0:672ec7a524fa 1023 char cmd, bits;
wim 0:672ec7a524fa 1024 int main() {
wim 0:672ec7a524fa 1025
wim 0:672ec7a524fa 1026 pc.printf("Hello World\r\n"); //
wim 0:672ec7a524fa 1027
wim 0:672ec7a524fa 1028 TM1637.cls();
wim 0:672ec7a524fa 1029 TM1637.writeData(all_str);
wim 0:672ec7a524fa 1030 wait(2);
wim 0:672ec7a524fa 1031 TM1637.setBrightness(TM1637_BRT3);
wim 0:672ec7a524fa 1032 wait(1);
wim 0:672ec7a524fa 1033 TM1637.setBrightness(TM1637_BRT0);
wim 0:672ec7a524fa 1034 wait(1);
wim 0:672ec7a524fa 1035 TM1637.setBrightness(TM1637_BRT4);
wim 0:672ec7a524fa 1036
wim 0:672ec7a524fa 1037 while (1) {
wim 0:672ec7a524fa 1038
wim 0:672ec7a524fa 1039 cmd = pc.getc();
wim 0:672ec7a524fa 1040
wim 0:672ec7a524fa 1041 switch (cmd) {
wim 0:672ec7a524fa 1042 case '1' :
wim 0:672ec7a524fa 1043 TM1637.cls();
wim 0:672ec7a524fa 1044 TM1637.writeData(all_str);
wim 0:672ec7a524fa 1045 break;
wim 0:672ec7a524fa 1046
wim 0:672ec7a524fa 1047 case '2' :
wim 0:672ec7a524fa 1048 TM1637.cls();
wim 0:672ec7a524fa 1049 TM1637.writeData(cls_str);
wim 0:672ec7a524fa 1050 break;
wim 0:672ec7a524fa 1051
wim 0:672ec7a524fa 1052 case '3' :
wim 0:672ec7a524fa 1053
wim 0:672ec7a524fa 1054 #if(1)
wim 0:672ec7a524fa 1055 //test to show all segs
wim 0:672ec7a524fa 1056 pc.printf("Show all segs\r\n");
wim 0:672ec7a524fa 1057 wait(1);
wim 0:672ec7a524fa 1058 TM1637.cls();
wim 0:672ec7a524fa 1059
wim 0:672ec7a524fa 1060 for (int i=0; i<TM1637_DISPLAY_MEM; i++) {
wim 0:672ec7a524fa 1061 for (int bit=0; bit<8; bit++) {
wim 0:672ec7a524fa 1062 TM1637.cls();
wim 0:672ec7a524fa 1063
wim 0:672ec7a524fa 1064 bits = 0x01 << bit;
wim 0:672ec7a524fa 1065 TM1637.writeData(bits, i);
wim 0:672ec7a524fa 1066
wim 0:672ec7a524fa 1067 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:672ec7a524fa 1068 // wait(0.5);
wim 0:672ec7a524fa 1069 cmd = pc.getc(); // wait for key
wim 0:672ec7a524fa 1070 }
wim 0:672ec7a524fa 1071 }
wim 0:672ec7a524fa 1072 pc.printf("Show all segs done\r\n");
wim 0:672ec7a524fa 1073 #endif
wim 0:672ec7a524fa 1074 break;
wim 0:672ec7a524fa 1075
wim 0:672ec7a524fa 1076 default :
wim 0:672ec7a524fa 1077 break;
wim 0:672ec7a524fa 1078
wim 0:672ec7a524fa 1079 } //switch cmd
wim 0:672ec7a524fa 1080
wim 0:672ec7a524fa 1081 // Check and read keydata
wim 0:672ec7a524fa 1082 if (TM1637.getKeys(&keydata)) {
wim 0:672ec7a524fa 1083 pc.printf("Keydata = 0x%02x\r\n", keydata);
wim 0:672ec7a524fa 1084
wim 0:672ec7a524fa 1085 if (keydata == TM1637_SW9_BIT) { //sw9
wim 0:672ec7a524fa 1086 TM1637.cls();
wim 0:672ec7a524fa 1087 TM1637.writeData(0xFF, 1);
wim 0:672ec7a524fa 1088 TM1637.writeData(0xFF, 2);
wim 0:672ec7a524fa 1089 }
wim 0:672ec7a524fa 1090 } // Check keydata
wim 0:672ec7a524fa 1091
wim 0:672ec7a524fa 1092 myled = !myled;
wim 0:672ec7a524fa 1093 wait(0.3);
wim 0:672ec7a524fa 1094 } //while
wim 0:672ec7a524fa 1095 }
wim 0:672ec7a524fa 1096 #endif