4 ms·
I don't understand it either. The main part of Arduino is the hardware abstraction library. Especially for the standard stuff, like iwc, spi, ... this hal make
by turbinerneiter 6y ago
I don't understand it either.
The main part of Arduino is the hardware abstraction library. Especially for the standard stuff, like iwc, spi, ... this hal makes your code portable between different microcontrollers!
The alternative to Arduino hal is to use the vendor libraries. By doing that, you lock yourself in to the specific controller you are using right now. Also, the quality of the official sdks often enough is joke.
The next thing is the library ecosystem. A device driver library, i.e. to use a certain sensor, from the Arduino evosystem will work on every microcontroller with Arduino support, which is a very very long list.
The arguments against Arduino?
It's not _professional_.
Yeah, try the vendor library, sdk and ide and tell me that's better ...
You are relying on code that _somr guy in the internet_ wrote.
Jup. That's how the whole industry works. If your are using windows, you are using code some guy at the internet wrote. Did you ever get recourse from MS after you got a BSOD?
Relying on code from other people is how we are able to get anything done. If you wrote everything from scratch, you couldn't ever ship anything.
And hey, you got that code from that guy on the internet for free. So do the world and yourself a favour, review the code and upstream any improvements you find!
The IDE sucks.
So does the vendor IDE and nobody is using that stuff anyway. Use platformio.org
There is many situations where Arduino is a valid option.
- lostlogin 6y agoHaving just discovered Arduino and messing about with ESP32 and ESP8266 chips on it, it’s so impressive. My abilities are pretty basic, but the amount that can be achieved and the low barrier to entry (a computer, a USB cable and a $5 ESP) make for a great combination.
- arduinostory 6y agoThe IDE is actually a fork of a project called Processing: https://processing.org/reference/environment/ https://processing.org/reference/environment/ It's an interesting story, but you're right that it isn't exactly professional: https://arduinohistory.github.io/ https://arduinohistory.github.io/ I do like the MSP430 fork called Energia. They're 16-bit MCUs with a focus on low power usage, and some of them have non-volatile RAM: https://energia.nu/ https://energia.nu/
- jack_h 6y agoHonestly I think in the embedded world HALs are a problem with how diverse the micro controller area is getting - especially heterogeneous multi-core chips. HALs end up targeting the least common denominator but there may be a really good reason why you would want a particular micro controller in the first place. I think Andrei Alexandrescu has a good idea that he presented in his talk about compile time introspection^[1]. That combined with something like ARMs SVD, but vastly expanded to include practically all hardware resources, might be the future. That way you could use exactly what you need. Of course the embedded world changes very slowly, so if this every does happen I'll be long retired... ^[1] https://www.youtube.com/watch?v=tcyb1lpEHm0 https://www.youtube.com/watch?v=tcyb1lpEHm0
- taneq 6y agoThanks for confirming my own impression. The Arduino dev environment is pretty meh, I used it once when I was building a test rig and found it painful, but it IS easy for a beginner. If you don't like it, just use VSCode / PlatformIO. Also, as for the Arduino HAL, what a REAL embedded dev would do is implement their own platform-agnostic library and then implement it on every microcontroller they use and... oh wait they've just reimplemented the HAL. But basically there's nothing about Arduino that makes it magically always bad. Start with your requirements spec. If a piece of hardware meets those requirements, and it's cheaper than the other options, use it. Even if it's Arduino.