myggle:
Thank you Ken for the great answer, and please forgive me for kicking this horse, as I don't yet know how to tell that it is dead or not, but if there is no function to be defined(), what then is the logical explanation for the parenthesis being there in the first place?
Just because a function requires no details to be passed to it, doesn't mean there's no function to be defined.
Consider a real world appliction. If you tell someone to paint, they'll need to know WHAT to paint and what colour to paint it. Even more importantly, If they've never done the job before, you'll also have to tell them how to do it. Now consider if you want them to somersault. This action doesn't require you to give them any details, but it's an action nonetheless. So if they don't know what that means you'll still have to describe how to perform a somersault.
So it is with setup(). At the begining of your sketch, your microcontroler will run the function setup(). But somewhere, you are going to have to give it the details of what that entails.
To define your setup function you use the line setup() followed by some open and closed braces and all of the details of the setup function described within.
Typically you'd have something like this
void setup()
{
runningTotal=0;
Serial.begin(9600);
}
This whole section is describing the setup function. Now, whenever you want to call it anywhere in your program, you can simply use setup(); (note the semicolon at the end of the line.
In reality, setup is a pretty poor example because it's unlikely you'll want to call your setup function again, but you could if you want to. And when you do, those () are going to tell your microcontroller that you want it to run off and do something.
Notice that within this small example, we are also calling a function Serial.begin(9600). This is not just setting a local variable to 9600, there's a bit of technical stuff that needs to be done in the background. (UART registers have to be setup to make the default baud rate 9600 and such stuff). Fortunately, you don't need to know the details of how it does this task, because someone else has gone to the trouble to define that function for you already.