Excuse me for this rant, but better out than in.
So I've just come back to Arduino programming after a fairly extensive break, almost a year. I've got ten thousand lines of library code, dozens of hardware drivers, quite a lot of time invested. And, frankly, it's been like taking a succession of blows to the head. I'm not happy.
First, there's the whole "better read this carefully or we'll delete all your work" part of the IDE upgrade process that craps over anyone who's developed their own libs, or spent any time collecting them. Wonder how much of the community's work that blew away. (I read dialog boxes, but even then it was subtle)
Second, again for us library programmers, I notice we've gone "one arch forward, one src back", thus breaking everything twice. That might be fine, if the "how to write a library" page had been updated since 2011, or even linked to a discussion page that wasn't closed for years. The only documentation on the change is hidden half-way down a forum post. And "yeah, I changed it" is not a how-to.
Then there's the whole "prog_uchar" thing, which while it might be an avrlib issue more than yours ("hey, there's a difference between the spec and the way everyone uses it. We could easily change the spec, but instead let's break everyone's code!") I'll be damned if I can find useful information on how to cope with the change. A lot of people were encouraged by tutorials to use that RAM-saving trick, and now it's broken. I'll figure it out, but it's more hours out of my life. One #define in the right place and all the old code would probably still work.
I bought lots of Leonardo gear when that was supposed to be the future, and gee was that a mistake. No-one makes binaries for it, it's not source-level compatible, and the new ARM based variants are just creating a bigger explosion in unsupported boards.
I know that judging the Arduino IDE by the standards of a professional software development environment is a little unfair, but for goodness sake. Perhaps you should put the effort into an Eclipse plugin instead. Perhaps I'm doing it all wrong, and library development in the Arduino IDE isn't supposed to be an exercise in pure frustration, but with a complete lack of documentation or tutorials, how can I know?
This comes after years of learning that pretty much every part of the Arduino "learning experience" is badly designed, right down to the toggling of IO pins. Name one serious piece of Arduino code that uses portWrite() statements, and yet that's lesson 1 with blinky. You reach stages where you have to unlearn everything so far, in order to progress to the next level. And then you're on your own, on a sea of changing port registers and timer capabilities.
No line numbers. Errors in included files aren't hyperlinked. Recompiles rescroll the error window. Compiles that fail to rebuild the libraries. It's like you never expected any program to exceed 50 lines of code, or for people to use it past the end of the tutorial.
I don't understand what your strategy is, and I'm sick of being surprised by these lurching changes in direction, hardware, and software compatibility. (Anyone want my Leonardos? They're _almost_ useless.) I'm tired of having my time wasted. You're big on promise, but sadly lacking in implementation, and not getting better. The individual boards are wonderful - great hardware engineering. But all together, they're a shambles.
Think I'm being harsh? Perhaps so. But reality will be harsher if you keep doing crap like this. If you can't even figure out what directory structure your libs should have after years of vacillating, perhaps you should bring in some actual software engineers.
And ? Feeling relieved ? now you got it off your chest ?
I'm only an Arduino user, but I can answer a few.
The ATmega chips are microcontrollers: turn a led on, turn a led off, read a sensor. You know, just simple microcontroller things. Therefor digitalWrite() is a normal function. Do you have libraries with a lot of assembly code or tricks to make it faster ? Perhaps you use the Arduino for something that was not intended.
Things do change, and the Arduino changes. That is the way with our world. I bet you wear the same underwear for 20 years :o
Do you want Arduino to define the direction ? That is almost impossible. It depends on what users like and what kind of chips and hardware is developed.
Well, you know the default lame reply to all of this: It's open source, you can fork it and make it better :smiley-wink:
However, you can also do like me: go with the flow and have fun 8)
Okay, the documentation is sometimes wrong and outdated. It is teethgrinding frustrating that I can not fix that. (Let's hope that AREF is no longer connected to 5V in the tutorial (https://www.arduino.cc/en/Main/Standalone)..... What ! :smiley-yell: ).
There are line numbers, turn it on in the settings.
The prog_uchar did change, and you have to change the source code.
Most libraries support the ATmeg328P, and not every library supports the Leonardo. That's true.
Have a look at this new product : http://www.adafruit.com/products/2661 (http://www.adafruit.com/products/2661)
It's a Leonardo compatible board with Bluetooth included.
Adafruit maintains their libraries, therefor many Adafruit libraries should be compatible with the Leonardo.
Our "friends" at Arduino.org have a new development environment. And there are other IDEs made. I tried a few, but after all, I still use the normal Arduino IDE.
First, there's the whole "better read this carefully or we'll delete all your work" part of the IDE upgrade process that craps over anyone who's developed their own libs,
So why not stay with the older version of the IDE - the one used to develop your code? I get the impression that doing so would relieve all of your complaints.
It is easy to have several versions of the IDE on your PC - they are just Java programs.
I agree it is a PITA that the Arduino folks don't bother with backward compatibility.
Perhaps you should put the effort into an Eclipse plugin instead.
Search first then rant... I've been using the Eclipse plugin (http://eclipse.baeyens.it/) for months now and I love it. Takes a little bit of know how to get set up at first depending on your operating system and such, but that's part of using any big-boy IDE.
There are lots of other IDEs if you think in terms of Atmel (http://www.atmel.com/microsite/atmel_studio6/) and not Arduino.
Why is everyone always like, "YOU should do this or YOU should do that." It's open source. None of the people who wrote it are making any money or anything off of you using it so why should it be on them to make sure you like it. It's open source. If you don't like it, change it. It's not that hard.
That's how open source works, someone doesn't like how it works or it doesn't do what they need so they fork the project and improve it for purely selfish reasons so their project will work. The only difference is that they also share those changes so anyone else having the same problem can use it. It's not like it is in the commercial world where we make something so others will use it and we can sell it. Here we make things for ourselves, but we are nice enough to share for free.
I'm still having fun with the IDE and Arduino in general, but perhaps it is because I am not as much into the serious software engineering stuff yet. If you're serious about getting rid of the Leos, I would love to have them and will make use of them. That is my favorite type of Arduino despite the weird caveats. Please send me a personal message for my address.