High speed photogate readings and hardware interrupts (Help Needed)

byte digit0 = 10;
byte digit1 = 11;
int clipdrum = 12;
int clip18 = 13;
int clip12 = A0;
int clip6 = A1;
int firepin = A2;
int photosensor = A4;
int triggersignal = A5;
int resetpin = 9;
int counter = 0;
int AmmoCount = 0;   
int buttonState = 0;         
int lastButtonState = 0;
 
byte sevenSegmentPins[] = {2,3,4,5,6,7,8};
byte sevenSegment[10][7] =
{
  //a b c d e f g
  { 0,0,0,0,0,0,1 },  // = 0
  { 1,0,0,1,1,1,1 },  // = 1
  { 0,0,1,0,0,1,0 },  // = 2
  { 0,0,0,0,1,1,0 },  // = 3
  { 1,0,0,1,1,0,0 },  // = 4
  { 0,1,0,0,1,0,0 },  // = 5
  { 0,1,0,0,0,0,0 },  // = 6
  { 0,0,0,1,1,1,1 },  // = 7
  { 0,0,0,0,0,0,0 },  // = 8
  { 0,0,0,1,1,0,0 }   // = 9
};
 
void setup()
{
   Serial.begin(9600); 
   pinMode(digit0, OUTPUT); //pin 10
   pinMode(digit1, OUTPUT); //pin 11
   pinMode(clipdrum, INPUT); //pin 12
   pinMode(clip18, INPUT); //pin 13
   pinMode(clip12, INPUT); //pin 14
   pinMode(clip6, INPUT); //pin 15
   pinMode(firepin, INPUT); //pin 16
   pinMode(resetpin, INPUT); //pin 9
   pinMode(photosensor, INPUT); // Light Trigger
   pinMode(triggersignal, OUTPUT);// Signal To Light Trigger
    
  for(int i=0; i<7; i++)
  {
    pinMode(sevenSegmentPins[i], OUTPUT);
  }
  digitalWrite(digit0, HIGH);
  digitalWrite(digit1, HIGH);
}
 
void segmentWrite(byte digit)
{
  byte pin = 2;
  for (byte i=0; i<7; ++i)
  {
    digitalWrite(pin, sevenSegment[digit][i]);
      ++pin;
  }
}
 
void loop()
{
    Serial.println(analogRead(photosensor));
    AmmoCount = 0;
    digitalWrite(digit0, HIGH); 
    segmentWrite(0);
   delay(10);
    digitalWrite(digit0, LOW);
    
    digitalWrite(digit1, HIGH);
    segmentWrite(0);
    delay(10);
    digitalWrite(digit1, LOW);

  if (digitalRead(clipdrum) == HIGH)
    {
      AmmoCount = 25;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delay(10);
      digitalWrite(digit1, HIGH);
   
    while(digitalRead(clipdrum) == HIGH){
      buttonState = analogRead(photosensor) <  700;
    if (buttonState != lastButtonState && buttonState == HIGH && AmmoCount>0) {
        AmmoCount -= 1;
      }
      lastButtonState = buttonState;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delay(10);
      digitalWrite(digit1, HIGH);
    }
    }

  else if (digitalRead(clip18) == HIGH)
     {
      AmmoCount = 18;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delayMicroseconds(100);
      digitalWrite(digit1, HIGH);
   
    while(digitalRead(clip18) == HIGH){
      buttonState = analogRead(photosensor) <  700;
    if (buttonState != lastButtonState && buttonState == HIGH && AmmoCount>0) {
        AmmoCount -= 1;
      }
      lastButtonState = buttonState;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delay(10);
      digitalWrite(digit1, HIGH);
    }
    }
  
  else if (digitalRead(clip12) == HIGH)
    {
      AmmoCount = 12;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delay(10);
      digitalWrite(digit1, HIGH);
    
    while(digitalRead(clip12) == HIGH){
      buttonState = analogRead(photosensor) <  700;
    if (buttonState != lastButtonState && buttonState == HIGH && AmmoCount>0) {
        AmmoCount -= 1;
      }
      lastButtonState = buttonState;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delay(10);
      digitalWrite(digit1, HIGH);
    }
    }
  
  else if (digitalRead(clip6)== HIGH)
    {
      AmmoCount = 6;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delay(10);
      digitalWrite(digit1, HIGH);
    
    while(digitalRead(clip6) == HIGH){
      buttonState = analogRead(photosensor) <  700;
    if (buttonState != lastButtonState && buttonState == HIGH && AmmoCount>0) {
        AmmoCount -= 1;
      }
      lastButtonState = buttonState;
      digitalWrite(digit0, LOW);
      segmentWrite(AmmoCount%10);
      delay(10);
      digitalWrite(digit0, HIGH);
      digitalWrite(digit1, LOW);
      segmentWrite(AmmoCount/10);
      delay(10);
      digitalWrite(digit1, HIGH);
    }
    }

  else
  {
    AmmoCount = 0;
  }
}

The "photosensor" is just a photoresistor from Radioshack :slight_smile:

IMG_0245[1].JPG