GUI

It seems to me like a large proportion of Micro-controller users (myself included) are not interested in spending hours developing code, trying to get cryptic bits of text to perform simple tasks.

With powerful computers at our finger tips and a wealth of lateral thinking programmers, why hasn't someone developed a smart GUI that enables one to define Inputs / Outputs and Functions, using a visual orientated interface. (click, drag and drop)
Is there any such GUI out there? Will it ever happen?

Lego Mindstorms springs to mind.

Lego Mindstorms uses a version of LABview software to do just that. LABview and Simulink are powerful enterprise-level software that major companies use to develop control systems in cars, jet engines, etc.

The Fritz system is visual and a similar system could be made to produce the software you load into the device. Nobody's built that part, so if you are keen for it... go implement it! Of course, to build that visual system, you'll probably need to be a very competent "cryptic text" programmer who hates using "cryptic text" to program. This is probably why it doesn't exist yet.

Going visual is just a different flavor, but no magic panacea that makes everything easier and bug-free. The Toyota brake/accelerator recalls come to mind: they somehow didn't think that they should arrange the inputs so brake commands took precedence over acceleration commands!

It's probably much more instructive to use those "cryptic bits of text" because you develop a more rigorous understanding of the registers, memories, ports and other components that make up a microcontroller. If you add a layer of "cryptic squiggles of lines connecting boxes" it's much harder to see how much processing overhead your code will take up-- will it run slowly or quickly?

Give it a try with an open mind! It won't be as bad as you think.

Im industrial in my profession and have asked the Arduino to communicate with iFix and QuickView using modbus protocol. Easy for me. QuickView is native Modbus while iFix has longer demotime.

Give it a try with an open mind! It won't be as bad as you think.

I agree. Many come to Arduino with some or even a lot of programming knowledge and experience but no basic electronics experience. Others come with electronics background but no or limited software knowledge. A few come with neither type of prior experience and still manage to learn by examples, documentation and of course with posted questions. While a PC based 'visual Arduino' programming language would certainly help a few beginners to get started, I think it goes somewhat against the original mission of the Arduino team to create a LEARNING tool for people of all backgrounds.

I'm sure the frustration is that many beginners wish to start right out on a complex project and get frustrated with a learning curve that starts out with blinking a single LED. :wink: But starting simple and learning step by step is the most productive path in the long run.

Lefty

Hell, arduino would be seriously boring with a clicky interface. An alternative to Lego is Picaxe (google it) it has an interface for secondary school children. Sparkfun sell it in the US.

Maybe you would enjoy using Scratch for programming?

Doesn't work with Arduino (afaik)

To me the enjoyment is in the using of the end product, not spending endless hours trying to come to grips with the how and why of programming.

It's like build a model R/C plane from scratch. The chances are you will never finish it off as there are too many other things in life to get on with. All you really want to do is fly it.

What we need is more young kids getting into electronics and we achieve that by not complicating their passage to achieving end results. For me, I would like to see a smart GUI for Arduino/Basic Stamp etc...

Well, as someone mentioned above you would probably do better with Lego Mindstorms than Arduino.

That said, what is the "end product" you are referring to? If it is a self-generated/self-designed project, there is no end product until you complete it. If you don't like programming but have ideas, maybe you can partner with someone or hire someone to do the programming parts.

I sort of know what you mean - but if you are doing something custom, there is no help for getting your hands dirty (or hiring someone to get their hands dirty).

Short version: I think a GUI-oriented interface would fail to attract enough "real programmers" to write support the broad range of devices that users would like Arduino to support. And, it's not clear to me that a GUI interface would actually be any easier to use. (There are products that do that sort of thing, leading to advertisements for highly-paid positions for people who are actually capable of using them to create useful end applications. Someone mentioned labview? http://www.labviewjobs.com/login.php?u=jobseeker )

I think that it is also important to understand that only a small number of projects are designed to use the Arduino so they would end up as an EXTENTION to the PC... and only they would need some form of a PC gui. Many projects are standalone devices with their own user interface that relies on LEDs, or LCD displays and buttons.

