Error in code for Reaction Timer!

Hello,

I'm a complete noob when it comes to programming and I'm pretty stuck on a college assignment so apologies if this doesn't make a lot of sense :slight_smile:

I'm just wondering if anyone can help me...I'm trying to set up a reaction timer when the keypad is pressed and have it displayed on the four 7-segment displays. Some of the code I have so far is below (The part with the error) but I keep getting the error: " 'extractDigitsFromNumber' was not declared in this scope"...would anybody be able to tell whats going wrong with it?

Thank you in advance :slight_smile:

// Arduino I/O pins: 7-segment display switches 
#define DISPLAY1 2 
#define DISPLAY2 19 
#define DISPLAY3 3 
#define DISPLAY4 18 
// Arduino I/O pins: LED segments of each display 
#define SEGA 6 
#define SEGB 15 
#define SEGC 7 
#define SEGD 14 
#define SEGE 8 
#define SEGF 10 
#define SEGG 9 
#define SEGDP 11 
// Arduino I/O pins: Keypad rows (Top row is 1; bottom row is 4) 
#define KP_ROW1 11 
#define KP_ROW2 9 
#define KP_ROW3 10 
#define KP_ROW4 8 
// Arduino I/O pins: Keypad columns (Far left column is 1; far right column is 3) 
#define KP_COL1 7 
#define KP_COL2 15 
#define KP_COL3 6 
// Arduino I/O pins: LED array 
#define LED0 6 
#define LED1 15 
#define LED2 7 
#define LED3 14 
#define LED4 8 
#define LED5 10 
#define LED6 9 
#define LED7 11

//Declare global variables (assessible by all fuctions)
//Initalise array to hold Arduino connections to keypad columns for keys 0-9,* and #

char keyPadColumnConnection[] = {
  KP_COL2, KP_COL1, KP_COL2, KP_COL3, KP_COL1, 
  KP_COL2, KP_COL3, KP_COL1, KP_COL2, KP_COL3, KP_COL1, KP_COL3 
};

char keyPadRowConnection[] = {
  KP_ROW4, KP_ROW1, KP_ROW1, KP_ROW1, KP_ROW2, KP_ROW2, 
  KP_ROW2, KP_ROW3, KP_ROW3, KP_ROW3, KP_ROW4, KP_ROW4, 
};

int digit[4];

void setup(){
  switchOffLedDisplays();
  initialiseKeypad();
  randomSeed(15874);
  Serial.begin(9600);
  
  //Enable the Arduino to drive 7-segment displays
  pinMode(DISPLAY1, OUTPUT); pinMode(DISPLAY2, OUTPUT);
  pinMode(DISPLAY3, OUTPUT); pinMode(DISPLAY4, OUTPUT);
  
  /*
  //Enable the arduino to drive the individual LED segments within the displays
  pinMode(SEGA, OUTPUT); pinMode(SEGB, OUTPUT); pinMode(SEGC, OUTPUT);
  pinMode(SEGD, OUTPUT); pinMode(SEGE, OUTPUT); pinMode(SEGF, OUTPUT);
  pinMode(SEGG, OUTPUT); pinMode(SEGDP, OUTPUT); 
  */
}

void loop(){
  int userReactionTime;
  unsigned long reactionTime;
  flashStimulusLED(LED7, random(2000, 10000));
  userReactionTime = keypressResponseTime(11, 2000);
  Serial.println(userReactionTime);
  reactionTime = userReactionTime;
  extractDigitsFromNumber(reactionTime);
  Serial.println(digit[0]);
  Serial.println(digit[1]);
  Serial.println(digit[2]);
  Serial.println(digit[3]);
  
  int displayOnTime;
  int i;
  for (i=200; i>-1; i--){
    showDigitOnLedDisplay(4, digit[0], 5);
    showDigitOnLedDisplay(3, digit[1], 5);
    showDigitOnLedDisplay(2, digit[2], 5);
    showDigitOnLedDisplay(1, digit[3], 5);  
  }
  
  digitalWrite(DISPLAY1, LOW); digitalWrite(DISPLAY2, LOW); 
  digitalWrite(DISPLAY3, LOW); digitalWrite(DISPLAY4, LOW); 
  delay(2500);
}
  
  void extractDigitsFromNumber(long num)
  int i;
  {
    for (i=3; i>-1; i--);{
      digit[i] = num%10;
      num=(num-digit[i])/10;
    }
  }
  int keypressResponseTime(char keyNumber,int maxTimeAllowed){
    unsigned long startTime, reactionTime;
    int elapasedTime;
    char keyPressed = 0;
    digitalWrite(keyPadColumnConnection[keyNumber], HIGH);
    pinMode (keyPadRowConnection[11],INPUT);
    startTime = millis(); //Starting time of millisecond stopwatch timer
    //Loop until the active key is pressed or the maximum timeout has elapsed 
    while( (keyPressed == 0)&&(elapsedTime <= maxTimeAllowed) ) { 
    //Read the row corresponding to the specified key
    keyPressed = digitalRead(keyPadRowConnection[keyNumber]); 
    elapsedTime = millis() - startTime; //Calculate time taken to press key 
  }
  digitalWrite(keypadColumnConnection[keyNumber], LOW);
  return elapsedTime;
  }
  
  void flashStimulusLED(char stimulusLED, unsigned long ledOnTime) { 
    pinMode(stimulusLED, OUTPUT); 
    digitalWrite(stimulusLED,HIGH); //Turn on stimulus LED 
    delay(ledOnTime); 
    digitalWrite(stimulusLED,LOW); //Turn off stimulus LED
  }
  void switchOffLedDisplays() { 
    pinMode(DISPLAY1, OUTPUT); digitalWrite(DISPLAY1, LOW); 
    pinMode(DISPLAY2, OUTPUT); digitalWrite(DISPLAY2, LOW); 
    pinMode(DISPLAY3, OUTPUT); digitalWrite(DISPLAY3, LOW); 
    pinMode(DISPLAY4, OUTPUT); digitalWrite(DISPLAY4, LOW); 
  } 
  void initialiseKeypad() { 
    pinMode(KP_COL1, OUTPUT); digitalWrite(KP_COL1, LOW); 
    pinMode(KP_COL2, OUTPUT); digitalWrite(KP_COL2, LOW); 
    pinMode(KP_COL3, OUTPUT); digitalWrite(KP_COL3, LOW); 
    pinMode(KP_ROW1, INPUT); pinMode(KP_ROW2, INPUT); 
    pinMode(KP_ROW3, INPUT); pinMode(KP_ROW4, INPUT); 
  }
 void extractDigitsFromNumber(long num)
  int i;
  {

Wrong.
Move the { brace.

Then you're going to have problems with this for (i=3; i>-1; i--);{