II'm trying to use this 7 segement display module (the 2 digit) that I found on aliexpress with this program. I think the problem is that the #define are not the right ones. Could anyone have used this module before could tell me the right setup?
Thank you
byte segmentClock = 6;
byte segmentLatch = 5;
byte segmentData = 7;
#define blueBt 9
#define redBt 8
#define blueLed 10
#define redLed 11
int number = 0;
unsigned long oneSeg = 1000;
unsigned long myTime = 0;
bool redSet = false;
bool blueSet = false;
//--------------------------------------------------------------------
void setup()
{
Serial.begin(9600);
Serial.println("Large Digit Driver Example");
pinMode(segmentClock, OUTPUT);
pinMode(segmentData, OUTPUT);
pinMode(segmentLatch, OUTPUT);
pinMode(blueBt, INPUT_PULLUP);
pinMode(redBt, INPUT_PULLUP);
pinMode(blueLed, OUTPUT);
pinMode(redLed, OUTPUT);
digitalWrite(segmentClock, LOW);
digitalWrite(segmentData, LOW);
digitalWrite(segmentLatch, LOW);
showNumber(number); //Test pattern
myTime = millis();
}
//--------------------------------------------------------------------
void loop()
{
if (redSet == true)
{
if (millis() - myTime >= oneSeg)
{
myTime = millis();
if (number <= 0)
{
number = 0;
// digitalWrite(redLed, LOW);
showNumber(number); //Test pattern
}
else
{
number--;
showNumber(number); //Test pattern
}
}
}
if (digitalRead(redBt) == LOW and redSet == false)
{
myTime = millis();
redSet = true;
number = 10;
showNumber(number); //Test pattern
digitalWrite(redLed, HIGH);
}
if (digitalRead(redBt) == HIGH and redSet == true)
{
redSet = false;
digitalWrite(redLed, LOW);
showNumber(0); //Test pattern
}
if (blueSet == true)
{
if (millis() - myTime >= oneSeg)
{
myTime = millis();
if (number <= 0)
{
number = 0;
//digitalWrite(blueLed, LOW);
showNumber(number); //Test pattern
}
else
{
number--;
showNumber(number); //Test pattern
}
}
}
if (digitalRead(blueBt) == LOW and blueSet == false)
{
myTime = millis();
blueSet = true;
number = 10;
showNumber(number); //Test pattern
digitalWrite(blueLed, HIGH);
}
if (digitalRead(blueBt) == HIGH and blueSet == true)
{
blueSet = false;
digitalWrite(blueLed, LOW);
showNumber(0); //Test pattern
}
}
//--------------------------------------------------------------------
//Takes a number and displays 2 numbers. Displays absolute value
// (no negatives)
void showNumber(float value)
{
int number = abs(value); //Remove negative signs and any decimals
for (byte x = 0 ; x < 2 ; x++)
{
int remainder = number % 10;
postNumber(remainder, false);
number /= 10;
}
//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(byte 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: 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
}
}





