Not that it is best practice... but it does work so is there a reason NOT to do it?
Readability. When looking at code that uses the output of digitalRead() in a comparison,
if(digitalRead() == HIGH)
makes more sense to me than
if(digitalRead() == true)
The HIGH value implies that digitalRead() returned something that we can use. The true value implies that the digitalRead() was successful.
boolean rooftemp = digitalRead(roofInput);
But, digitalRead() does not return a boolean.
Yes, the result is exactly the same, but one implies things that are true and one implies things that are not. To me, at least.
I have written this code for my own use and not to mass produce or hand to other people so the comments and variables work for me.
That's fair. But, might I suggest that if you put that code away for a month, it will make less sense than you think when you come back to it. If you try to write code as though lots of people needed to read, understand, and approve the code, you will strive to make the code self-documenting and crystal clear.
As a beginner, though, the code is well organized (except that I like to see the functions in the order that they are used. hold() is called before a lot of other stuff, yet it is near the bottom of the code).
I certainly wasn't criticizing your thought processes or code. I simply wanted to point out some things that I thought would make it better.
(I hate having my code reviewed, too. It's never as perfect as I think it is.)
These connections have opto couplers and other basic...
This is stuff that was not at all obvious from reading the code. Might I suggest a big comment block at the top that contains this stuff (or at the bottom if you don't want to scroll past it every time).
When power is applied to the arduino I figured it made sense to dump it to a "hold pattern" to simply listen for the vehicles ignition to be on as opposed to write "exceptions" into each portion of the code to skip the portion if the ignition is off.
I'm not sure that exception handling is quite right here. A read and an if test on each pass through loop() are pretty easy.
if(digitalRead(ignitionOn) == LOW) // Ignition switch is on..
{
}
else // Ignition switch is off
{
}
Now, having all the details on what the system is supposed to do,
Basically, if I power up the arduino it will operate my code seemingly properly. Everything works and I know a loop is happening because a dimming circuit is functioning. After about 30 seconds (I counted it several times and it was the same every time) the arduino resets. The dimming circuit stops, all outputs flop to their pullup and millis goes back to zero for about a second then it starts working again.
does this mean that if you power up the Arduino, and there is (or is not) ignitionInput supplied, that the Arduino resets after 30 seconds? Or, is the problem that the Arduino resets when there is ignitionInput but no response from the PC?
I'm trying to get a handle on the portion of the program that might be causing the issue. The fact that you see millis() go back to 0 implies that the PC is connected and working.