afficheur 7 segments incrémentation

Bonjour,

Je dispose de 4 afficheurs 7 segments. Via un code trouvé sur Internet, je souhaitais incrémenter de 1 les centaines et les milliers. Sauf que ce code, via 2 boutons poussoirs, me permet d’incrémenter ou de diminuer que les unités.

Savez-vous quelle ligne je dois modifier pour que l’un de ces 2 boutons poussoirs puissent agir sur le chiffre des centaines et non des unités ?

Merci.

/*




const byte SevenSeg[16] = 
{
     B00000011, B10011111, B0100100, B00001101,   // 0123
     B10011001, B01001001, B01000001, B00011111,   // 4567
     B00000001, B00001001, B11101110, B00111110,   // 89AB
     B00011010, B01111010, B10011110, B10001110,   // CDEF
  
};
const int latchPin = 8; //12 ST_CP
const int clockPin = 12;//11 SH_CP
const int dataPin  = 11;//14 data

const int disp1 = 7;// Displays are numbered from left to right as disp1 to disp4.
const int disp2 = 6;
const int disp3 = 5;
const int disp4 = 4;

int i=0; 
int check1 ;
int check2 ;
//
void setup() 
{
  pinMode(2,  INPUT_PULLUP);
  pinMode(3,  INPUT_PULLUP);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin,  OUTPUT);
  pinMode(disp1, OUTPUT);
  pinMode(disp2, OUTPUT);
  pinMode(disp3, OUTPUT);
  pinMode(disp4, OUTPUT);
}  
//
void loop() 
{
  check1 = digitalRead(2);
  check2 = digitalRead(3);
if (check1 == LOW)
  {
    delay(5);
    ++i;
  }
  for (int j=0; j<6; j++) //Control the speed of changing numbers.
    {
      SevenSegDisplay(i);//line71.
    }
if (check2 == LOW)
  {
    delay(5);
    --i;
  }
if (check2 == LOW && check1 == LOW)
  {
    delay(5);
    i=0;
  }
}

void DisplayADigit(int dispno, byte digit2disp)
{
  // Turn off the shift register pins while you're shifting bits:
  digitalWrite(latchPin, LOW);
  
  AllDispOff();  // Turn off all cathode drivers.(Line 63)
  
  // shift the bits out:
  shiftOut(dataPin, clockPin, LSBFIRST, digit2disp);
  digitalWrite(latchPin, HIGH);  // Set latch high to set segments.
  digitalWrite(dispno, HIGH);  // Drive one cathode low to turn on display.
  delay(5);

}

void AllDispOff() // Turn off all cathode drivers.
{
  digitalWrite(disp1, LOW);
  digitalWrite(disp2, LOW);
  digitalWrite(disp3, LOW);
  digitalWrite(disp4, LOW);
}

void SevenSegDisplay(int number)
{
  int d1,d2,d3,d4; // Temporary values for thousands, hundreds, tens and units
   // Do some bounds checks to avoid strangeness 
  if (number > 9999)
     number = 9999;
  if (number < 0)
     number = 0;
  
  d1 = (int) (number / 1000);    // Get thousands
  number = number - (d1 * 1000);
  d2 = (int) (number / 100);     // Get hundreds
  number = number - (d2 * 100);
  d3 = (int) (number / 10);      // Get tens
  d4 = number - (d3* 10);        // Get units
  
  DisplayADigit(disp1,byte(SevenSeg[d1]));  // Show thousands
  DisplayADigit(disp2,byte(SevenSeg[d2]));  // Show hundreds
  DisplayADigit(disp3,byte(SevenSeg[d3]));  // Show tens
  DisplayADigit(disp4,byte(SevenSeg[d4]));  // Show units

}

Bonjour,

Il suffit d'incrémenter ou décrémenter de 100
A la place de ++i; mettre i+=100;
A la place de --i; mettre i-=100;

Merci beaucoup !