then the arduino would comm with the PC and ask the user for the three variables they wish to input.
You may just be having a hard time explaining to us what is very clear in your mind, but it is best to think of the Arduino as an idiot that needs to be told exactly what to do.
The Arduino should not be asking the PC what to do. The PC should tell the Arduino what to do.
So, you need to develop an application for the PC (as I mentioned earlier, I like C# for this, and it is free from Microsoft, now) that interacts with the user, and sends directives to the Arduino.
The application could have fields where the user keys in data, or some more idiot-proof method. For instance, if you want to collect on time, you could present a text field, where the user could type 3 (for three seconds) or three or -4 or forever or banana.
Now some of the input makes sense, and some does not. Alternatively, you could use a slider that had a lower limit of 0 and an upper limit of whatever seems reasonable. With that, the user can't enter an invalid value. Pretty hard to drag the slider so that the value is banana.
Pulse count could be done the same way. 0 would mean forever. Any other value would mean a discrete number of times.
Once you know what data you want to send to the Arduino, the next step is to figure out how. The choices are ASCII and binary. Binary is easy when the values are byte sized, but more difficult when the values are ints or floats.
If you go with ASCII (and I'd recommend that to start with), you need to use start and end of packet markers, so the Arduino knows when a whole message has been received. For instance, you might send "<12, 10, 100>" to tell the Arduino to generate 12 pulses, with 10 millisecond on time and 100 millisecond off time.
I have made a basic flowchart on how i would like it to work.
Excellent first step. Sharing it would be step 2.
Basically I just need a few tips on how I might get started. Im not looking for someone to write the code for me. I want to be able to learn from it; I know it will be challenging. But I feel if i only write basic code - I feel I will learn nothing from this awesome microcontroller.
Getting two computers to talk to each other, to share data, and to act appropriately with that shared data is never a trivial task. So, you WILL learn (or re-learn) something.
Your attitude seems right to get this project done.
Break the project into steps, and work the steps one at a time. On the PC:
Create a form to collect the data from the user.
Connect to the serial port.
Format the data to send to the serial port.
Send the data to the serial port.
Read the response, if any.
Show the response to the user.
On the Arduino:
Check for serial data to read.
If any, read and store the serial data, if there is room. As each character is read, see if it is a start marker, and end marker, or something else.
Do different things with the start marker (initialize the array, initialize the index, and set a started flag and clear the ended flag), the end marker (set the ended flag and break out of the while loop), or other character (store it in the next position in an array, increment the index, and append a NULL, if there is room).
When the started and ended flags are true, parse the data.
When you have some data, do the appropriate stuff with that data.
I have a C# application that talks to an Arduino that you could use as a starting point. If you are interested, PM me with an e-mail address, and I'll send it to you.