Test program for TM1650 LED controller library (32 LEDs max, 28 keys max)

Dependencies:   TM1650 mbed

See here for more info.

Committer:
wim
Date:
Tue Oct 10 18:39:45 2017 +0000
Revision:
0:00c4c58db8e9
Test program for TM1650 LED controller library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:00c4c58db8e9 1 /* mbed TM1650 Test program, for TM1650 LED controller
wim 0:00c4c58db8e9 2 * Copyright (c) 2017, v01: WH, Initial version
wim 0:00c4c58db8e9 3 *
wim 0:00c4c58db8e9 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:00c4c58db8e9 5 * of this software and associated documentation files (the "Software"), to deal
wim 0:00c4c58db8e9 6 * in the Software without restriction, including without limitation the rights
wim 0:00c4c58db8e9 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:00c4c58db8e9 8 * copies of the Software, and to permit persons to whom the Software is
wim 0:00c4c58db8e9 9 * furnished to do so, subject to the following conditions:
wim 0:00c4c58db8e9 10 *
wim 0:00c4c58db8e9 11 * The above copyright notice and this permission notice shall be included in
wim 0:00c4c58db8e9 12 * all copies or substantial portions of the Software.
wim 0:00c4c58db8e9 13 *
wim 0:00c4c58db8e9 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:00c4c58db8e9 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:00c4c58db8e9 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:00c4c58db8e9 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:00c4c58db8e9 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:00c4c58db8e9 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:00c4c58db8e9 20 * THE SOFTWARE.
wim 0:00c4c58db8e9 21 */
wim 0:00c4c58db8e9 22 #include "mbed.h"
wim 0:00c4c58db8e9 23 #include "TM1650.h"
wim 0:00c4c58db8e9 24
wim 0:00c4c58db8e9 25 #if (MEIBAI_TEST == 1)
wim 0:00c4c58db8e9 26 // MEIBAI TM1650 4 Digit display test
wim 0:00c4c58db8e9 27 #include "Font_7Seg.h"
wim 0:00c4c58db8e9 28
wim 0:00c4c58db8e9 29 Serial pc(USBTX, USBRX);
wim 0:00c4c58db8e9 30 DigitalOut myled(LED1); //NOTE: On F401 LED1 is Pin D13, which is SCK!
wim 0:00c4c58db8e9 31
wim 0:00c4c58db8e9 32 // DisplayData_t size is 4 bytes (4 Grids @ 8 Segments)
wim 0:00c4c58db8e9 33 TM1650::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF};
wim 0:00c4c58db8e9 34 TM1650::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00};
wim 0:00c4c58db8e9 35 TM1650::DisplayData_t hello_str = {C7_H, C7_I, 0x00, 0x00};
wim 0:00c4c58db8e9 36 TM1650::DisplayData_t bye_str = {C7_B, C7_Y, C7_E, 0x00};
wim 0:00c4c58db8e9 37
wim 0:00c4c58db8e9 38 // KeyData_t size is 1 bytes
wim 0:00c4c58db8e9 39 TM1650::KeyData_t keydata;
wim 0:00c4c58db8e9 40
wim 0:00c4c58db8e9 41 //TM1650_MEIBAI declaration
wim 0:00c4c58db8e9 42 TM1650_MEIBAI MEIBAI(p6, p7); //LPC1768
wim 0:00c4c58db8e9 43 //TM1650_MEIBAI MEIBAI(D9, D10); //F401
wim 0:00c4c58db8e9 44
wim 0:00c4c58db8e9 45 void show_menu() {
wim 0:00c4c58db8e9 46 // pc.printf("0: Exit\n\r");
wim 0:00c4c58db8e9 47 pc.printf("1: All\n\r");
wim 0:00c4c58db8e9 48 pc.printf("2: Show all segs\r\n");
wim 0:00c4c58db8e9 49 pc.printf("3: Show all chars\n\r");
wim 0:00c4c58db8e9 50 pc.printf("4: Show all digits\n\r");
wim 0:00c4c58db8e9 51 pc.printf("5: Show all icons\n\r");
wim 0:00c4c58db8e9 52 pc.printf("6: Counter\n\r");
wim 0:00c4c58db8e9 53 pc.printf("7: Floats\n\r");
wim 0:00c4c58db8e9 54 pc.printf("8: Kitt\n\r");
wim 0:00c4c58db8e9 55 pc.printf("9: Cls\n\r");
wim 0:00c4c58db8e9 56 pc.printf("A: Bye\n\r");
wim 0:00c4c58db8e9 57 pc.printf("k: Key\n\r");
wim 0:00c4c58db8e9 58 pc.printf("u: UDC\n\r");
wim 0:00c4c58db8e9 59 }
wim 0:00c4c58db8e9 60
wim 0:00c4c58db8e9 61
wim 0:00c4c58db8e9 62 char cmd, bits;
wim 0:00c4c58db8e9 63 int main() {
wim 0:00c4c58db8e9 64
wim 0:00c4c58db8e9 65 pc.printf("Hello World\r\n"); //
wim 0:00c4c58db8e9 66
wim 0:00c4c58db8e9 67 MEIBAI.cls();
wim 0:00c4c58db8e9 68 MEIBAI.writeData(all_str);
wim 0:00c4c58db8e9 69 wait(2);
wim 0:00c4c58db8e9 70 MEIBAI.setBrightness(TM1650_BRT3);
wim 0:00c4c58db8e9 71 wait(1);
wim 0:00c4c58db8e9 72 MEIBAI.setBrightness(TM1650_BRT0);
wim 0:00c4c58db8e9 73 wait(1);
wim 0:00c4c58db8e9 74 MEIBAI.setBrightness(TM1650_BRT4);
wim 0:00c4c58db8e9 75
wim 0:00c4c58db8e9 76 wait(1);
wim 0:00c4c58db8e9 77 MEIBAI.cls(true);
wim 0:00c4c58db8e9 78 MEIBAI.writeData(hello_str);
wim 0:00c4c58db8e9 79
wim 0:00c4c58db8e9 80 MEIBAI.setUDC(0, S7_A | S7_B | S7_F | S7_G); // Degree symbol
wim 0:00c4c58db8e9 81
wim 0:00c4c58db8e9 82 char cmd2 = '0';
wim 0:00c4c58db8e9 83 while (1) {
wim 0:00c4c58db8e9 84
wim 0:00c4c58db8e9 85 show_menu();
wim 0:00c4c58db8e9 86 cmd2 = pc.getc();
wim 0:00c4c58db8e9 87
wim 0:00c4c58db8e9 88 switch (cmd2) {
wim 0:00c4c58db8e9 89 case '1' : {
wim 0:00c4c58db8e9 90 pc.printf("all\r\n");
wim 0:00c4c58db8e9 91 MEIBAI.cls();
wim 0:00c4c58db8e9 92 MEIBAI.writeData(all_str);
wim 0:00c4c58db8e9 93 break;
wim 0:00c4c58db8e9 94 }
wim 0:00c4c58db8e9 95
wim 0:00c4c58db8e9 96 case '2' : {
wim 0:00c4c58db8e9 97 #if(1)
wim 0:00c4c58db8e9 98 //test to show all segs
wim 0:00c4c58db8e9 99 pc.printf("Show all segs\r\n");
wim 0:00c4c58db8e9 100 wait(1);
wim 0:00c4c58db8e9 101 MEIBAI.cls();
wim 0:00c4c58db8e9 102
wim 0:00c4c58db8e9 103 for (int i=0; i<TM1650_DISPLAY_MEM; i++) {
wim 0:00c4c58db8e9 104 for (int bit=0; bit<8; bit++) {
wim 0:00c4c58db8e9 105 MEIBAI.cls();
wim 0:00c4c58db8e9 106
wim 0:00c4c58db8e9 107 bits = 0x01 << bit;
wim 0:00c4c58db8e9 108 MEIBAI.writeData(bits, i);
wim 0:00c4c58db8e9 109
wim 0:00c4c58db8e9 110 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:00c4c58db8e9 111 // wait(0.5);
wim 0:00c4c58db8e9 112 cmd = pc.getc(); // wait for key
wim 0:00c4c58db8e9 113 }
wim 0:00c4c58db8e9 114 }
wim 0:00c4c58db8e9 115 pc.printf("\r\nShow all segs done\r\n");
wim 0:00c4c58db8e9 116 #endif
wim 0:00c4c58db8e9 117 break;
wim 0:00c4c58db8e9 118 }
wim 0:00c4c58db8e9 119
wim 0:00c4c58db8e9 120 case '3' : {
wim 0:00c4c58db8e9 121
wim 0:00c4c58db8e9 122 #if(1)
wim 0:00c4c58db8e9 123 //test to show all chars
wim 0:00c4c58db8e9 124 pc.printf("Show all alpha chars\r\n");
wim 0:00c4c58db8e9 125 wait(1);
wim 0:00c4c58db8e9 126 MEIBAI.cls();
wim 0:00c4c58db8e9 127
wim 0:00c4c58db8e9 128 for (int i=0; i<26; i++) {
wim 0:00c4c58db8e9 129 MEIBAI.printf("%c", char(i + 'A'));
wim 0:00c4c58db8e9 130 // MEIBAI.printf("%c", char(i + 'a'));
wim 0:00c4c58db8e9 131 wait(0.25);
wim 0:00c4c58db8e9 132 }
wim 0:00c4c58db8e9 133 pc.printf("Show all alpha chars done\r\n");
wim 0:00c4c58db8e9 134 #endif
wim 0:00c4c58db8e9 135
wim 0:00c4c58db8e9 136 #if(0)
wim 0:00c4c58db8e9 137 //test to show all chars
wim 0:00c4c58db8e9 138 pc.printf("Show all chars\r\n");
wim 0:00c4c58db8e9 139 wait(1);
wim 0:00c4c58db8e9 140 MEIBAI.cls();
wim 0:00c4c58db8e9 141
wim 0:00c4c58db8e9 142 for (int i=FONT_7S_START; i<FONT_7S_END; i++) {
wim 0:00c4c58db8e9 143 MEIBAI.printf("%c", char(i));
wim 0:00c4c58db8e9 144 // wait(0.25);
wim 0:00c4c58db8e9 145 cmd = pc.getc(); // wait for key
wim 0:00c4c58db8e9 146 }
wim 0:00c4c58db8e9 147 pc.printf("Show all chars done\r\n");
wim 0:00c4c58db8e9 148 #endif
wim 0:00c4c58db8e9 149 break;
wim 0:00c4c58db8e9 150 }
wim 0:00c4c58db8e9 151 case '4': {
wim 0:00c4c58db8e9 152 #if(0)
wim 0:00c4c58db8e9 153 //test to show all digits (base is 10)
wim 0:00c4c58db8e9 154 pc.printf("Show all digits\r\n");
wim 0:00c4c58db8e9 155 wait(1);
wim 0:00c4c58db8e9 156 MEIBAI.cls();
wim 0:00c4c58db8e9 157
wim 0:00c4c58db8e9 158 for (int i=0; i<MEIBAI_NR_DIGITS; i++) {
wim 0:00c4c58db8e9 159
wim 0:00c4c58db8e9 160 for (int cnt=0; cnt<10; cnt++) {
wim 0:00c4c58db8e9 161 MEIBAI.locate(i);
wim 0:00c4c58db8e9 162 MEIBAI.printf("%0d", cnt);
wim 0:00c4c58db8e9 163
wim 0:00c4c58db8e9 164 // wait(0.5);
wim 0:00c4c58db8e9 165 cmd = pc.getc(); // wait for key
wim 0:00c4c58db8e9 166 }
wim 0:00c4c58db8e9 167 }
wim 0:00c4c58db8e9 168 pc.printf("\r\nShow all digits done\r\n");
wim 0:00c4c58db8e9 169 #endif
wim 0:00c4c58db8e9 170
wim 0:00c4c58db8e9 171 #if(1)
wim 0:00c4c58db8e9 172 //test to show all digits (base is 0x10)
wim 0:00c4c58db8e9 173 pc.printf("Show all hex digits\r\n");
wim 0:00c4c58db8e9 174 wait(1);
wim 0:00c4c58db8e9 175 MEIBAI.cls();
wim 0:00c4c58db8e9 176
wim 0:00c4c58db8e9 177 MEIBAI.printf("%04x", 0x01AB);
wim 0:00c4c58db8e9 178 cmd = pc.getc(); // wait for key
wim 0:00c4c58db8e9 179 MEIBAI.printf("%04x", 0x0);
wim 0:00c4c58db8e9 180
wim 0:00c4c58db8e9 181 for (int i=0; i<MEIBAI_NR_DIGITS; i++) {
wim 0:00c4c58db8e9 182
wim 0:00c4c58db8e9 183 for (int cnt=0; cnt<0x10; cnt++) {
wim 0:00c4c58db8e9 184 MEIBAI.locate(i);
wim 0:00c4c58db8e9 185 MEIBAI.printf("%0x", cnt);
wim 0:00c4c58db8e9 186
wim 0:00c4c58db8e9 187 // wait(0.5);
wim 0:00c4c58db8e9 188 cmd = pc.getc(); // wait for key
wim 0:00c4c58db8e9 189 }
wim 0:00c4c58db8e9 190 }
wim 0:00c4c58db8e9 191 pc.printf("\r\nShow all hex digits done\r\n");
wim 0:00c4c58db8e9 192 #endif
wim 0:00c4c58db8e9 193 break;
wim 0:00c4c58db8e9 194 }
wim 0:00c4c58db8e9 195 case '5': {
wim 0:00c4c58db8e9 196 #if(1)
wim 0:00c4c58db8e9 197 //test to show all icons
wim 0:00c4c58db8e9 198 pc.printf("Show all icons\r\n");
wim 0:00c4c58db8e9 199 MEIBAI.cls(true); // Also clear all Icons
wim 0:00c4c58db8e9 200
wim 0:00c4c58db8e9 201 float delay=0.1;
wim 0:00c4c58db8e9 202 // Icons on, Note that some versions do not have decimal points, but a
wim 0:00c4c58db8e9 203 // a double colon on the second digit to show hours:min
wim 0:00c4c58db8e9 204 MEIBAI.setIcon(TM1650_MEIBAI::DP1); wait(delay);
wim 0:00c4c58db8e9 205 MEIBAI.setIcon(TM1650_MEIBAI::DP2); wait(delay);
wim 0:00c4c58db8e9 206 MEIBAI.setIcon(TM1650_MEIBAI::DP3); wait(delay);
wim 0:00c4c58db8e9 207 MEIBAI.setIcon(TM1650_MEIBAI::DP4); wait(delay);
wim 0:00c4c58db8e9 208
wim 0:00c4c58db8e9 209 wait(delay);
wim 0:00c4c58db8e9 210
wim 0:00c4c58db8e9 211 // Icons off
wim 0:00c4c58db8e9 212 MEIBAI.clrIcon(TM1650_MEIBAI::DP4); wait(delay);
wim 0:00c4c58db8e9 213 MEIBAI.clrIcon(TM1650_MEIBAI::DP3); wait(delay);
wim 0:00c4c58db8e9 214 MEIBAI.clrIcon(TM1650_MEIBAI::DP2); wait(delay);
wim 0:00c4c58db8e9 215 MEIBAI.clrIcon(TM1650_MEIBAI::DP1); wait(delay);
wim 0:00c4c58db8e9 216
wim 0:00c4c58db8e9 217 // wait(1);
wim 0:00c4c58db8e9 218 // MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 219 pc.printf("Show all icons done\r\n");
wim 0:00c4c58db8e9 220 #endif
wim 0:00c4c58db8e9 221 break;
wim 0:00c4c58db8e9 222 }
wim 0:00c4c58db8e9 223
wim 0:00c4c58db8e9 224 case '6': {
wim 0:00c4c58db8e9 225 MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 226
wim 0:00c4c58db8e9 227 #if(1)
wim 0:00c4c58db8e9 228 MEIBAI.locate(0);
wim 0:00c4c58db8e9 229
wim 0:00c4c58db8e9 230 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 0:00c4c58db8e9 231 MEIBAI.locate(2);
wim 0:00c4c58db8e9 232 MEIBAI.printf("%02x", cnt);
wim 0:00c4c58db8e9 233 wait(0.2);
wim 0:00c4c58db8e9 234 }
wim 0:00c4c58db8e9 235 #endif
wim 0:00c4c58db8e9 236
wim 0:00c4c58db8e9 237 // MEIBAI.writeData(hello_str);
wim 0:00c4c58db8e9 238 // MEIBAI.printf("hello");
wim 0:00c4c58db8e9 239
wim 0:00c4c58db8e9 240 break;
wim 0:00c4c58db8e9 241 }
wim 0:00c4c58db8e9 242 case '7': {
wim 0:00c4c58db8e9 243 MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 244 MEIBAI.printf("%1.2f", -0.12); // test decimal point display
wim 0:00c4c58db8e9 245 wait(0.5);
wim 0:00c4c58db8e9 246 MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 247 MEIBAI.printf("%1.3f", 1.234); // test decimal point display
wim 0:00c4c58db8e9 248 break;
wim 0:00c4c58db8e9 249 }
wim 0:00c4c58db8e9 250
wim 0:00c4c58db8e9 251 case '8': {
wim 0:00c4c58db8e9 252
wim 0:00c4c58db8e9 253 #if(1)
wim 0:00c4c58db8e9 254 //test to show KITT
wim 0:00c4c58db8e9 255 pc.printf("Show KITT scanner\r\n");
wim 0:00c4c58db8e9 256
wim 0:00c4c58db8e9 257
wim 0:00c4c58db8e9 258 // 0123
wim 0:00c4c58db8e9 259 const char KITT[][5] = {{"8 "},
wim 0:00c4c58db8e9 260 {"38 "},
wim 0:00c4c58db8e9 261 {" 38 "},
wim 0:00c4c58db8e9 262 {" 38"},
wim 0:00c4c58db8e9 263 {" 3"},
wim 0:00c4c58db8e9 264 {" "},
wim 0:00c4c58db8e9 265 {" 8"},
wim 0:00c4c58db8e9 266 {" 8E"},
wim 0:00c4c58db8e9 267 {" 8E "},
wim 0:00c4c58db8e9 268 {"8E "},
wim 0:00c4c58db8e9 269 {"E "},
wim 0:00c4c58db8e9 270 {" "}
wim 0:00c4c58db8e9 271 };
wim 0:00c4c58db8e9 272
wim 0:00c4c58db8e9 273 MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 274
wim 0:00c4c58db8e9 275 while (!pc.readable()) { // wait for key
wim 0:00c4c58db8e9 276 for (int i=0; i < (sizeof(KITT) / 5) ; i++) {
wim 0:00c4c58db8e9 277 MEIBAI.locate(0);
wim 0:00c4c58db8e9 278 MEIBAI.printf("%s", KITT[i]);
wim 0:00c4c58db8e9 279 wait(0.05);
wim 0:00c4c58db8e9 280 }
wim 0:00c4c58db8e9 281 }
wim 0:00c4c58db8e9 282 cmd = pc.getc(); // read key
wim 0:00c4c58db8e9 283 pc.printf("Show KITT done\r\n");
wim 0:00c4c58db8e9 284 #endif
wim 0:00c4c58db8e9 285 break;
wim 0:00c4c58db8e9 286 }
wim 0:00c4c58db8e9 287
wim 0:00c4c58db8e9 288 case '9': {
wim 0:00c4c58db8e9 289 // MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 290 MEIBAI.cls(true); // clear all, including Icons
wim 0:00c4c58db8e9 291 break;
wim 0:00c4c58db8e9 292 }
wim 0:00c4c58db8e9 293
wim 0:00c4c58db8e9 294 case 'A': {
wim 0:00c4c58db8e9 295
wim 0:00c4c58db8e9 296 MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 297 // MEIBAI.writeData(bye_str);
wim 0:00c4c58db8e9 298 MEIBAI.printf("Bye");
wim 0:00c4c58db8e9 299
wim 0:00c4c58db8e9 300 break;
wim 0:00c4c58db8e9 301 }
wim 0:00c4c58db8e9 302
wim 0:00c4c58db8e9 303 case 'k': {
wim 0:00c4c58db8e9 304 if (MEIBAI.getKeys(&keydata)) {
wim 0:00c4c58db8e9 305 pc.printf("Keydata = 0x%02x\r\n", keydata);
wim 0:00c4c58db8e9 306 }
wim 0:00c4c58db8e9 307 break;
wim 0:00c4c58db8e9 308 }
wim 0:00c4c58db8e9 309
wim 0:00c4c58db8e9 310 case 'u': {
wim 0:00c4c58db8e9 311 pc.printf("Show UDC\r\n");
wim 0:00c4c58db8e9 312 MEIBAI.cls(); // clear all, preserve Icons
wim 0:00c4c58db8e9 313 MEIBAI.putc(0); MEIBAI.putc(0); MEIBAI.putc(0); MEIBAI.putc(0);
wim 0:00c4c58db8e9 314 break;
wim 0:00c4c58db8e9 315 }
wim 0:00c4c58db8e9 316
wim 0:00c4c58db8e9 317 default : {
wim 0:00c4c58db8e9 318 break;
wim 0:00c4c58db8e9 319 }
wim 0:00c4c58db8e9 320
wim 0:00c4c58db8e9 321 } //switch cmd
wim 0:00c4c58db8e9 322
wim 0:00c4c58db8e9 323 #if(1)
wim 0:00c4c58db8e9 324 // Check and read keydata
wim 0:00c4c58db8e9 325 if (MEIBAI.getKeys(&keydata)) {
wim 0:00c4c58db8e9 326 pc.printf("Keydata = 0x%02x\r\n", keydata);
wim 0:00c4c58db8e9 327
wim 0:00c4c58db8e9 328 MEIBAI.cls();
wim 0:00c4c58db8e9 329 switch (keydata) {
wim 0:00c4c58db8e9 330 case TM1650_SW1_BIT : { //sw1, 0x44
wim 0:00c4c58db8e9 331 MEIBAI.printf("--01");
wim 0:00c4c58db8e9 332 break;
wim 0:00c4c58db8e9 333 }
wim 0:00c4c58db8e9 334
wim 0:00c4c58db8e9 335 case TM1650_SW5_BIT: { //sw5, 0x4C
wim 0:00c4c58db8e9 336 MEIBAI.printf("--02");
wim 0:00c4c58db8e9 337 break;
wim 0:00c4c58db8e9 338 }
wim 0:00c4c58db8e9 339
wim 0:00c4c58db8e9 340 case TM1650_SW9_BIT: { //sw9, 0x5C
wim 0:00c4c58db8e9 341 MEIBAI.printf("--03");
wim 0:00c4c58db8e9 342 break;
wim 0:00c4c58db8e9 343 }
wim 0:00c4c58db8e9 344
wim 0:00c4c58db8e9 345 default : {
wim 0:00c4c58db8e9 346 MEIBAI.printf("----");
wim 0:00c4c58db8e9 347 break;
wim 0:00c4c58db8e9 348 }
wim 0:00c4c58db8e9 349 }
wim 0:00c4c58db8e9 350
wim 0:00c4c58db8e9 351 } // Check keydata
wim 0:00c4c58db8e9 352 #endif
wim 0:00c4c58db8e9 353
wim 0:00c4c58db8e9 354 myled = !myled;
wim 0:00c4c58db8e9 355 wait(0.3);
wim 0:00c4c58db8e9 356 } //while
wim 0:00c4c58db8e9 357 }
wim 0:00c4c58db8e9 358 #endif
wim 0:00c4c58db8e9 359
wim 0:00c4c58db8e9 360
wim 0:00c4c58db8e9 361 #if (TM1650_TEST == 1)
wim 0:00c4c58db8e9 362 // Direct TM1650 Test
wim 0:00c4c58db8e9 363
wim 0:00c4c58db8e9 364 Serial pc(USBTX, USBRX);
wim 0:00c4c58db8e9 365 DigitalOut myled(LED1);
wim 0:00c4c58db8e9 366
wim 0:00c4c58db8e9 367 // DisplayData_t size is 4 bytes (4 Grids @ 8 Segments)
wim 0:00c4c58db8e9 368 TM1650::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF};
wim 0:00c4c58db8e9 369 TM1650::DisplayData_t cls_str = {0x00, 0x00, 0x00, 0x00};
wim 0:00c4c58db8e9 370
wim 0:00c4c58db8e9 371 // KeyData_t size is 1 bytes
wim 0:00c4c58db8e9 372 TM1650::KeyData_t keydata;
wim 0:00c4c58db8e9 373
wim 0:00c4c58db8e9 374 // TM1650 declaration
wim 0:00c4c58db8e9 375 TM1650 TM1650(p6,p7); //LPC1768
wim 0:00c4c58db8e9 376
wim 0:00c4c58db8e9 377 void show_menu() {
wim 0:00c4c58db8e9 378 // pc.printf("0: Exit\n\r");
wim 0:00c4c58db8e9 379 pc.printf("1: All\n\r");
wim 0:00c4c58db8e9 380 pc.printf("2: Cls\n\r");
wim 0:00c4c58db8e9 381 pc.printf("3: Show all segs\r\n");
wim 0:00c4c58db8e9 382 }
wim 0:00c4c58db8e9 383
wim 0:00c4c58db8e9 384
wim 0:00c4c58db8e9 385 char cmd, bits;
wim 0:00c4c58db8e9 386 int main() {
wim 0:00c4c58db8e9 387
wim 0:00c4c58db8e9 388 pc.printf("Hello World\r\n"); //
wim 0:00c4c58db8e9 389
wim 0:00c4c58db8e9 390 TM1650.cls();
wim 0:00c4c58db8e9 391 TM1650.writeData(all_str);
wim 0:00c4c58db8e9 392 wait(1);
wim 0:00c4c58db8e9 393 TM1650.setBrightness(TM1650_BRT3);
wim 0:00c4c58db8e9 394 wait(1);
wim 0:00c4c58db8e9 395 TM1650.setBrightness(TM1650_BRT0);
wim 0:00c4c58db8e9 396 wait(1);
wim 0:00c4c58db8e9 397 TM1650.setBrightness(TM1650_BRT3);
wim 0:00c4c58db8e9 398
wim 0:00c4c58db8e9 399 while (1) {
wim 0:00c4c58db8e9 400 show_menu();
wim 0:00c4c58db8e9 401 cmd = pc.getc();
wim 0:00c4c58db8e9 402
wim 0:00c4c58db8e9 403 switch (cmd) {
wim 0:00c4c58db8e9 404 case '1' :
wim 0:00c4c58db8e9 405 TM1650.cls();
wim 0:00c4c58db8e9 406 TM1650.writeData(all_str);
wim 0:00c4c58db8e9 407 break;
wim 0:00c4c58db8e9 408
wim 0:00c4c58db8e9 409 case '2' :
wim 0:00c4c58db8e9 410 TM1650.cls();
wim 0:00c4c58db8e9 411 TM1650.writeData(cls_str);
wim 0:00c4c58db8e9 412 break;
wim 0:00c4c58db8e9 413
wim 0:00c4c58db8e9 414 case '3' :
wim 0:00c4c58db8e9 415
wim 0:00c4c58db8e9 416 #if(1)
wim 0:00c4c58db8e9 417 //test to show all segs
wim 0:00c4c58db8e9 418 pc.printf("Show all segs\r\n");
wim 0:00c4c58db8e9 419 wait(1);
wim 0:00c4c58db8e9 420 TM1650.cls();
wim 0:00c4c58db8e9 421
wim 0:00c4c58db8e9 422 for (int i=0; i<TM1650_DISPLAY_MEM; i++) {
wim 0:00c4c58db8e9 423 for (int bit=0; bit<8; bit++) {
wim 0:00c4c58db8e9 424 TM1650.cls();
wim 0:00c4c58db8e9 425
wim 0:00c4c58db8e9 426 bits = 0x01 << bit;
wim 0:00c4c58db8e9 427 TM1650.writeData(bits, i);
wim 0:00c4c58db8e9 428
wim 0:00c4c58db8e9 429 pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits);
wim 0:00c4c58db8e9 430 // wait(0.5);
wim 0:00c4c58db8e9 431 cmd = pc.getc(); // wait for key
wim 0:00c4c58db8e9 432 }
wim 0:00c4c58db8e9 433 }
wim 0:00c4c58db8e9 434 pc.printf("Show all segs done\r\n");
wim 0:00c4c58db8e9 435 #endif
wim 0:00c4c58db8e9 436 break;
wim 0:00c4c58db8e9 437
wim 0:00c4c58db8e9 438 default :
wim 0:00c4c58db8e9 439 break;
wim 0:00c4c58db8e9 440
wim 0:00c4c58db8e9 441 } //switch cmd
wim 0:00c4c58db8e9 442
wim 0:00c4c58db8e9 443 // Check and read keydata
wim 0:00c4c58db8e9 444 if (TM1650.getKeys(&keydata)) {
wim 0:00c4c58db8e9 445 pc.printf("Keydata = 0x%02x\r\n", keydata);
wim 0:00c4c58db8e9 446
wim 0:00c4c58db8e9 447 if (keydata == TM1650_SW9_BIT) { //sw9
wim 0:00c4c58db8e9 448 TM1650.cls();
wim 0:00c4c58db8e9 449 TM1650.writeData(0xFF, 1);
wim 0:00c4c58db8e9 450 TM1650.writeData(0xFF, 2);
wim 0:00c4c58db8e9 451 }
wim 0:00c4c58db8e9 452 } // Check keydata
wim 0:00c4c58db8e9 453
wim 0:00c4c58db8e9 454 myled = !myled;
wim 0:00c4c58db8e9 455 wait(0.3);
wim 0:00c4c58db8e9 456 } //while
wim 0:00c4c58db8e9 457 }
wim 0:00c4c58db8e9 458 #endif