This repository contain all my tinkerings with Arduino boards I did for my personal entertainment and enlightenment. The Arduino language and associated IDE are not used, as they do not suit my taste. Here, it's Linux, plain C, Makefile, and a shell.
Unless specified otherwise, those tutorials/projects are targeting the Arduino UNO board.
The tutorials are more or less in topological order : later tutorials are building upon earlier tutorials. Each tutorial has some notes I took, as an attempt to leave the least amount of mystery.
- led-blinker : blinks the Arduino UNO's on-board led
- pin-trigger : switch on and off the Arduino UNO's on-board led with pin 12
- full-auto-led-blinker : blinks an external led driven by pin 9, without ever leaving sleep mode
- interrupt-driven-led-blinker : blinks the Arduino UNO's on-board led with interruptions
- servo-control : controls a servor motor
- serial-sync-echo : echo on the serial output what is given in the serial input, synchronous style
- ADC : sample an analog input to switch on and off switch on and off the Arduino UNO's on-board led.
- i2c: interfacing with i2c devices
- SSD1306 : code for controlling SSD1306 OLED screens, easy to follow
On a vanilla Archlinux, install the following packages:
- arduino-avr-core C language toolchain for AVR MCUs and related utilities
- picocom Minimalistic serial terminal
On Ubuntu, install the following packages:
- gcc-avr
- avr-libc
- picocom
I gathered the information I needed to realize the tutorials from those sources
- Atmel ATmega328P Reference Manual
- Arduino in C A small series of tutorials on using plain C and AVR utilities
- Easy UART on with avrlib Synchronous UART handling libavr's stdio implementation
- Bare Metal Micro Nicely explained examples on the fundamentals ie. ports, interrupts
- The USART of the AVR Detailed explanation about the USART/UART, good complement to the reference manual
- I2C on the AVR
- Various topics on AVR and I2C modules
- SPI programming
I am very thankful to all those people who took the time and the effort to write those tutorials and manuals.
- Alexandre Devert - marmakoide