/* ShiftDisplayTest.ino - Shift Display Test Program */ #include "ShiftDisplay.h" #define DISPLAY_CLOCK A0 #define DISPLAY_DATA A1 ShiftDisplay disp (DISPLAY_CLOCK, DISPLAY_DATA); ULONG timer = 0; byte count = 0; byte phase = 0; byte pattern = 0x80; void setup() { Serial.begin(9600); // init serial output Serial.println("ShiftDisplayTest..."); // startup message disp.setHexOne(true); // one digit display in Hex disp.setOnTimeOne(200); // set one digit on time disp.setOffTimeOne(200); // set one digit off time disp.setOnTimeTwo(250); // set two digit on time disp.setOffTimeTwo(250); // set two digit off time disp.shift(0); // clear all digits disp.shift(0); disp.shift(0); delay(10); // startup delay } void loop() { ULONG now = millis(); // get current time disp.update(now); // update the display if (now - timer >= (ULONG) 1000) { // timer done timer = now; // restart timer if (phase == 0) { disp.shift(0); disp.shift(0); disp.shift(pattern); pattern >>= 1; ++count; if (count == 8) { ++phase; pattern = 0x80; count = 0; } } else if (phase == 1) { disp.shift(0); disp.shift(pattern); disp.shift(0); pattern >>= 1; ++count; if (count == 8) { ++phase; pattern = 0x80; count = 0; } } else if (phase == 2) { disp.shift(pattern); disp.shift(0); disp.shift(0); pattern >>= 1; ++count; if (count == 8) { ++phase; pattern = 0x80; count = 0; disp.setBlankOne(true); disp.setSLZero(true); } } else if (phase == 3) { disp.outTwo(count++); if (count == 10) { ++phase; } } else if (phase == 4) { disp.outTwo(count); count += 10; if (count == 110) { ++phase; count = 0; disp.setBlankTwo(true); } } else if (phase == 5) { disp.outOne(count++); if (count == 16) { ++phase; count = 0; disp.setBlankOne(true); } } else if (phase == 6) { disp.flashTwo(count++); if (count == 10) { ++phase; } } else if (phase == 7) { disp.flashTwo(count); count += 10; if (count == 110) { ++phase; count = 0; disp.setBlankTwo(true); } } else if (phase == 8) { disp.flashOne(count++); if (count == 16) { ++phase; count = 0; pattern = 99; } } else if (phase == 9) { disp.outOne(count++); disp.outTwo(pattern--); if (count == 16) { ++phase; count = 0; pattern = 0x80; disp.setBlankOne(true); disp.setBlankTwo(true); } } else if (phase == 10) { ++count; if (count == 1) { disp.setDP1(true); } else if (count == 2) { disp.setDP2(true); } else if (count == 3) { disp.setDP3(true); } else { phase = 0; count = 0; disp.setDP1(false); disp.setDP2(false); disp.setDP3(false); } disp.out(); } } }