Embedded Controllers Using C and Arduino - 2e
James M. Fiore
Copyright Year:
Publisher: dissidents
Language: English
Formats Available
Conditions of Use
Attribution-NonCommercial-ShareAlike
CC BY-NC-SA
Reviews
It could spend more time on conditionals but overall it covers the C language and its applicability to Arduino programming quite well. read more
It could spend more time on conditionals but overall it covers the C language and its applicability to Arduino programming quite well.
There were no obvious errors in the book.
This book was published in 2018 so it is relatively recent in its content. Though the C programming language is a stable language without a lot of ongoing changes like other languages like Java and Python. A couple of the Arduino examples are slightly dated but seem to work well on newer versions of the platform.
One of the uses of this textbook in my courses will be as a refresher in C. The author does a good job of explaining the constructs of the language and provides relevant examples.
The books uses standard and consistent terminology
It is easy to create classes and activities around the various sections of the book and it fits into our class syllabus fairly easily.
The book is broken up into logical chapters with a clear distinction between the C language portions and the Arduino portions. Since I use this book as a reference in two different classes, one that focuses on computer systems using C and the other on the computer architecture using the Arduino, I don't have to do much in the way of reordering the topics for the two different classes.
I saw no issues in navigation through the book on line. Sections that were needed in hard copy for working through examples printed easily and clearly.
I found no obvious grammatical errors.
I found none.
As I said earlier, I plan to use this book in two different classes that are offered in sequence. In the past I used two different text books, Kernahan and Ritchie for the C language and an Arduino programming guide. I can now use this book for both classes focusing on the sections that apply to a particular class. A plus in doing this, aside from the cost savings, is that students will be familiar with the textbook when they take the subsequent class. There is always a learning curve and time to get familiar with a new text book, and this way that up front effort is only needed to be done once.
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
Ancillary Material
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
Author
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).