| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void showNumber(float value)
- {
- // changed from int to float
- long numberX = ((value+.0005)*1000); //Remove negative signs and any decimals
- // Serial.print("number: ");
- // Serial.println(numberX,3);
- // Serial.print("mph: ");
- // Serial.println(mph,3);
- for (byte x = 0 ; x < 6 ; x++)
- {
- long remainder = numberX % 10;
- postNumber(remainder, x==3);
- //Serial.print("remainder: ");
- //Serial.println (remainder,4);
- //Serial.print("value: ");
- //Serial.println (value,3);
- //Serial.print("number: ");
- // Serial.println(number );
- numberX /= 10;
-
- // Serial.print("number: ");
- // Serial.println(numberX,3 );
- }
- //Latch the current segment data
- digitalWrite(segmentLatch, LOW);
- digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK
- }
- //Given a number, or '-', shifts it out to the display
- void postNumber(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 segments;
- switch (number)
- {
- case 1: segments = b | c; break;
- case 2: segments = a | b | d | e | g; break;
- case 3: segments = a | b | c | d | g; break;
- case 4: segments = f | g | b | c; break;
- case 5: segments = a | f | g | c | d; break;
- case 6: segments = a | f | g | e | c | d; break;
- case 7: segments = a | b | c; break;
- case 8: segments = a | b | c | d | e | f | g; break;
- case 9: segments = 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: segments = a | b | c | d | e | f; break;
- case ' ': segments = 0; break;
- case 'c': segments = g | e | d; break;
- case '-': segments = g; break;
- }
- if (decimal) segments |= dp;
- //Clock these bits out to the drivers
- for (byte x = 0 ; x < 8 ; x++)
- {
- digitalWrite(segmentClock, LOW);
- digitalWrite(segmentData, segments & 1 << (7 - x));
- digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK
- }
- }
- 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;
-
- 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
- }
-
- /////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////
- // LAP SEGMENT CODE
- /////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////
- void showNumberLAP(float valueLAP)
- {
- // changed from int to float
- long numberLAP = abs(valueLAP); //Remove negative signs and any decimals
- // Serial.print("numberLAP: ");
- // Serial.println(numberLAP,3);
- // Serial.print("mph: ");
- // Serial.println(mph,3);
- for (byte x = 0 ; x < 2 ; x++)
- {
- long remainderLAP = numberLAP % 10;
- postNumberLAP(remainderLAP, false);
- //Serial.print("remainder: ");
- //Serial.println (remainder,4);
- //Serial.print("value: ");
- //Serial.println (value,3);
- //Serial.print("number: ");
- // Serial.println(number );
- numberLAP /= 10;
-
- // Serial.print("number: ");
- // Serial.println(numberX,3 );
- }
- //Latch the current segment data
- digitalWrite(segmentLatchLAP, LOW);
- digitalWrite(segmentLatchLAP, HIGH); //Register moves storage register on the rising edge of RCK
- }
- //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
- }
- }
- 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;
- }
- //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
- }
-
-
|