count down timmer program

i have downloaded this program  it is in minuets and seconds    00:00   MM:SS

i want to change it to seconds  and milliseconds     00:00     SS:mS mS

how easy will it be i am just getting into programming and have made 4 projects  from getting started with arduino

i am farely old and did not grow up with computers at school

here is the program  i have

//constants for Control Pin

int controlPin = 13;
char currentTimeValue[4];
int currentState = 1;
int timerSeconds = 0;
int lpcnt = 0;

//define the keypad
const byte rows = 4;
const byte cols = 4;
char keys[rows][cols] = {

 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'*','0','#','D'}
};

byte rowPins[rows] = {11,10,9,8};
byte colPins[cols] = {7,6,5,4};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
LiquidCrystal_I2C lcd(0x3F,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line
display

void setup()
{
 lcd.init(); // initialize the lcd

 // Print a message to the LCD.
 lcd.backlight();

 //display main screen
 displayCodeEntryScreen();

 //setup and turn off relay
 pinMode(controlPin, OUTPUT);
 digitalWrite(controlPin, LOW);

 //setup default time to 00:00
 currentTimeValue[0]='0';
 currentTimeValue[1]='0';
 currentTimeValue[2]='0';
 currentTimeValue[3]='0';
 showEnteredTime();
}

void loop()
{
 int l;
 char tempVal[3];
 char key = keypad.getKey();

 //key pressed and state is 1
 if (int(key) != 0 and currentState == 1) {

 switch (key) {
 case '*':
 relayStatus(false);
 currentTimeValue[0]='0';
 currentTimeValue[1]='0';
 currentTimeValue[2]='0';
 currentTimeValue[3]='0';
 showEnteredTime();
 currentState = 1;

 lpcnt = 0;
 timerSeconds = 0;
 break;

 case '#':
 tempVal[0] = currentTimeValue[0];
 tempVal[1] = currentTimeValue[1];
 tempVal[2] = 0;

 timerSeconds = atol(tempVal) * 60;

 tempVal[0] = currentTimeValue[2];
 tempVal[1] = currentTimeValue[3];
 tempVal[2] = 0;

 timerSeconds = timerSeconds + atol(tempVal);
 currentState = 2;
 break;

 default:
 currentTimeValue[0] = currentTimeValue[1];
 currentTimeValue[1] = currentTimeValue[2];
 currentTimeValue[2] = currentTimeValue[3];
 currentTimeValue[3] = key;
 showEnteredTime();
 break;
 }
 }

 if (currentState == 2) {
 if (int(key) != 0) {
 if (key == '*') {
 relayStatus(false);
 displayCodeEntryScreen();
 currentTimeValue[0]='0';
 currentTimeValue[1]='0';
 currentTimeValue[2]='0';
 currentTimeValue[3]='0';
 showEnteredTime();
 currentState = 1;
 lpcnt = 0;
 timerSeconds = 0;
 }
 } else {

 if (lpcnt > 9) {
 lpcnt = 0;
 --timerSeconds;
 showCountdown();

 if (timerSeconds <= 0) {
 currentState = 1;
 relayStatus(false);
 displayCodeEntryScreen();
 showEnteredTime();
 } else {
 relayStatus(true);
 }
 }

 ++lpcnt;
 delay(100);
 }
 }
}

void showEnteredTime()
{
 lcd.setCursor(14,3);
 lcd.print(currentTimeValue[0]);
 lcd.print(currentTimeValue[1]);
 lcd.print(":");
 lcd.print(currentTimeValue[2]);
 lcd.print(currentTimeValue[3]);
}
void relayStatus(bool state)
{
 if (state)
 digitalWrite(controlPin, HIGH);
 else
 digitalWrite(controlPin, LOW);
}
void showCountdown()
{
 char timest[6];\

 lcd.setCursor(0,0);
 lcd.print("********************");
 lcd.setCursor(0,1);
 lcd.print("** COUNTING DOWN **");
 lcd.setCursor(0,2);
 lcd.print("** ");
 sprintf(timest, "%d:%.2d", (timerSeconds/60), (timerSeconds - ((timerSeconds/60)*60)));
 lcd.print(timest);
 lcd.print(" **");
 lcd.setCursor(0,3);
 lcd.print("********************");

}

void displayCodeEntryScreen()
{
 clearScreen();
 lcd.setCursor(0,0);
 lcd.print("Let's Make It Count");
 lcd.setCursor(0,1);
 lcd.print("Down Time...");
 lcd.setCursor(0,2);
 lcd.print("Enter Time mm:ss:");
}

void clearScreen()
{
 lcd.setCursor(0,0);
 lcd.print(" ");
 lcd.setCursor(0,1);
 lcd.print(" ");
 lcd.setCursor(0,2);
 lcd.print(" ");
 lcd.setCursor(0,3);
 lcd.print(" ");
}

 

Paul Reed's picture

Re: count down timmer program

Hi Warren. You may want to post your question in a forum which deals with general programming issues, rather than this one which is quite specific. I would try http://forum.arduino.cc which I often use for general support.

Paul - forum moderator

Robert Wall's picture

Re: count down timmer program

Paul - you're a rotter! I'd just written a reply saying it would be difficult to do it accurately, and he'd be better asking on an Arduino forum, and I lost it!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.