I've tried using some, such as a brief stint with Atmel Studio some years ago, Eclipse, and a couple others I can hardly remember. My biggest complaint was how tedious it was to start a project. They start asking you questions that a hobbyist isn't going to have enough background to answer.
Arduino takes those and hides them. Yeah, it means you might have less flexibility, but by the time those important hardware details actually become relevant, the user has probably amassed enough experience and knowledge on micros and AVR chips that they'll now be able to use those fancy IDEs.
Arduino isn't about being the final product, or for becoming the next best IDE, it's about teaching, learning, and prototyping. It's about teaching a generation that programming, hacking, and technology isn't out of their reach or understanding. I've taught middle schoolers from rural areas in Puerto Rico how to control things with an Arduino.
One of them build a timer/thermostat for their house using scavanged IR leds from a broken TV remote, a few passives, and a temperature sensor that costs about $0.50USD. He now has a system that will turn on and adjust the Mini-split AC unit in his room, so it cools his room down slightly before he gets home. His unit was an older, cheaper model that did not have a built in thermostat (or the thermo died, I'm not completely sure). That student now wants to go into Electrical Engineering in college, and now thinks he stands a chance at getting into college, where he didn't before.
That is why Arduino is so popular.
Between the impossible setup, the non existing documentation, the examples that don't work if there are any. Just kidding, there are never any example at all.
Arduino can actually run a program and do shit. You can turn on a led in your first hour. And if you are an experienced programmer you can google the name of the function and see what arguments it takes and turn the led off and on. Amazing.
Blinking a led is a 3 weeks project on a normal hardware platform. And that's when it goes well.
Average cost is gonna be about $100 for the board. Oh, did I mention you'll need another $80 for the programmer? It only runs on Windows XP, by the way. Closed source custom USB driver that no one understands. Wine chokes out, so no running it on Mac or Linux. PS: The programmer was the "student edition". You'll only be able to program their low end series of chips, and hardware debugging is disabled.
I forgot to mention. You're limited to the free assembler / IDE, that only allows you to use 4k of space. If you want to use any more, you need to purchase a license for $250. And by "integrated", I mean no using your own makefiles or editors.
There's no "stack overflow" style community, either. Your support is limited to poorly written app notes behind a crumby web portal.
And then the Arduino came out. $20 gives you the board, and programmer. No licenses. No drivers. Open documentation. Works with a fork of GCC. Want to use VIM and Makefiles? An Eclipse based IDE? Work on a Mac? Comes with a vibrant community, a repository of examples, and inexpensive addon hardware.
TL;DR - Want your product to die? Force me to use your crumby closed source / "evaluation period" tools from the 90's, lock everything away behind NDA's and web portals, and provide no support community for your product.
Looking at you, FPGA manufacturers. Does your revenue come from selling chips, or selling crap development environments?
FPGA development process is aimed squarely at corporations and rightly so.
There is very few hobbyist projects that really require FPGA. Most of cases where I saw FPGA in use was not because it was needed but because the person didn't know how to achieve the result using other, more appropriate means.
Sure, I wouldn't burn too much money advertising FPGAs to makers and hackers. But I wouldn't design my platform to exclude them.
The accessibility and hackability of the Arduino and the Raspberry Pi helped create the IOT field (for better or for worse). The only reason the Raspberry Pi exists is because there was an insider at broadcom that was able to convince them to sell a smaller quantity of chips.
> We were able to get our foot in the door to discuss buying chips in much smaller numbers than they usually sell (you’re right about millions of chips) because Eben works there and was able to get access to the right people, who were right on side once we had explained the goals of the charity. [1]
Alienating and raising the barrier for smaller players hinders business development. What cool projects would exist now if FPGA vendors weren't so stuffy?
[1] - https://www.raspberrypi.org/blog/qa-with-our-hardware-team/
I think the comparision is like between CPU and GPU. GPUs are fantastic at solving some of the problems but you don't see people rushing to use GPUs in every computing application.
Chances are, if you can implement it on MCU you will want to implement it on MCU because:
1) you need an MCU anyway either separate or FPGA based one
2) FPGA programming is sucha a hassle and not because of the tools but because it is genuinely hard
3) learning FPGA development well is a major effort as it requires different type of thinking. It is much more of a change that going from one programming language to another as entire concept of what is a program changes.
4) if you need more power, it is typically easier to step to more powerful MCU than to FPGA.
As I understand, we need some number of very specialized people that can invest the time to learn hardware design on FPGA and the rest is better off spending that time thinking of fun MCU-based projects:)
VHDL is a different thing entirely from any programming language. It's not ranked as a programming language by the way. It might be easier to learn if you don't know any programming but know how to make integrated circuit boards.
I do agree about the expensive programmers though. However, there were people out there who wired up their own using the STK200 configuration and put the schematics online for the community's use.
Programmers (irrespective of micros) have always been relatively expensive - even the home-brew ones. It's only recently (say in the past 5-8 years) they've become cheaper thanks to people's interest in hobby boards like the Rasberry Pi.
The biggest problem was the availability of JTAG debuggers. Atmel had the reference, closed-source implementation. Although the community managed to eventually reverse engineer their implementation and cheaper ones became available on eBay (usually from China).
Arduino solved the "easy on ramp" problem; that was the problem that needed solving.
This allowed a community to spring up (because now everyone had the same hardware [initially]) and so sharing was possible/easy in a way that bare AVRs on random breadboards didn't support.
When you are complete newb, you can't diagnose and fix problems. By definition you can't yet understand how things work which is prerequisite to debugging.
This first step is then most critical -- if it doesn't work immediately many people will be just put off completely.
If it works, people can tinker with it, see result, learn, etc. They can't learn in the absence of feedback.
Newbs will not be able to judge if IDE is "poor" or C++ preprocessor is "horrible". What's most important is that it works right away.
The variant of C it uses is actually not bad at all for what you end up doing with AVR's. I have looked at Lua and MicroPython and for me the problem is that they do a little too much abstracting away of the hardware. I mean on the one hand, great I can write Python. On the other hand it might not work because you don't have the low level control you need inside interrupt handlers to not screw up your state. As for the pre-processor, well again it's not something most casual users use. I remember looking through WordPress's core code about 10 years ago and there was a statement in there that amounted to variable assignment... but using a damn eval(). Does an average WP user care?
I'm also fairly sure thats why its popular with more artistic people.
When I was brand new to embedded development I spent dozens of hours struggling with a bare ATMega8 before finally getting an LED to blink. It was all simple stuff, but overwhelming when you're in a new and unfamiliar environment.
After playing around with that for a while I got an Arduino, and was able to blink an LED in minutes, and there was a clear path to move on to more sophisticated things.
I completely agree that the Arduino IDE is horrible to use, but it makes up for that by making it easy for beginners to get started.
I'm a professional embedded systems engineer and I do tons of side jobs with Arduino because I can build a one-off in an hour whereas on a bare AVR, even starting with my own prebuilt framework, I'd be looking at many multiples of that time.
Right now I'm working on precision motion control using resolvers and I'm still building with Arduino because of all the readily available parts in that ecosystem.
The community.
If you can write a PID loop, you aren't the target audience.
If you have an old toaster oven and need to control the temperature and you have no idea what a PID loop is, you are the target audience. You can go get an implementation from the community for "the thing that controls temperature" and get on with life.
Maybe there was another board that could do this, but if even I didn't learn about it, they sucked at promotion.