OK, the code was in a mess, you had defined the function delayHold() and used the function holdDelay(), that was why you were getting the error message. You had also not taken out all the rubbish you added so the braces were all over the place.
Try the following code, at least it compiles, have you got the push button wired up correctly?
int ledPin1 = 2;
int ledPin2 = 3;
int ledPin3 = 4;
int ledPin4 = 5;
int ledPin5 = 6;
int ledPin6 = 7;
int ledPin7 = 8;
int inputPin = 10; // switch wired between input and ground
int val = 0;
long endTime;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(inputPin, INPUT);
digitalWrite(inputPin,HIGH); // enable internal pull up resistor
}
void loop () {
digitalWrite(ledPin1, HIGH); // number 1
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, HIGH);
holdDelay(500);
digitalWrite(ledPin1, LOW); // number 2
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, LOW);
holdDelay(500);
digitalWrite(ledPin1, LOW); // number 3
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
holdDelay(500);
digitalWrite(ledPin1, HIGH); // number 4
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, HIGH);
holdDelay(500);
digitalWrite(ledPin1, LOW); // number 5
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
holdDelay(500);
digitalWrite(ledPin1, HIGH); // number 6
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
holdDelay(500);
digitalWrite(ledPin1, LOW); // number 7
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, HIGH);
holdDelay(500);
digitalWrite(ledPin1, LOW); // number 8
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
holdDelay(500);
digitalWrite(ledPin1, LOW); // number 9
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, HIGH);
holdDelay(500);
digitalWrite(ledPin1, LOW); // number 0
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
}
// Delay for the number of milli seconds passed to it or hold while the push button is held
void holdDelay(int del){
int button;
endTime = millis() + del; // time for the loop to end in absance of a button press
while(endTime>millis()) { // do this until the delay has finished
button = digitalRead(inputPin); // what is the state of the button
if (button == LOW) { // if it is low we should hold until it is high again
// hold until button == HIGH
while(button == LOW){
button = digitalRead(inputPin);
}
}
}
}
And just for a laf - thought I would code it the way I would have done it.
int ledPin[] = {2, 3, 4, 5, 6,7, 8}; // The pin numbers used to drive the segments
int inputPin = 10; // switch wired between input and ground
int num=0;
// set up an array to contain digits to light for each number 0=lit - 1=not lit
int segments[] = {0x04, 0x30, 0x22, 0x0A, 0x48, 0x18, 0x10, 0x4e, 0x00, 0x48};
void setup() {
for(int i=0; i<7; i++){
pinMode(ledPin[i], OUTPUT); // define segment drivers
}
pinMode(inputPin, INPUT);
digitalWrite(inputPin,HIGH); // enable internal pull up resistor
}
void loop () {
setSegments(segments[num]); // display number
holdDelay(500); // hold if button pressed otherwise a half second delay
num++; // increment number for next time through the loop
if(num > 9) num=0; // wrap round 9 to 0
}
// Turns on and off the segments passed in val bit 0 = segment a, bit 1 = segment b .......
void setSegments(int val){
int tval; // tempory variable to hold just one segment
for(int i =0; i<7; i++){
tval = val & 0x01; // extract the lease significant segment value
val = val >>1; // shift the segments down so the next segment to display becomes the lease significant one
digitalWrite(ledPin[i], tval);
}
}
// Delay for the number of milli seconds passed to it or hold while the push button is held
void holdDelay(int del){
int button;
long endTime = millis() + del; // time for the loop to end in absance of a button press
while(endTime>millis()) { // do this until the delay has finished
button = digitalRead(inputPin); // what is the state of the button
// hold until button if LOW
while(button == LOW){
button = digitalRead(inputPin);
}
}
}
Again I haven't tried it but it shouldn't be too far off.