Creating a GUI for detailed initial setup and customization.

Hello, I've been looking for a way to have a user (with supposedly little to no programing knowledge) make an initial setup for the program. I understand I could have it with pushbuttons etc, however I'd like to make it on a computer interface. I have seen a couple approaches to this problem however I'd like to know what's the best possible approach. I want the user to have the ability to set different times for an alarm as well as other details that go with each alarm.

Here are some possible solutions I have considered:

Create a web based page which would produce a text file which the Arduino could be programmed to retrieve and analyze on initial setup (however I understand that this can be a pain in terms of properly receiving the data in the sense that it won't be sent all at once and other complications I didn't really go into)

Use a third-party client (I'm considering Blynk), however their interface doesn't really offer the flexibility I'd like since it would provide some other complications on the users end due to its limitations.

Use a program like processing to receive and analyze the data before sending it serially to the Arduino. I really like this idea however after I took the time to familiarize my self with processing, it turns out that its ability to accept user input isn't exactly what I'm looking for. I'm thinking things like drop down menus and text input, as far as I know processing doesn't have a function that provides this easily. I'm willing to learn the code required for such programs, I just feel like I'm not looking in the right places.

Edit: Just to clarify, the program is fixed. In much simpler terms, I'd like to give the user to have the ability of setting certain variables before the program can really start.

(deleted)

There's libraries for that in Processing. Funny thing is I'm writing a library for this. You could try to learn about Java classes and get a sense of Object oriented programming. It really isn't too difficult.

@3mralm, it would be a big help if you explain the sort of configuration data you want to handle.

I can imagine (slightly oversimplified) that you have an Arduino program with two functions that represent two different tasks abd you want the user to be able to select one or the other. But that seems like it could easily be achieved with push-buttons or toggle switches.

But when I try to think of anything more complex I wonder if you really want a user to be able to create and upload a different version of a program without needing to know C++ or how to use the Arduino IDE? (That should be possible - but we need to know what you want).

...R

Google for arduino blocks.

spycatcher2k: Cool, thanks for letting us know.

Now, do you actually have a question?

Hi, I realize the indirect nature of my post. As I said I'd like to know what the best method is (in the community's opinion). I don't think I really said this though; the three methods I mentioned are somethings I barely got into and I was hoping that someone would clarify why or why not each approach was appropriate and if so, what is the best way to go about using them.

Thanks.

Robin2: @3mralm, it would be a big help if you explain the sort of configuration data you want to handle.

I can imagine (slightly oversimplified) that you have an Arduino program with two functions that represent two different tasks abd you want the user to be able to select one or the other. But that seems like it could easily be achieved with push-buttons or toggle switches.

But when I try to think of anything more complex I wonder if you really want a user to be able to create and upload a different version of a program without needing to know C++ or how to use the Arduino IDE? (That should be possible - but we need to know what you want).

...R

As I clarified in an edit; I want the user to set certain variables that will later determine how the program runs. Furthermore, it is one program that runs pretty much the same. For example, I'd like the user to choose what lights they want on and at what time they want them turned on. Instead of selecting pins that I've assigned to each pin I want them to choose from (preferably) a drop down menu with room 1, room 2 etc that they also assign to certain rooms (Living room, Bed room, etc..).

That helps to clarify what you want to happen.

I guess my next question is how you want the user to interact with the Arduino. It sounds like you are happy for her/him to do that using a browser on a PC.

If I was doing something like that I would build a web application using Python and the Bottle web framework. Using Python would make it very easy to communicate with the Arduino over its USB cable. With HTML and CSS it is very easy to create a nice-looking GUI.

And if the PC is part of a WiFi network the user could access the web page in the browser on their phone.

I am using a system like that to control model trains.

For another Forum user I posted a cut-down version of my Python program here. Feel free to use it if it helps. And just for the record I have put very little effort into the aesthetics :)

AFAIK the Python program should work fine on a RaspberryPi if you don't want to devote a PC to it.

And this is just one of many ways that you could achieve your objective.

...R