Hi,
I am not very good at programming and I was wondering if someone could help me change this code to make the serial 7 segment using (mins:secs) ranging from 1 to 60 mins counting down to 0. When it gets below 1 minute I would like the formation (secs.millsecs) and buzz every second starting from 5 secs.
Thanks!
#define BuzzTIME 1500 //Fuse current duration in milliseconds.
#define Fuss 7 //Pin connected to the Fuse relay.
#define BuzzPin 50 //Connected to the Buzzer or speaker.
#define ArmButt 46 //Pin connected to the ARM button.
#define GoButt 48 //Pin connected to the GO button.
#define SetPot 0 //Analog Pin connected to the Pot.
void setup() {
pinMode(Fuss, OUTPUT);
pinMode(ArmButt, INPUT); // set "ARM" button pin to input
pinMode(GoButt, INPUT); // set "GO" button pin to input
digitalWrite(ArmButt, HIGH); // turn on pullup resistor
digitalWrite(Fuss, LOW); //OPEN the fuse circuit.
digitalWrite(GoButt, HIGH); // turn on pullup resistor
Serial.begin(9600);
delay(10); //Wait for Serial Display startup.
Serial.print("v"); //Reset the display.
// Serial.print("z //Brightness Control.
// Serial.print(0x40,BYTE); //3/4 Intensity.
//Serial.print("w"); //Decimal Point Control.
}
int DownCntr; // down counter (1/10 Secs.)
int Go = 0; // Stopped
//================================================================
void loop() {
if (!digitalRead(GoButt) || !digitalRead(ArmButt)) {
Go = 0; //ABORT !!!
tone(BuzzPin, 440, 1500);
delay(1500);
}
if (Go == 0) {
WaitARM();
WaitGO();
}
ShowTimer();
if (DownCntr > 50) {
if (DownCntr % 10 == 0)tone(BuzzPin, 1000, 50); //Tone every second.
}
else if (DownCntr % 2 == 0)tone(BuzzPin, 1000, 50); //Tone every 1/5 second.
if (DownCntr == 0) {
//------------------ END OF TIMER! --------------------
tone(BuzzPin, 440, BuzzTIME); //Launch audible signal
delay(BuzzTIME);
//------------------------------------------------------
Go = 0;
}
while (millis() % 100); //Wait until the next 1/10 of second.
delay(50);
DownCntr--; // Nick can't play Basketball
}
//----------------------------------------
void WaitGO() {
ShowTimer();
while (digitalRead(GoButt));
Go = 1;
delay(20);
while (!digitalRead(GoButt)); //Debounce GO button.
}
//------------------------------------------------------
void ReadTimer() {
DownCntr = map(analogRead(SetPot), 0, 1023, 5, 60);
DownCntr *= 10;
}
//------------------------------------------------------
void ShowTimer() {
String seconds = String (DownCntr, DEC);
while (seconds.length() < 3)seconds = "0" + seconds; //format to 3 numbers.
Serial.print(seconds); //Write to Display.
Serial.print(" "); //Last digit off.
}
//------------------------------------------------------
void WaitARM() {
while (digitalRead(ArmButt) == 1) {
ReadTimer();
delay(50);
ReadTimer();
ShowTimer(); //Show Digits.
delay(150);
}
Go = 0;
ShowTimer();
tone(BuzzPin, 2000, 150); // NA won't Read this
delay(200);
tone(BuzzPin, 2000, 150);
delay(200);
tone(BuzzPin, 2000, 150);
delay(20);
while (!digitalRead(ArmButt)); //Debounce ARM button.
}