Skip to content

Commit 7f16a2f

Browse files
author
Jim Lindblom
committed
Support for individual segment control
If a character-to-display is between 128-255 (the msb is set) the display goes into bit-per-segment mode. In this case, the lower 7 bits are each mapped to a segment. A change like this will be required to enable the [individual segment control](https://github.com/sparkfun/Serial7SegmentDisplay/wiki/Special-Commands#wiki-individual) command on the S7S.
1 parent 2775bf4 commit 7f16a2f

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

SevSeg/SevSeg.cpp

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -219,15 +219,27 @@ void SevSeg::DisplayString(char* toDisplay, byte DecAposColon)
219219
//This could be cleaned up a bit but it works
220220
//displayCharacter(toDisplay[digit-1]); //Now display this digit
221221
// displayArray (defined in SevSeg.h) decides which segments are turned on for each number or symbol
222-
char characterToDisplay = toDisplay[digit-1];
223-
if (characterArray[characterToDisplay][0]) digitalWrite(segmentA, SegOn);
224-
if (characterArray[characterToDisplay][1]) digitalWrite(segmentB, SegOn);
225-
if (characterArray[characterToDisplay][2]) digitalWrite(segmentC, SegOn);
226-
if (characterArray[characterToDisplay][3]) digitalWrite(segmentD, SegOn);
227-
if (characterArray[characterToDisplay][4]) digitalWrite(segmentE, SegOn);
228-
if (characterArray[characterToDisplay][5]) digitalWrite(segmentF, SegOn);
229-
if (characterArray[characterToDisplay][6]) digitalWrite(segmentG, SegOn);
230-
222+
unsigned char characterToDisplay = toDisplay[digit-1];
223+
if (characterToDisplay & 0x80)
224+
{ // Could remake a segmentPins[] array to get this in a for loop
225+
if (characterToDisplay & 0x01) digitalWrite(segmentA, SegOn);
226+
if (characterToDisplay & 0x02) digitalWrite(segmentB, SegOn);
227+
if (characterToDisplay & 0x04) digitalWrite(segmentC, SegOn);
228+
if (characterToDisplay & 0x08) digitalWrite(segmentD, SegOn);
229+
if (characterToDisplay & 0x10) digitalWrite(segmentE, SegOn);
230+
if (characterToDisplay & 0x20) digitalWrite(segmentF, SegOn);
231+
if (characterToDisplay & 0x40) digitalWrite(segmentG, SegOn);
232+
}
233+
else
234+
{
235+
if (characterArray[characterToDisplay][0]) digitalWrite(segmentA, SegOn);
236+
if (characterArray[characterToDisplay][1]) digitalWrite(segmentB, SegOn);
237+
if (characterArray[characterToDisplay][2]) digitalWrite(segmentC, SegOn);
238+
if (characterArray[characterToDisplay][3]) digitalWrite(segmentD, SegOn);
239+
if (characterArray[characterToDisplay][4]) digitalWrite(segmentE, SegOn);
240+
if (characterArray[characterToDisplay][5]) digitalWrite(segmentF, SegOn);
241+
if (characterArray[characterToDisplay][6]) digitalWrite(segmentG, SegOn);
242+
}
231243
//Service the decimal point, apostrophe and colon
232244
if ((DecAposColon & (1<<(digit-1))) && (digit < 5)) //Test DecAposColon to see if we need to turn on a decimal point
233245
digitalWrite(segmentDP, SegOn);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy