void showShapeLAP(int shape) { // - 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 segmentsLAP1; byte segmentsLAP2; switch (shape) { // case 0: segmentsLAP1 = a | f | b | e | c | d; segmentsLAP2 = a | f | b | e | c | d; break; // . . case 1: segmentsLAP1 = dp; segmentsLAP2 = dp; break; // _ _ case 2: segmentsLAP1 = d; segmentsLAP2 = d; break; // Double 88 case 3: segmentsLAP1 = a | f | b | e | c | d | g; segmentsLAP2 = a | f | b | e | c | d | g; break; // - - case 4: segmentsLAP1 = g; segmentsLAP2 = g; break; // NOTHING case 5: segmentsLAP1 = 0; segmentsLAP2 = 0; break; case 20: segmentsLAP1 = a; segmentsLAP2 = a; break; case 21: segmentsLAP1 = a | b; segmentsLAP2 = 0; break; case 22: segmentsLAP1 = b | c; segmentsLAP2 = 0; break; case 23: segmentsLAP1 = c | d; segmentsLAP2 = 0; break; case 24: segmentsLAP1 = d; segmentsLAP2 = d; break; case 25: segmentsLAP1 = 0; segmentsLAP2 = d | e; break; case 26: segmentsLAP1 = 0; segmentsLAP2 = e | f; break; case 27: segmentsLAP1 = 0; segmentsLAP2 = f | a; break; } //Clock these bits out to the drivers // SegmentLAP1 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClockLAP, LOW); digitalWrite(segmentDataLAP, segmentsLAP1 & 1 << (7 - x)); digitalWrite(segmentClockLAP, HIGH); //Data transfers to the register on the rising edge of SRCK } // digitalWrite(segmentLatchLAP, LOW); // digitalWrite(segmentLatchLAP, HIGH); //Register moves storage register on the rising edge of RCK // SegmentLAP2 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClockLAP, LOW); digitalWrite(segmentDataLAP, segmentsLAP2 & 1 << (7 - x)); digitalWrite(segmentClockLAP, HIGH); //Data transfers to the register on the rising edge of SRCK } digitalWrite(segmentLatchLAP, LOW); digitalWrite(segmentLatchLAP, HIGH); //Register moves storage register on the rising edge of RCK }