Trouble #DEFINE on a 74HC595

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

https://fr.aliexpress.com/item/1005005985362888.html?spm=a2g0o.order_list.order_list_main.11.7cfa5e5bfvVTO0&gatewayAdapt=glo2fra

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

https://wokwi.com/projects/386686453774853121

The wiring diagram that was omitted from the topic. Which seems to show discrete LED displays rather than a 2 digit module.

First observation: based on the above diagram, your buttons are connected to pins 2 and 3. Your LEDs also don't seem to be on the pins indicated by the #defines.

Yes, you're right, I had to change the PIN number when I upload the code in my arduino. I made a mistake of copying paste. I was talking more about this part of the code:

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

For my project, I'm trying to duplicate a two large 7-segement display that uses two TPIC6C596 so that the operator of my box can see the counter in front of him.
TPIC6C596-Lecteur-de-pilote-grand-chiffre-carte-PCB-lectronique-technologie-d-affichage-LED-7-segments-DC.jpg_80x80.jpg_



Where the hole is, there's going to be a 3d printed plate. There's going to be a timer on an LCD display too.

This may not be the right material for what I want to do, your sugestions would be appreciated.

@lolendo
Please do not duplicate our relief efforts.
It's against forum rules.
Read : "
" How to get the best out of this forum

You already have an open thread on the same subject:

Sorry, I will repost my question in my original thread.

https://forum.arduino.cc/t/need-help-for-2x7-segments-display-projet/1207894/15?u=lolendo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.