See the code in action on Tinkercad
/* Incorporate Versioning into code */ //Version Start #define MAJOR_Ver "1" //Major release version #define MINOR_Ver "02" //Minor release version char *buildVer = "v" MAJOR_Ver "." MINOR_Ver; //Version End //BuildTime Start /* Example of __DATE__ string: "Oct 23 2018" * char *dateArray = (__DATE__); * 01234567890 * This function is only used during compile time and has no effect on Arduino processing load * The purpose is to document when the board was programmed */ #define YEAR_CH0 (__DATE__[ 7]) #define YEAR_CH1 (__DATE__[ 8]) #define YEAR_CH2 (__DATE__[ 9]) #define YEAR_CH3 (__DATE__[10]) #define MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a') #define MONTH_IS_FEB (__DATE__[0] == 'F') #define MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[2] == 'r') #define MONTH_IS_APR (__DATE__[1] == 'p') #define MONTH_IS_MAY (__DATE__[2] == 'y') #define MONTH_IS_JUN (__DATE__[1] == 'u' && __DATE__[2] == 'n') #define MONTH_IS_JUL (__DATE__[2] == 'l') #define MONTH_IS_AUG (__DATE__[2] == 'g') #define MONTH_IS_SEP (__DATE__[0] == 'S') #define MONTH_IS_OCT (__DATE__[0] == 'O') #define MONTH_IS_NOV (__DATE__[0] == 'N') #define MONTH_IS_DEC (__DATE__[0] == 'D') #define MONTH_CH0 \ ((MONTH_IS_OCT || MONTH_IS_NOV || MONTH_IS_DEC) ? '1' : '0') #define MONTH_CH1 \ ( \ (MONTH_IS_JAN) ? '1' : \ (MONTH_IS_FEB) ? '2' : \ (MONTH_IS_MAR) ? '3' : \ (MONTH_IS_APR) ? '4' : \ (MONTH_IS_MAY) ? '5' : \ (MONTH_IS_JUN) ? '6' : \ (MONTH_IS_JUL) ? '7' : \ (MONTH_IS_AUG) ? '8' : \ (MONTH_IS_SEP) ? '9' : \ (MONTH_IS_OCT) ? '0' : \ (MONTH_IS_NOV) ? '1' : \ (MONTH_IS_DEC) ? '2' : \ /* error default */'?' \ ) #define DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : '0') #define DAY_CH1 (__DATE__[5]) #define SPACE (__DATE__[3]) // Example of __TIME__ string: "21:06:19" // Array position: 01234567 #define HOUR_CH0 (__TIME__[0]) #define HOUR_CH1 (__TIME__[1]) #define MIN_CH0 (__TIME__[3]) #define MIN_CH1 (__TIME__[4]) #define SEC_CH0 (__TIME__[6]) #define SEC_CH1 (__TIME__[7]) #define COLON (__TIME__[2]) char buildTime[] = {YEAR_CH0, YEAR_CH1, YEAR_CH2, YEAR_CH3, SPACE, MONTH_CH0, MONTH_CH1, SPACE, DAY_CH0, DAY_CH1, SPACE, HOUR_CH0, HOUR_CH1, COLON, MIN_CH0, MIN_CH1, COLON, SEC_CH0, SEC_CH1 }; //BuildTime End // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. dispText(buildVer, strlen(buildVer)); lcd.setCursor(0, 1); dispText(buildTime, sizeof(buildTime)); } void loop() { } void dispText(char textArray[], uint8_t n) { for (int i = 0; i < n; ++i) { lcd.print(textArray[i]); } }