Far Inside The Arduino

I finally published my first Arduino book which shows how to bypass the performance hampering and feature blocking Arduino library and instead access the microcontroller features directly. The book primarily for Arduino Uno, Nano, and Mega boards. The book assumes some familiarity with the Arduino (one needs to know how to write and run simple “sketches”), and some C or C++ programming skills.

 I’m selling this book either printed or Kindle ebook on Amazon here or on your nearest Amazon site if you are not in the US. In the US the price is $19.99 for the Kindle version and $24.99 for the printed version.

Here is the Table of Contents:

The Many Faces of Arduino
The Arduino Uno Board
The Arduino IDE
File Locations
The Arduino Library
AVR Basics
Arduino Uno to ATmega328 “Rosetta Stone”
Harvard Architecture
Lock and Fuse Bits
Accessing I/O Device Registers
EEPROM
Differences in the Arduino MEGA 2560
Loading Programs
Using the Arduino Bootloader
Using a Programmer
Variables and Constants
Data types
Using program memory for constants
Strings or strings?
Digital I/O Pins
Arduino’s digitalRead and digitalWrite
The AVR Underpinnings
An Improvement Without Cost
Pulsing A Pin
Special Considerations
Introduction to Interrupts
What is an Interrupt?
Finite State Machines
Simple Multitasking and Execution Blocking
A Basic Multitasking Example
Watchdog Timer
Volatile Variables, Atomic References, and Reentrancy
External Interrupts and attachInterrupt()
The Versatile Timer/Counters
Introduction to Timer/Counters
Arduino Time Measurement
Timer Interrupt and State Machines
The Stepper Motor
Arduino Square Wave Generation – tone()
Generating Square Waves
Arduino PWM Generation – analogWrite()
PWM Generation — Analog Output, LEDs, Motors, Relays
Input Capture and pulseIn()
Use as a Counter
Other Timer/Counter Topics
Analog Input
Arduino’s analogRead()
Using the AVR Analog to Digital Converter
Analog Comparator
Differences in the Arduino Nano and Mega
SPI
Serial Peripheral Interfacing
SPI Example Project
Arduino’s Approach
Using the AVR Hardware
Bidirectional SPI Example
Microcontroller as SPI Slave
Two Wire Interface AKA I2C
TWI Basics
The ZS-042
The Arduino Wire Library
Using twi.c
Rolling Your Own
Microcontroller as TWI Slave
One Wire Interface
The One Wire Protocol
One Wire without Interrupts
Interrupt Driven One Wire
USART
USART Functionality
Using the Arduino Serial functions
The AVR USART interface
Buffered UART Operation
STDIO
Line Buffering
Additional Examples
Keypads
Ultrasonic Distance Sensors
Rotary Encoders
LCD Displays
Multiple Relays
Multiple Servos
Multiple Stepper Motors
Waveform Measuring Instrument
Power Saving
References
Index of Example Programs