The chapter list includes a new chapter added to the second edition of the book.

The reasons that this book came into existance and maybe why someone might like to read it.

Introduces the architypal "Hello World" first program, the Arduino IDE and the Serial Monitor.

An brief introduction to the binary number system, machine code, assembler and high level programming languages.

Variable types
char variable arithmatic
Float and Double variables
Declaring and defining variables
Defining constants
Escape sequences
The const keyword
#define
enum
Void type
Arrays
Variable scope
Static variable modifier
Volatile variable modifier
Register variable modifier

Arithmetic operators
Comparison operators
Compound operators
Logical operators
Logical functions
Bitwise operators
Operators for pointers
Other operators
Casts
In-built conversion functions

The if statement
switch / case
Ternary operator

The for loop
break statement
continue statement
The while loop
Do while loop
The goto statement

Function arguments
Function overloading
Default arguments
Argument lists
const arguments
Recursion

Variable pointers
Pointer arrays
Pointers to pointers
Common errors
Pointers to functions
Functions that return a function pointer
Generic pointers

Structs
Pointers to a struct
Arrow notation
Unions
Pointers to unions
Using union data types
Bit twiddling
Operator overloading

Arduino math functions
Functions implemented as macros
Random numbers
Bit manipulation
Making a noise
Pin event monitoring

An introduction to the Arduino IDE compile and link process and some handy tips on debugging program code.

Digital pin input and output
Analog input
Analog write
32 bit board ADC
Ports

Interrupt Service Routines (ISR)
Interrupt priorities
ISR variations: shared, empty etc.
Volatile variable modifier
Enabling and disabling interrupts
External Interrupts (with worked example)
Pin change interrupts
Software interrupts
Watchdog interrupts
ATOMIC_BLOCK demonstration
Power saving and sleep modes

PWM as voltage control
Timers
Timer overflow interrupts
Compare match interrupts

Servo mini project.
Continuous servoes
Stepper motor mini project
ULN2003 chip
Half-stepper mini project
Alternate stepper libraries

Mini project to write a state machine focussing on incremental development and testing.

Basic bubble sort
Shell sort algorithm
Quick sort algorithm
Xor integer swap
Reversing a sort order
Sorting non-numeric data
Using the library quicksort
Binary search algorithm

An extended project that explores data compression, FiFo queue and a binary tree.

Also shows how an Arduino can become a programming companion that writes code.

Develops the FiFo queue and binary tree structures into generalised C libraries.

Encapsulation
Inheritance
Elements of a C++ class
Static class members
Class instances
Instance member pointers

A mini project to control DC motors. Basic control is extended to include speed and dsitance travelled monitoring. Includes developing a class that consumes interrupts.

An introduction to communications interfaces including:
Serial comms mini project
I2C (Two Wire) mini project
Serial Peripheral Interface mini project
USB
Parallel comms mini project using ports and conditional compilation with compiler directives.

A new chapter for the second edition.

The chapter takes the reader through a project to build a motorised skylight opener/closer based on an Arduino MKR WiFi 1010 board.

The chapter includes details on connecting to a local WiFi network and serving an HTML based user interface to control the device.

Setting the Real Time Clock from an Internet time source is included together with making use of remote Web Services.

Making use of printf() and vsnprintf_P() for enhanced text displays.

A range of ideas and techniques for minimising SRAM usage and dealing with memory collision crashes..

A run through the functions availabe in the libraries available, by default, within the Arduino IDE..

A list of components used in the mini projects included in this book.

Not just the usual ASCII table, although that is there, but a couple of late programming tasks.

Lists the C operators in precedence order

The book includes and extensive index with page numbers for all key references.

The index is intended to support the use of this book as an ongoing C language and Arduino reference work.