runTime Not Working

I have a runTime = millis(), but it says there is an error with it.

'error: expected constructor, destructor, or type conversion before '=' token'

What does this mean and how do I fix it?

What does this mean and how do I fix it?

It means that you have an error on a previous line (or that you haven't properly defined runTime). To fix it, remove the error that is causing the message to be displayed. You don't know what the problem is? Well, we don't either, unless you post your code.

// SN74141 : True Table
//D C B A #
//L,L,L,L 0
//L,L,L,H 1
//L,L,H,L 2
//L,L,H,H 3
//L,H,L,L 4
//L,H,L,H 5
//L,H,H,L 6
//L,H,H,H 7
//H,L,L,L 8
//H,L,L,H 9

// SN74141 (1)
int ledPin_0_a = 2;
int ledPin_0_b = 3;
int ledPin_0_c = 4;
int ledPin_0_d = 5;
// SN74141 (2)
int ledPin_1_a = 6;
int ledPin_1_b = 7;
int ledPin_1_c = 8;
int ledPin_1_d = 9;

// anod pins
int ledPin_a_1 = 10;
int ledPin_a_2 = 11;
int ledPin_a_3 = 12;

long clockHourSet = 12;
long clockMinSet = 59;

int lastHourSet = millis();
int lastMinSet = millis();

void setup()
{
pinMode(ledPin_0_a, OUTPUT);
pinMode(ledPin_0_b, OUTPUT);
pinMode(ledPin_0_c, OUTPUT);
pinMode(ledPin_0_d, OUTPUT);

pinMode(ledPin_1_a, OUTPUT);
pinMode(ledPin_1_b, OUTPUT);
pinMode(ledPin_1_c, OUTPUT);
pinMode(ledPin_1_d, OUTPUT);

pinMode(ledPin_a_1, OUTPUT);
pinMode(ledPin_a_2, OUTPUT);
pinMode(ledPin_a_3, OUTPUT);

// NOTE:
// You can add a input here to for setting the time
#define HourSet A0
#define MinsSet A5

}

////////////////////////////////////////////////////////////////////////
//
// DisplayNumberSet
// Use: Passing anod number, and number for bulb 1 and bulb 2, this function
// looks up the truth table and opens the correct outs from the arduino
// to light the numbers given to this funciton (num1,num2).
// On a 6 nixie bulb setup.
//
////////////////////////////////////////////////////////////////////////
void DisplayNumberSet( int anod, int num1, int num2 )
{
int anodPin;
int a,b,c,d;

// set defaults.
a=0;b=0;c=0;d=0; // will display a zero.
anodPin = ledPin_a_1; // default on first anod.

// Select what anod to fire.
switch( anod )
{
case 0: anodPin = ledPin_a_1; break;
case 1: anodPin = ledPin_a_2; break;
case 2: anodPin = ledPin_a_3; break;
}

// Load the a,b,c,d… to send to the SN74141 IC (1)
// 1=H, 0=L. Truth Table
switch( num1 )
{
case 0: a=0;b=0;c=0;d=0;break;
case 1: a=1;b=0;c=0;d=0;break;
case 2: a=0;b=1;c=0;d=0;break;
case 3: a=1;b=1;c=0;d=0;break;
case 4: a=0;b=0;c=1;d=0;break;
case 5: a=1;b=0;c=1;d=0;break;
case 6: a=0;b=1;c=1;d=0;break;
case 7: a=1;b=1;c=1;d=0;break;
case 8: a=0;b=0;c=0;d=1;break;
case 9: a=1;b=0;c=0;d=1;break;
}

// Write to output pins.
digitalWrite(ledPin_0_d, d);
digitalWrite(ledPin_0_c, c);
digitalWrite(ledPin_0_b, b);
digitalWrite(ledPin_0_a, a);

// Load the a,b,c,d… to send to the SN74141 IC (2)
switch( num2 )
{
case 0: a=0;b=0;c=0;d=0;break;
case 1: a=1;b=0;c=0;d=0;break;
case 2: a=0;b=1;c=0;d=0;break;
case 3: a=1;b=1;c=0;d=0;break;
case 4: a=0;b=0;c=1;d=0;break;
case 5: a=1;b=0;c=1;d=0;break;
case 6: a=0;b=1;c=1;d=0;break;
case 7: a=1;b=1;c=1;d=0;break;
case 8: a=0;b=0;c=0;d=1;break;
case 9: a=1;b=0;c=0;d=1;break;
}

// Write to output pins
digitalWrite(ledPin_1_d, d);
digitalWrite(ledPin_1_c, c);
digitalWrite(ledPin_1_b, b);
digitalWrite(ledPin_1_a, a);

// Turn on this anod.
digitalWrite(anodPin, HIGH);

// Delay
// NOTE: With the differnce in Nixie bulbs you may have to change
// this delay to set the update speed of the bulbs. If you
// dont wait long enough the bulb will be dim or not light at all
// you want to set this delay just right so that you have
// nice bright output yet quick enough so that you can multiplex with
// more bulbs.
delay(3);

// Shut off this anod.
digitalWrite(anodPin, LOW);
}

////////////////////////////////////////////////////////////////////////
//
// DisplayNumberString
// Use: passing an array that is 8 elements long will display numbers
// on a 6 nixie bulb setup.
//
////////////////////////////////////////////////////////////////////////
void DisplayNumberString( int* array )
{
// bank 1 (bulb 0,3)
DisplayNumberSet(0,array[0],array[3]);
// bank 2 (bulb 1,4)
DisplayNumberSet(1,array[1],array[4]);
// bank 3 (bulb 2,5)
DisplayNumberSet(2,array[2],array[5]);
}

// Defines
long MINS = 60; // 60 Seconds in a Min.
long HOURS = 60 * MINS; // 60 Mins in an hour.
long DAYS = 24 * HOURS; // 24 Hours in a day. > Note: change the 24 to a 12 for non military time.
long runTime = 0; // Time from when we started.

//************************************
long previous = 0;
long interval = 1000;
int colon = 1;

//************************************

// default time sets. clock will start at 12:59:00
// NOTE: We start seconds at 0 so we dont need a clock set
// The values you see here would be what you change
// if you added a set clock inputs to the board.

////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////
void loop()
{

// CHANGE HOUR
if (digitalRead(HourSet) == 0)
{
if (millis() - lastHourSet > 100) // change 100 to some variable if you want to make the rate of change adaptible
{
clockHourSet++;
if (clockHourSet == 24) clockHourSet = 0;
lastHourSet = millis();
}
}

// CHANGE MINUTE
if (digitalRead(MinsSet) == 0)
{
if (millis() - lastMinSet > 100)
{
clockMinSet++;
if (clockMinSet == 60) clockMinSet = 0;
lastMinSet = millis();
}
}

// DISPLAY TIME

}

// Get milliseconds.
runTime = millis();

// Get time in seconds.
long time = (runTime) / 1000;

// Set time based on offset…
long hbump = 6060clockHourSet;
long mbump = 60*clockMinSet;
time += mbump + hbump;

// Convert time to days,hours,mins,seconds
long days = time / DAYS; time -= days * DAYS;
long hours = time / HOURS; time -= hours * HOURS;
long minutes = time / MINS; time -= minutes * MINS;
long seconds = time;

//*****************************
unsigned long current = millis();
if( (current - previous) > interval)
{
previous = current;
if (colon == 0)
{
colon = 1;
}

else
{
colon = 0;
}
}
//*****************************

// Get the high and low order values for hours,min,seconds.
int lowerHours = hours % 10;
int upperHours = hours - lowerHours;
int lowerMins = minutes % 10;
int upperMins = minutes - lowerMins;
int lowerSeconds = seconds % 10;
int upperSeconds = seconds - lowerSeconds;
if( upperSeconds >= 10 ) upperSeconds = upperSeconds / 10;
if( upperMins >= 10 ) upperMins = upperMins / 10;
if( upperHours >= 10 ) upperHours = upperHours / 10;

// Fill in the Number array used to display on the tubes.
int NumberArray[6]={0,0,0,0,0,0};
NumberArray[0] = upperHours; //
NumberArray[4] = lowerHours; //
NumberArray[2] = upperMins; //
NumberArray[3] = lowerMins; //
NumberArray[1] = colon; //Digit 4, wire 0

// Display.
DisplayNumberString( NumberArray );
}

