| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- 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
- }
|