Wim Huiskamp
/
mbed_PT6961
Test program for Princeton PT6961 LED controller library.
See here for more information.
Diff: main.cpp
- Revision:
- 4:bedc75e6561a
- Parent:
- 2:3bc72b8f5481
--- a/main.cpp Sun Sep 20 13:34:44 2015 +0000 +++ b/main.cpp Thu Jan 07 20:57:24 2016 +0000 @@ -1,6 +1,7 @@ /* mbed PT6961 Test program, for Princeton PT6961 LED controller - * Copyright (c) 2015, v01: WH, Initial version - * + * Copyright (c) 2015, v01: WH, Initial version PT6961 (HR734) + * 2016, v02: WH, Added V56S, Added Stream support + * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights @@ -25,6 +26,344 @@ Serial pc(USBTX, USBRX); DigitalOut myled(LED1); +#if(HR734_TEST == 1) +//Test on HR734 display + +#include "Font_7Seg.h" + +// DisplayData_t size is 14 bytes (7 grids @ 11 segments) +PT6961::DisplayData_t mbed_str = {0xDA,0x00, 0x7C,0x00, 0x3C,0x01, 0xF6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; +PT6961::DisplayData_t all_str = {0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F}; +PT6961::DisplayData_t hello_str = {LO(C7_H),HI(C7_H), LO(C7_E),HI(C7_E), LO(C7_L),HI(C7_L), LO(C7_L),HI(C7_L), LO(C7_O),HI(C7_O), 0x00,0x00, 0x00,0x00}; +PT6961::DisplayData_t bye_str = {LO(C7_B),HI(C7_B), LO(C7_Y),HI(C7_Y), LO(C7_E),HI(C7_E), 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; +//PT6961::DisplayData_t tst_str; + +// KeyData_t size is 5 bytes +PT6961::KeyData_t keydata; + +// PT6191_HR734 declaration, Setting 7 Grids @ 11 Segments +PT6961_HR734 pt6961_hr734(p5,p6,p7, p8); + +char cmd, bits; +int main() { + + pc.printf("Hello World\r\n"); // + + pt6961_hr734.cls(); + pt6961_hr734.writeData(all_str); + wait(4); + pt6961_hr734.setBrightness(PT6961_BRT3); + pt6961_hr734.writeData(mbed_str); + wait(1); + pt6961_hr734.setBrightness(PT6961_BRT0); + wait(1); + pt6961_hr734.setBrightness(PT6961_BRT3); + + while (1) { + + // Check and read keydata + if (pt6961_hr734.getKeys(&keydata)) { + pc.printf("Keydata 0..4 = 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3], keydata[4]); + + if (keydata[0] == 0x10) { //sw2 FF + pt6961_hr734.cls(); + pt6961_hr734.writeData(all_str); + } + + if (keydata[0] == 0x02) { //sw8 Play + pt6961_hr734.cls(); + pt6961_hr734.writeData(hello_str); +// pt6961_hr734.printf("Hello"); + } + + if (keydata[0] == 0x20) { //sw6 Stop + pt6961_hr734.cls(); + pt6961_hr734.writeData(mbed_str); + } + + if (keydata[1] == 0x02) { //sw4 Rew + pt6961_hr734.cls(); + pt6961_hr734.writeData(bye_str); +// pt6961_hr734.printf("Bye"); + } + + if (keydata[0] == 0x04) { //sw11 Rec +#if(1) +//test to show all segs + pc.printf("Show all segs\r\n"); + wait(1); + pt6961_hr734.cls(); + + for (int i=0; i<PT6961_DISPLAY_MEM; i++) { + for (int bit=0; bit<8; bit++) { + pt6961_hr734.cls(); + + bits = 0x01 << bit; + pt6961_hr734.writeData(i, bits); + + pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); +// wait(0.5); + cmd = pc.getc(); // wait for key + } + } + pc.printf("Show all segs done\r\n"); +#endif + } + + if (keydata[0] == 0x08) { //sw10 Ch- +#if(1) +//test to show all digits (base is 0x10) + pc.printf("Show all hex digits\r\n"); + wait(1); + pt6961_hr734.cls(); + + pt6961_hr734.printf("%05x", 0x012AB); + cmd = pc.getc(); // wait for key + + int val = 1; + for (int i=0; i<HR734_NR_DIGITS; i++) { + + for (int cnt=0; cnt<0x10; cnt++) { + pt6961_hr734.locate(0); + pt6961_hr734.printf("%05x", (val * cnt)); + +// wait(0.5); + cmd = pc.getc(); // wait for key + } + val = val * 0x10; + } + pc.printf("\r\nShow all hex digits done\r\n"); +#endif + } + + if (keydata[1] == 0x01) { //sw9 Ch+ + float delay = 0.2; + + pt6961_hr734.cls(); + pt6961_hr734.setIcon(PT6961_HR734::RA); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::M); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::ARW); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::HDDDVD_HD); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::HDDDVD_D); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::HDDDVD_VD); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::DP2); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::DP1); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::R); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::W); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::SO); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::P); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::CLK); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::BRK); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::DP4); wait(delay); + pt6961_hr734.setIcon(PT6961_HR734::DP3); wait(delay); + wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::RA); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::M); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::ARW); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::HDDDVD_HD); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::HDDDVD_D); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::HDDDVD_VD); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::DP2); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::DP1); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::R); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::W); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::SO); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::P); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::CLK); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::BRK); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::DP4); wait(delay); + pt6961_hr734.clrIcon(PT6961_HR734::DP3); wait(delay); + } + + if (keydata[0] == 0x01) { //sw7 + pt6961_hr734.cls(); + + } + + if (keydata[1] == 0x04) { //sw12 HDD + pt6961_hr734.cls(); + pt6961_hr734.printf("%5d", -1234); + } + + if (keydata[1] == 0x10) { //sw13 DVD + pt6961_hr734.cls(); + pt6961_hr734.printf("%05d", 1234); + } + + + } //if + + myled = !myled; + wait(0.3); + } //while +} +#endif + + +#if(V56S_TEST == 1) +//Test on V56S display + +#include "Font_7Seg.h" + +// DisplayData_t size is 14 bytes (7 grids @ 11 segments) +PT6961::DisplayData_t mbed_str = {0xDA,0x00, 0x7C,0x00, 0x3C,0x01, 0xF6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; +PT6961::DisplayData_t all_str = {0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F}; +PT6961::DisplayData_t hello_str = {LO(C7_H),HI(C7_H), LO(C7_E),HI(C7_E), LO(C7_L),HI(C7_L), LO(C7_L),HI(C7_L), LO(C7_O),HI(C7_O), 0x00,0x00, 0x00,0x00}; +PT6961::DisplayData_t bye_str = {LO(C7_B),HI(C7_B), LO(C7_Y),HI(C7_Y), LO(C7_E),HI(C7_E), 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; +//PT6961::DisplayData_t tst_str; + +// KeyData_t size is 5 bytes +PT6961::KeyData_t keydata; + +// PT6191_V56S declaration, Setting 7 Grids @ 11 Segments +PT6961_V56S pt6961_v56s(p5,p6,p7, p8); + +char cmd, bits; +int main() { + + pc.printf("Hello World\r\n"); // + + pt6961_v56s.cls(); + pt6961_v56s.writeData(all_str); + wait(4); + pt6961_v56s.setBrightness(PT6961_BRT3); + pt6961_v56s.writeData(hello_str); + wait(1); + pt6961_v56s.setBrightness(PT6961_BRT0); + wait(1); + pt6961_v56s.setBrightness(PT6961_BRT3); + + while (1) { + + // Check and read keydata + if (pt6961_v56s.getKeys(&keydata)) { + pc.printf("Keydata 0..4 = 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3], keydata[4]); + + if (keydata[0] == 0x01) { //sw5 + pt6961_v56s.cls(); + pt6961_v56s.writeData(all_str); + } + + if (keydata[0] == 0x02) { //sw1 + pt6961_v56s.cls(); + pt6961_v56s.writeData(hello_str); +// pt6961_v56s.printf("Hello"); +// pt6961_v56s.writeData(mbed_str); +// pt6961_v56s.writeData(bye_str); + } + + if (keydata[0] == 0x08) { //sw6 +#if(1) +//test to show all segs + pc.printf("Show all segs\r\n"); + wait(1); + pt6961_v56s.cls(); + + for (int i=0; i<PT6961_DISPLAY_MEM; i++) { + for (int bit=0; bit<8; bit++) { + pt6961_v56s.cls(); + + bits = 0x01 << bit; + pt6961_v56s.writeData(i, bits); + + pc.printf("Idx = %d, Bits = 0x%02x\r\n", i, bits); +// wait(0.5); + cmd = pc.getc(); // wait for key + } + } + pc.printf("Show all segs done\r\n"); +#endif + } + + if (keydata[0] == 0x10) { //sw2 +#if(1) +//test to show all digits (base is 0x10) + pc.printf("Show all hex digits\r\n"); + wait(1); + pt6961_v56s.cls(); + + pt6961_v56s.printf("%05x", 0x012AB); + cmd = pc.getc(); // wait for key + + int val = 1; + for (int i=0; i<V56S_NR_DIGITS; i++) { + + for (int cnt=0; cnt<0x10; cnt++) { + pt6961_v56s.locate(0); + pt6961_v56s.printf("%05x", (val * cnt)); + +// wait(0.5); + cmd = pc.getc(); // wait for key + } + val = val * 0x10; + } + pc.printf("\r\nShow all hex digits done\r\n"); +#endif + } + + if (keydata[1] == 0x02) { //sw3 + float delay = 0.2; + + pt6961_v56s.cls(); + pt6961_v56s.setIcon(PT6961_V56S::RED); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::GRN); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::YEL); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::DVD); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::COL1); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::DP3); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::PSE); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::MP3); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::PLY); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::CD); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::COL3); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::ARW); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::ANT); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::DTS); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::MHZ); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::DDD); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::KHZ); wait(delay); + pt6961_v56s.setIcon(PT6961_V56S::RDS); wait(delay); + wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::RED); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::GRN); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::YEL); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::DVD); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::COL1); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::DP3); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::PSE); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::MP3); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::PLY); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::CD); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::COL3); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::ARW); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::ANT); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::DTS); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::MHZ); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::DDD); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::KHZ); wait(delay); + pt6961_v56s.clrIcon(PT6961_V56S::RDS); wait(delay); + } + + if (keydata[1] == 0x10) { //sw4 - not mounted + pt6961_v56s.cls(); + pt6961_v56s.printf("%5d", -1234); +// pt6961_v56s.printf("%05d", 1234); + } + + } //if + + myled = !myled; + wait(0.3); + } //while +} +#endif + + +#if(PT6961_TEST == 1) +//Raw test on HR734 display + +#include "Font_7Seg.h" + // DisplayData_t size is 12 bytes (6 digits @ 12 segments) OR 14 bytes (7 digits @ 11 segments) PT6961::DisplayData_t mbed_str = {0xDA,0x00, 0x7C,0x00, 0x3C,0x01, 0xF6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; PT6961::DisplayData_t all_str = {0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F}; @@ -127,3 +466,6 @@ wait(0.3); } //while } +#endif + +