• I certainly found the Espruino to be much less painful to start with than Arduino. I wouldn't say the Arduino was hard, but doing more than the basics with it gets harder faster than the Espruino. SPI and I2C are tricky to use. On Espruino, I2C just works. SPI just works.

    The other thing that makes getting started a lot easier is that you can do things interactively, instead of write, flash, test, repeat with Arduino. That lets you quickly figure out how to interact with something, and how the different functions behave.

    That said, I disagree with the phrase "less bull between the geek and the board" - you've got it backwards. On the end of "nothing between you and the board", would be programming a microcontroller in straight C, and instead of digitalWrite(), you put some value(s) into one or more registers - that's the opposite of what you want. With Arduino, it's in the middle - you're writing C, but they've provided higher level functions so you don't need to know that to make pin 3 go high, you set this bit of this register, and that bit of that other register, etc - you just do digitalWrite(3,1), and the definition for digitalWrite() where the Arduino guys did that work for you gets compiled in. In the Espruino, not only is a generally better job done of covering up that kind of crap, but the entire paradigm is changed. In Arduino, you're writing the main loop, you're forever reimplementing things to do time delays gracefully (ie, what we do setTimeout and setInterval for - I swear, like a quarter of posts on the Arduino forums are about that) - In Espruino, it's event based, which really makes a lot more sense for most of the kind of things you'd want to do with a microcontroller. You've got more between you and the board on Espruino, but it's not bull, it's there to cover up the bull.

    A few other comments...

    • You will never learn using microcontrollers, or programming anything frankly, if you get one and just follow through examples. You learn by wanting to do something that you need this capability for, and learn it with that goal in mind. From there, it's easier to apply to other projects. The project to show a temperature on an LCD is interesting not because that's an interesting thing to do, but because it's an example of reading a temperature, an an example of controlling an LCD, waiting for you to ripoff the code and adapt it to your ends.

    • Speaking of which, IME, it's usually easier to move around pieces of Espruino JS code (between projects, from examples, etc) than arduino C, or maybe I just write shitty C but passable JS.

    • The trick is picking the first few projects that's interesting, but not particularly hard in the ways you don't understand. Of course - that sense of what's hard and what's easy is exactly what you don't have when you're new to working with something. It helps of course to have something where the "easy" areas are larger, which is very much the case with Espruino vs Arduino.

    • Espruino IDE and ST driver is painless to install on windows.

    • I use AVR devices, programmed through Arduino IDE all the damned time. I don't use them for anything particularly sophisticated, though - the Espruino does that much better. But you can drop a Tiny 84 or 85 onto a board, and write some dead simple code and replace a fistful of 555's, multivibrators and logic gates with one chip, and update the behavior later without using a soldering iron. That's the kind of thing I do with Arduino, and it's very well suited to the programming style of the arduino. I've got a few tinys taking orders over RF from an Espruino (and plans for more), plus I use them to do battery indicator, dimming, and fan control on my 150W LED flashlights.

  • the definition for digitalWrite() where the Arduino guys did that work for you gets compiled in.

    I'm not trying to derail the thread, but these definitions are made by Hernando Barragán of the wiring framework. One of the Arduino founders were his professor and then started Arduino based off Hernando's master thesis project (and yes, I'm affiliated with Wiring as a core team member, I apologize for mentioning this here, I have not publicly done this before but it annoys me [much more than Hernando, he's the better man in all this]). </rant>

    To be on topic: I've tried a lot of various boards and ecosystems. This is my favorite.
    It's also easy to use Espruino first to learn how to program against hardware (and I completely agree with DrAzzy, the only way to really learn is to make a project). If you feel like you want to learn C, you could then pull down the Espruino runtime from GitHub and extend it there and further educate yourself as a programmer.

    It is beginner friendly, and open for diving into the more bare-metal world of C.
    Good luck!

About