Embedded Controllers Using C and Arduino / 2E
James M. Fiore
Copyright Year: 2018
Read this book
Conditions of Use
This text is a very in-depth introduction to the C programming language, starting with native programming in a development environment chosen by the reader. The exercises in the early chapters give the reader a more in-depth understanding of the... read more
This text is a very in-depth introduction to the C programming language, starting with native programming in a development environment chosen by the reader. The exercises in the early chapters give the reader a more in-depth understanding of the mechanics of C than the usual introduction included with strictly Arduino texts. When combined with the lab manual written by this author, most Arduino functions are fully detailed. The author "opens the hood" on some of the functions, files and libraries included with the Arduino development environment to give the student a thorough understanding of what is going on in the background of this easy to use development system. The earlier introduction to the C language gives the student the tools to understand these breakdowns. Given the greater depth and detail that this text treats the subject, I would consider it for a second course in programming. It would make a great transition for a student moving from programming in Arduino into programming on a bare Atmel microcontroller.
The content is accurate and error-free. It should be highlighted that the code in the early chapters is not designed for the Arduino development environment.
The content is up to date and relevant. There doesn't appear to be any reliance on immature or private libraries that would change in the future.
In general, the text is clearly written and easy to follow, although the use of a story to introduce the Arduino hardware in chapter 17 is less clear. (The author does alert the reader that an appreciation for film noir will help here.)
The text is consistent in terminology and each section follows the same format of introducing a topic, giving a code example, and then breaking down the example completely.
While not strictly divided into a chapter=module format, the sections are clearly divided into subject areas that would be easy to assign as one or two chapter readings per class. As declared by the author, this text would be well covered in a 15 week course.
The topics are presented in a clear fashion and a logical flow. An early tutorial on a specific C environment would help students get started quickly.
There are no formatting or navigation problems. The code sections are formatted and use a font in a way that clearly separate them from the rest of the text.
The text contains no grammatical errors.
The text is not culturally insensitive or offensive in any way.
For a student that has some programming experience, this is a great text to gain a deeper understanding of microcontrollers and how to use them in and out of the Arduino environment. The sections on pointers and linked lists, as well of the breakdown of header files and included functions give a lot more detail than most introduction texts. Again, I would consider this a second programming course, not an introduction to programming.
Table of Contents
- Course Introduction
- C Memory Organization
- C Language Basics
- C Language Basics II
- C Storage Types and Scope
- C Arrays and Strings
- C Conditionals and Looping
- C Pointers
- C Look-Up Tables
- C Structures
- C Linked Lists
- C Memory
- C File I/O
- C Command Line Arguments
- Embedded Programming
- Hardware Architecture
- AVR ATmega 328P Overview
- Bits & Pieces: includes and defines
- Bits & Pieces: Digital Input Circuitry
- Bits & Pieces: Digital Input Circuitry
- Bits & Pieces: pinMode
- Bits & Pieces: digitalWrite
- Bits & Pieces: delay
- Bits & Pieces: digitalRead
- Bits & Pieces: Analog Input Circuitry
- Bits & Pieces: analogRead
- Bits & Pieces: analogWrite
- Bits & Pieces: Timer/Counters
- Bits & Pieces: Interrupts
About the Book
This text is designed to introduce and expand upon material related to the C programming language and embedded controllers, and specifically, the Arduino development system and associated Atmel ATmega microcontrollers. It is intended to fit the time constraints of a typical 3 to 4 credit hour course for electrical engineering technology and computer engineering technology programs, although it could also fit the needs of a hardware-oriented course in computer science. As such, the text does not attempt to cover every aspect of the C language, the Arduino system or Atmel AVR microcontrollers. The first section deals with the C language itself. It is assumed that the student is a relative newcomer to the C language but has some experience with another high level language, for example, Python. This means concepts such as conditionals and iteration are already familiar and the student can get up and running fairly quickly. From there, the Arduino development environment is examined. Unlike the myriad Arduino books now available, this text does not simply rely on the Arduino libraries. As convenient as the libraries may be, there are other, sometimes far more efficient, ways of programming the boards. Many of the chapters examine library source code to see “what's under the hood”. This more generic approach means it will be easier for the student to use other processors and development systems instead of being tightly tied to one platform.
There is a lab manual for this textbook.
About the Contributors
James M. Fiore
My name is Jim and I'm the resident dissident, programmer and author. I've been a college professor for many years teaching in the areas of electrical engineering technology, computer programming and the science of sound. I'm also a musician and an endurance athlete. I established dissidents in the late 1980s as a way to offer various software items that I created, figuring that other people might find them useful as well. Some of these have been commercial and some have been freeware. I also write a lot, including published college text books and lab manuals. Recently, the open educational resource movement has gained momentum (no doubt at least partly propelled by the rising costs of college tuition and texts).