//Given a number, or '-', shifts it out to the display void postNumberLAP(int number, boolean decimal) { // - A // / / F/B // - G // / / E/C // -. D/DP #define a 1<<0 #define b 1<<6 #define c 1<<5 #define d 1<<4 #define e 1<<3 #define f 1<<1 #define g 1<<2 #define dp 1<<7 byte segmentsLAP; switch (number) { case 1: segmentsLAP = b | c; break; case 2: segmentsLAP = a | b | d | e | g; break; case 3: segmentsLAP = a | b | c | d | g; break; case 4: segmentsLAP = f | g | b | c; break; case 5: segmentsLAP = a | f | g | c | d; break; case 6: segmentsLAP = a | f | g | e | c | d; break; case 7: segmentsLAP = a | b | c; break; case 8: segmentsLAP = a | b | c | d | e | f | g; break; case 9: segmentsLAP = a | b | c | d | f | g; break; // case 0: // if (number > 9) { // segments = a | b | c | d | e | f; break; // } else segments = 0; break; case 0: segmentsLAP = a | b | c | d | e | f; break; case ' ': segmentsLAP = 0; break; case 'c': segmentsLAP = g | e | d; break; case '-': segmentsLAP = g; break; } if (decimal) segmentsLAP |= dp; //Clock these bits out to the drivers for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClockLAP, LOW); digitalWrite(segmentDataLAP, segmentsLAP & 1 << (7 - x)); digitalWrite(segmentClockLAP, HIGH); //Data transfers to the register on the rising edge of SRCK } }