I've been experimenting with an Arduino UNO board for a couple of months now. It is pretty easy to use for simple digital and analog I/O. I can see how non-technical types like artists and designers might gravitate to it. It's quite fun to just write a few lines of code and presto! The LEDs are blinking! However, making LEDs blink is interesting for the first 20 minutes or so.
On the other hand, the art of push-button debouncing... that's another thing altogether. Seriously, I spent a few hours trying to figure out a debouncing algorithm that worked to my liking. I finally found some examples of software debouncers and adapted one of them.
Now, if I ever want a good debouncer, I will probably just implement it in hardware.
I've barely started into my main project, and frankly, I think I am already "outgrowing" my Arduino. I have found that parallel I/O is not a part of the standard library. I don't really understand why. I have found that there are ways to work around this, but really, how hard would it be to make it part of the standard library? (I know I can make my own lib. I will.)
Another thing that bothers me is the IDE. Its simplicity is great. But, it is missing certain features of good text editors that I miss. So, I think I'm going to have to figure out how to run the compiler & loader independent of the editor. My project will involve several hundreds of lines of code. So, this will be necessary before I get too far.
But before I start writing my app-specific software, I'd like to check out Arduino interrupt programming. I read that it supports internal timer event interrupts as well as external interrupts. I'd like to see them in action.