void showShape(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 segments1; byte segments2; byte segments3; byte segments4; byte segments5; byte segments6; switch (shape) { // case 0: segments1 = a | f | b | e | c | d; segments2 = a | f | b | e | c | d; segments3 = a | f | b | e | c | d; segments4 = a | f | b | e | c | d; segments5 = a | f | b | e | c | d; segments6 = a | f | b | e | c | d; break; // . . case 1: segments1 = dp; segments2 = dp; segments3 = dp; segments4 = dp; segments5 = dp; segments6 = dp; break; // _ _ case 2: segments1 = d; segments2 = d; segments3 = d; segments4 = d; segments5 = d; segments6 = d; break; // Double 88 case 3: segments1 = a | f | b | e | c | d | g; segments2 = a | f | b | e | c | d | g; break; // - - case 4: segments1 = g; segments2 = g; segments3 = g; segments4 = g; segments5 = g; segments6 = g; break; // NOTHING case 5: segments1 = 0; segments2 = 0; break; } //Clock these bits out to the drivers // Segment1 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClock, LOW); digitalWrite(segmentData, segments1 & 1 << (7 - x)); digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK } digitalWrite(segmentLatch, LOW); digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK // Segment2 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClock, LOW); digitalWrite(segmentData, segments2 & 1 << (7 - x)); digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK } digitalWrite(segmentLatch, LOW); digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK // Segment3 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClock, LOW); digitalWrite(segmentData, segments3 & 1 << (7 - x)); digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK } digitalWrite(segmentLatch, LOW); digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK // Segment4 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClock, LOW); digitalWrite(segmentData, segments4 & 1 << (7 - x)); digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK } digitalWrite(segmentLatch, LOW); digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK // Segment5 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClock, LOW); digitalWrite(segmentData, segments5 & 1 << (7 - x)); digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK } digitalWrite(segmentLatch, LOW); digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK // Segment6 for (byte x = 0 ; x < 8 ; x++) { digitalWrite(segmentClock, LOW); digitalWrite(segmentData, segments6 & 1 << (7 - x)); digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK } digitalWrite(segmentLatch, LOW); digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK }