Arduino without Arduino
I always had difficulty understanding what Arduino is in essence. My current understanding is that Arduino stands for a whole set of related tools designed to be used together, in order to make it easier to get into microcontroller programming. The individual bits and pieces involved are:
- Arduino development boards, such as the Uno or Leonardo, typically running AVR chips such as ATmega328P or ATmega32U4
- Arduino bootloader, a program that runs on these boards and allows reprogramming them over USB
- Arduino IDE, an app that lets you write C code and upload it to the board; it comes bundled with the compilation toolchain (avr-gcc) and an upload tool (avrdude)
- Arduino standard library, a set of C modules which makes it easier to do common tasks e.g.
digitalWrite()orSerial.write() - A while ecosystem of libraries written against the Arduino standard library, eg. [ws12812B-arduino][ws12812B-arduino]
I always wanted to learn what does Arduino IDE do under the hood? How do I program a board myself by using the underlying tools directly? Read on to see what I found out.