3

I'm going to be in the third year of university in a month. I'm satisfied with the software part of my bachelor but I feel like I lack in practice in practical implementation. Would getting an Arduino board and playing around with it worth it and useful for me?

  • Depends om how much time you want to spend and what are your goals. You can learn a lot about resource constraint software system development from simple boards such as the Arduino. But it is all about how much time you have to spend. The board(s) is cheap in comparison. You could just start off by reading and trying to understand some of the source code that builds the Arduino core and libraries. Often university curriculum's miss teaching how to read large source code systems. – Mikael Patel Sep 24 '18 at 12:07
  • You don't mention your level of experience working with hardware. Do you have experience working with electronic circuits? – linhartr22 Sep 28 '18 at 1:25
  • Mikael Patel, you should post this as an answer. – linhartr22 Sep 28 '18 at 1:29
4

It depends. If you don't have any knowledge about microcontrollers it might be useful.

However, Arduino hides a lot of concepts in their libraries. If you want to go more indepth check other systems like STM32 or PIC.

You also can do both, start with Arduino to get a rough feeling, continue with another.

More important is WHAT you try, don't stop with LEDs/switches, but check communication protocols like SPI, I2c, UART etc. And learn what timers, interrupts etc. are and how to use them.

  • 1
    and networking for IoT – Juraj Sep 24 '18 at 12:05
  • The original Arduino boards are based on 8 bit AVR microcontrollers, and using Arduino libraries with them is entirely optional. There is a lot of information about programming AVR microcontrollers in C and assembly, and the datasheets are quite readable. With STM32, low-level programming is a lot more difficult to learn because various HALs are preferred by developers. Even finding a basic register/pin definition file is a challenge if you do not wish to use any HAL. For this reason I would argue against STM32 for learning low-level programming. – ex-punctis Sep 24 '18 at 15:19
  • 1
    @Im_Int not sure if I agree, about 99% using Arduino use the IDE which hides a lot of the internals (which is ok for most people). With STM32 the HAL is used, but not as often as the IDE for Arduino (relatively). There are many different STM32s/IDEs and ways to program (HAL, CMSIS, StdLib). I didn't mean he needs to go so low level, but the Arduin commands hide so much it's barely needed to understand how a microcontroller works. – Michel Keijzers Sep 24 '18 at 16:02
4

As already stated in previous answers, there is no clear-cut answer to this kind of question. It all depends on what you want to learn.

If that can help, I will share my personal experience. I studied computer science for only one year at university. Then I stopped to continue on my physics major. But as I never lost interest in computers, I continued learning on my own. I started playing with Arduinos just because it looked like a fun way to learn some microcontroller stuff and low-level programming. The barrier to entry is extremely low: in no time you get your LED blinking, and from there you can start exploring plenty of possibilities. The Arduino IDE and core library make it extremely easy to make simple programs, but they are quite limited when you want to get more serious. For many people, this environment, plus extra downloadable libraries, is all they need to achieve their goals. For me, it was a stepping stone to learn lower level stuff, like direct hardware access, use of the avr-libc, and even assembly programming.

Today, what I love most about Arduinos (or, rather, the AVR microcontrollers at their core), is their simplicity and understandability. Today, when I disassemble a program I have written, I can understand basically everything: the C runtime initialization code, the memory allocation, the way the compiler translates my own code... I find it extremely rewarding to reach such an understanding of a (kind of) computer system.

The same level of understanding would be (for me) impossible to achieve on a typical PC. Even though I use Linux, which is Open Source, and I have access to the full source code, the whole software stack involved in running even the simplest program is overwhelming. The kernel itself is like millions of lines of code. Even the assembly language of an x86 (or x86_64) is something I find way too complex for my taste.

In conclusion, the Arduino has been for me a very rewarding learning experience. If you want to get your hands dirty with bare metal programming, I definitely recommend you get an Uno, or something similar, and start playing with it. Once you get your first program running (and that takes no time!) start looking under the hood: read the source of the Arduino core (it's short and very readable), read the datasheet of the microcontroller, start poking the hardware, take a look at how the compiler allocates memory, how it translates your source code...

0

I don't think there is a should or should not about it, do you want a low cost experimental setup using the C language to toy with ideas and concepts without a massive outlay or proprietary software or NDA's to get chip data that ties you to a single company then why not? You can get Arduino clones very cheaply from the likes of aliexpress etc as well as prototyping kits. While the Arduino IDE is a relatively primitive editor you can use any programmers editor you like to compose your C files and use the Arduino IDE just to do the final compile and linking and upload/burn them to the target device. It can be done so cheaply that even if you decide it does not inspire your imagination you won't have wasted hundreds of $! Just spent a couple of tens of $ to accumulate a significant micro-controller playground! Assuming you already have some kind of personal computer or easy access to one.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.