I'm just saying you should broaden your view of what the Arduino actually is and try to realize that a SIMPLE gui as your explain it would be quite limiting.

For example: What devices would you want to support? Just the Arduino's capabilities or other add on devices such as the thousands of potential sensors etc. Please explain better what you are expecting.

If you never want to actually program, there are many completed projects in the Exhibition section of the forum and on the playground.

I have used both Labview and "cryptic bits of text" to develop embedded control projects, and I'll take the text interface any day. The advantage of Labview is that it comes with a large library of instrument drivers and controls, but I find the actual development process more difficult than coding in c, as much as I dislike c as a language. The other problem is that Labview is expensive and not open source. I could see using a GUI to configure a narrow application, but there's a reason that all the world's best software is still developed using "cryptic bits of text." You just can't beat the flexibility.

A clicky'drag'drop GUI will probably help developing basic tasks, but you'll almost always be dropping into the cryptic magic texts to fine tune and do what you really want.

I've been programming for several decades, so I probably have a skewed point of view of this, but I find satisfaction of really understanding how things work at the low level, to use that knowledge to exploit every bit of performance of the hardware.

The arduino is not your heavy duty minicomputer that has shitloads of resources available, so it is vital to understand the limitations, and instead try to learn how to best utilize this to your needs.

Unfortunately, click'n'drag'n'draw type GUI's will mostly generate code that quickly eat your available resources.

Whats very good about arduino, is that its open source, you dont need to invest a shitload of money to get a development kit, there is a large community that is using it, and there is already a ton of resources on how to do things with it. And, if you get past a certain point in the learning curve, you could do amazing things with very cheap hardware.

Remember, amazing things could be done with the commodore 64, and that was a 1mhz cpu with 64KB ram :slight_smile:

That said, there is nothing wrong to develop a click'n'drag GUI for the arduino, and it probably would broaden the user base, but there is lego mindstorms out there already, and having a bit more hard core, cheap, open source alternative is a great portal of doing amazing things with a microcontroller. I'll say that investing time to learn the magic text of programming C/C++ will be very rewarding in the long run.

I live by "Find, and use the right tool for the job", and "if its fun and rewarding, keep doing it", arduino is a very nice tool for many things, and it is extremely fun to work with, Your results may vary.

Im a little bit confused in this thread. (Too?)
Is it a GUI or an IDE you want, Kend?

Some 15 years ago I met a Doctor (Medical) who in his "spare time" developed a micro-controller based development system called Koala. (being an Australian)

The system was designed for use in schools. As such its focus was on understanding how different electronic elements could be interfaced and used as functional devices.

The device was programmed/configured by selecting symbols from a library such as AND and OR Gates, Latches, Op-amps, Caps, Resistors, Transistors, Oscillators, Counters, Timers etc. It had an on board LED for displaying results. One simply dragged and dropped symbols, which made up the schematic of the circuit you wished to achieve. It worked a treat - once set up it would run as a stand alone controller.

Anyone with a basic understand of electronic systems could program the micro with no or little knowledge of how to write code. I admit that complex designs where not possible but it sure was easy to get an appreciation of how electronic components are used as building blocks.

Time has moved a I acknowledge that the current bread of micros are amazing. From a newbie point of view, (newbie to Arduino that is) its a case of where do you start with the overwhelming choice of micros and programming languages. This choice would be made easier if there where a graphical programming tool available. Maybe IDE is the correct terminology.

Arduino in Visual Studio Beta

I'm keen to hear from anyone that would like to beta test an arduino extension for visual studio called Visual Micro. The extension makes it easy to build on new or existing sketches.

Visual Micro maintains sketch compatibility with arduino whilst allowing visual studios C++ intellisense to work with ANY core and ALL libraries.

The product is “boards.txt” and “serial port” aware, retains the board and port per project and allows arduino library folders to be added via a single menu click.

For anyone who doesn't know or can't remember arduino class, struct and method names the intellisense is very useful. You can read more about more Visual Micro features here http://www.visualmicro.com