was declared runtime?

if not, write: unsigned long runTime; before runTime = millis();

however, what PaulS said sums it all;)

CarnifexMaximus: ``` // Get milliseconds.   runTime = millis();

  // Get time in seconds.   long time = (runTime) / 1000;     // Set time based on offset..   long hbump = 60*60*clockHourSet;   long mbump = 60*clockMinSet;   time += mbump + hbump;

  // Convert time to days,hours,mins,seconds   long days  = time / DAYS;    time -= days  * DAYS;   long hours = time / HOURS;   time -= hours * HOURS;   long minutes  = time / MINS;    time -= minutes  * MINS;   long seconds  = time;     //*****************************   unsigned long current = millis();   if( (current - previous) > interval)   {     previous = current;     if (colon == 0)       {         colon = 1;       }           else       {         colon = 0;       }   }   //*****************************         // Get the high and low order values for hours,min,seconds.   int lowerHours = hours % 10;   int upperHours = hours - lowerHours;   int lowerMins = minutes % 10;   int upperMins = minutes - lowerMins;   int lowerSeconds = seconds % 10;   int upperSeconds = seconds - lowerSeconds;   if( upperSeconds >= 10 )   upperSeconds = upperSeconds / 10;   if( upperMins >= 10 )      upperMins = upperMins / 10;   if( upperHours >= 10 )     upperHours = upperHours / 10;     // Fill in the Number array used to display on the tubes.   int NumberArray[6]={0,0,0,0,0,0};   NumberArray[0] = upperHours;     //   NumberArray[4] = lowerHours;     //   NumberArray[2] = upperMins;      //   NumberArray[3] = lowerMins;      //   NumberArray[1] = colon;          //Digit 4, wire 0      

  // Display.   DisplayNumberString( NumberArray ); }

This code ends with '}' which does not correspond to any open function

Perhaps you wanted to include everything in a function? ;)

// DISPLAY TIME

}

// Get milliseconds.
runTime = millis();

The “}” ends the loop function. The code:

  // Get milliseconds.
  runTime = millis();

is not inside any function now, hence the error.

int lastHourSet = millis();
int lastMinSet  = millis();

Fix this, or don't come back. The millis() function returns an unsigned long, not an int.

I fixed the curly brace problem. It works now. Thank you.

int lastHourSet = millis();
int lastMinSet  = millis();

Since you have truncated the time to 0xFFFF your code should fail in roughly 1.09225 minutes, as PaulS spotted, or perhaps 32.767 seconds, depending on the signed arithmetic.