arduino visual programming (rapid development)

Hi, I am Lubo from mechatronic hacks.
We like to use Arduino in our projects but we wanted to simplify and speed up the development process.
We wanted to turn arduino into a rapid development tool. So we created a Project Xenon. It's visual
based modeling tool.

You are not writing programs! You are developing a model of your solution and the environment generates
the program for you. It is a completely visual, drag & drop, graphic guidance based environment.

It extremely speeds up the development process e.g. we turned Arduino into a function generator under two hours (including hardware soldering):

The Project Xenon introduction: Mechatronic Hacks

It's a working prototype under development. We would like to hear your opinion.
Best regards
Lubo

What PC operating system does it run on?

I did not see a download link in the blog.

...R

It's build upon Eclipse RCP E4 (Java) so it is capable to run on Windows/Linux/Mac but we are testing only Windows version. The download will be soon available. Till then we would like to hear your thought about the concept.

Lubo:
Till then we would like to hear your thought about the concept.

I was hoping to take it for a spin first.

My personal view (without trying your product) is that I prefer the idea of people learning how to code the Arduino directly.

I have often seen people spend more time trying to figure out how to use some product that is supposed to make program development easier than they would have spent if they had built their project without it. And not just with the Arduino system. A lot depends on how much work is put into documentation and tutorials. Unfortunately Open Source programmers don't seem to like spending time on that stuff - and there is no money to pay professional writers.

Give a man a fish and his family is fed for the day. Teach him to fish and they are fed for his lifetime.

...R

A lot depends on how much work is put into documentation and tutorials. Unfortunately Open Source programmers don't seem to like spending time on that stuff

I like this part because you are reading my thoughts :wink: . Many times I have to use some different lib because of the missing documentation or support. We are putting a great effort to this too because we know about this issue.

But the concept behind Project Xenon is not only for non-programmer. Just imagine how much time would you spend on a simple task like: If some condition is met longer than 5 seconds do this for 3 seconds. And if some another condition is met longer than 3 seconds do this immediately. It is only several blocks in Project Xenon and you can immediately fine tune the solution.

Or something else, how many of you do use a state machines for robots (line-follower). It is a hard task to implement and a painful task to update the state machine because you don't see what exactly you are doing. So you end up by drawing boxes and lines to create a solution and the you implement the solution by code. In Project Xenon it is extremely easy task.

Lubo:
Just imagine how much time would you spend on a simple task like: If some condition is met longer than 5 seconds do this for 3 seconds

This sparked off another question ...
Can you use your product for part of a project and code the rest in the normal Arduino way? Perhaps I could use your product to create a function to do some task which I can then call from other parts of my Arduino program?

...R

Perfect question. We know that there are tons of great libraries so we want to let the user
use this libraries. We are now considering several options, although each of them has advantages
and disadvantages.

  • the Matlab/Simulink way. In Simulink you can create something called S-function. This function
    is something like DLL. It contains functions to make stuff like init, start, simulation, end.
    Then if you start simulation it invokes the corresponding function it needs.
    So you would have to create a special library to wrap your functionality.

  • the another way is something like this: during source code generation we put metadata inside the
    code. Something like @call. You will put inside your code meta data to function:

@Fun1 void connect() {...}

Then we create a pre-processor to interconnect these two parts.

  • the last option is this: the environment generates a library from diagram, you will add this library to your project
    and you will provide function pointers to this library. The library will then call your functions as needed. This is
    so called ,,Hollywood principle" -> don't call us, we'll call you :slight_smile:

Which one would you preffer?
Lubo

Lubo:
Which one would you preffer?

I'm not sure I have a view.

I think it would be easiest for the newcomer if your program was to produce a .INO file that they could add as another tab in their program. People have problem installing libraries and, in this case, the code will only be relevant to one project so the sharing benefit of a library is unlikely to be valuable.

My previous paragraph says nothing about the interface between your code and the rest of the user's code. I think it would be simplest if the user could just create a loop() function like this

void loop() {
  // user code
  myVal = myZenonFunction(myParam);
  // more user code
}

I'm guessing your code could automatically add comments at the top of the generated .INO file that explain the interface functions.

...R

Ok, we are in BETA now. Everyone can try it on AT-Mega 2560
micro-controlers: http://visiduino.io