If you would like to register as a beta tester please send us an mailto://beta@visualmicro.com or use the link on the Visual Micro home page.

Thanks

Visual Micro Development Team

roypardi

Maybe you would enjoy using Scratch for programming?

Scratch Lowers Resistance to Programming | WIRED

Doesn't work with Arduino (afaik)

Arduino does work with Scratch, but Scratch doesn't execute on the Arduino.

I've written the firmware for three implementations, and along with two colleagues, designed two Scratch "sensor-boards" based on Arduino, for a UK university.

I should be clear, the Arduino-based board is an external physical computing interface. It is a "sensor-board". Scratch does not run on it but instead controls it (a bit like a host program using an Arduino running Firmata).

Instead, Scratch has been extended to have some new programming blocks which represent capabilities provided by the sensor-board, and the Scratch developer uses them in her program to control the sensor-board.

We have developed a simple protocol to communicate with the sensor-board for the existing features, and with space to expand.

So, this provides a Scratch-style programming system, using a sensor-board with some useful electronics on board. It has the traditional Scratch slider, button, sound sensor and 3.5mm jack sockets for plugging in sensors. It also has LEDs, Infrared receiver, two servo sockets, and a motor control for a stepper or two DC motors.

We have retained the Arduino bootloader so that folks can use and extend it in ways we can't even imagine.

We left space in the protocol so new features could be added, and to give a route for real-time processing to happen on the board.

(So, would you like to direct a RepRap from Scratch, maybe build a solid 3D representation on where 'the cat' has been? Yes, that is probably feasible. )

Right now, one could build a tethered robot, controlled using the extended Scratch on a host PC. Or make the leap to C and program the same robot using Arduino libraries executing directly on the same board, so that it could be untethered and roam free :).

I'd love to get a subset of Scratch executing on the board, but that isn't currently part of the project, and I'd need help with the Scratch side (my SmallTalk is weak and rusty).

If we did get a subset of Scratch working on the Arduino, then folks could transition rather neatly. A 6 year old could start with Scratch, and have the delightful experience of moving to a physical computing platform seamlessly.

This might also satisfy those folks who would like a gentler, more visual, path to ease in to programming.

HTH
GB-)

PS: If Leah Buechley reads this, I'm trying to get in touch, but maybe my email is bouncing?

I think that it is also important to understand that only a small number of projects are designed to use the Arduino so they would end up as an EXTENTION to the PC... and only they would need some form of a PC gui. Many projects are standalone devices with their own user interface that relies on LEDs, or LCD displays and buttons.

I'm just saying you should broaden your view of what the Arduino actually is and try to realize that a SIMPLE gui as your explain it would be quite limiting.

For example: What devices would you want to support? Just the Arduino's capabilities or other add on devices such as the thousands of potential sensors etc. Please explain better what you are expecting.

If you never want to actually program, there are many completed projects in the Exhibition section of the forum and on the playground.

Exactly, the projects I started with were simple but it didn't take long to learn Arduino c++ from examples and posting questions. Now the applications I create are more complex, and they can be as complex as I want them to be without any limitations. I honestly couldn't imagine a gui could encapsulate everything needed to adequately utilize the creative scope of the Arduino.

There are things I still want to do which are more complex than things I've done in the past, and I know everything I might ever need I can find by searching the forums.

Dowloaded Scratch and tried it... seems interesting... Can someone point me to something on getting input from arduino to scratch? Also is there kind of language wrapper for scratch?(i know its not perhaps the right place to ask but as always all first questions go in the arduino forum!) A language wrapper for the text appearing on top of the blocks so that i can try to get some regional language text on the blocks. Will open up a world of possibilities!

Can someone point me to something on getting input from arduino to scratch?

I'm afraid my stuff will not be available until the summer. We are improving the board some more, to make it a bit more robust.

A language wrapper for the text appearing on top of the blocks so that i can try to get some regional language text on the blocks.

That's a very good question. I'l ask.

GB