Smaller C - Lean Code for Small Machines [1 ed.] 9781098100339

Book Description ---------------- For makers looking to use the smallest micro-controllers or to wring the highest perf

360 139 140MB

English Pages 250 Year 2021

Report DMCA / Copyright

DOWNLOAD FILE

Smaller C - Lean Code for Small Machines [1 ed.]
 9781098100339

Table of contents :
Preface
How to Use This Book
Conventions Used in This Book
Using Code Examples
O’Reilly Online Learning
How to Contact Us
Acknowledgments
1. The ABCs of C
Strengths and Weaknesses
Getting Started
Tools Required
Creating a C “Hello, World”
Compiling Your Code
Running Your Code
Next Steps
2. Storing and Stating
Statements in C
Statement Separators
Statement Flow
Variables and Types
Getting User Input
Strings and Characters
Numbers
Variable Names
Variable Assignments
printf() and scanf()
printf() Formats
Tailored Output
scanf() and Parsing Inputs
Operators and Expressions
Arithmetic Operators
Order of Operations
Type Casting
Next Steps
3. Flow of Control
Boolean Values
Comparison Operators
Logical Operators
Branching
The if Statement
The switch Statement
The Ternary Operator and Conditional Assignment
Loop Statements
The for Statement
The while Statement
The do/while Variation
Nesting
Nested Loops and Tables
Variable Scope
Exercises
Next Steps
4. Bits and (Many) Bytes
Storing Multiple Things with Arrays
Creating and Manipulating Arrays
Review of Strings
Multidimensional Arrays
Accessing Elements in Multidimensional Arrays
Storing Bits
Binary, Octal, Hexadecimal
Octal and Hexadecimal Literals in C
Input and Output of Octal and Hex Values
Bitwise Operators
Mixing Bits and Bytes
Conversion Answers
Next Steps
5. Functions
Familiar Functions
Function Flow
Simple Functions
Sending Information to Functions
Passing Simple Types
Passing Strings to Functions
Multiple Types
Exiting a Function
Returning Information
Using Returned Values
Ignoring Returned Values
Nested Calls and Recursion
Recursive Functions
Variable Scope
Global Variables
The main() Function
Return values and main()
Command-Line Arguments and main()
Next Steps
6. Pointers and References
Addresses in C
The NULL Value and Pointer Errors
Arrays
Local Variables and the Stack
Global Variables and the Heap
Pointer Arithmetic
Array Pointers
Functions and Pointers
Managing Memory with Arrays
Allocating with malloc()
Deallocating with free()
C Structures
Defining Structures
Assigning and Accessing Structure Members
Pointers to Structures
Functions and Structures
Pointer Syntax Recap
Next Steps
7. Libraries
The C Standard Library
stdio.h
stdlib.h
string.h
math.h
time.h
ctype.h
Putting It Together
Filling In Strings
Finding Our Interest
Finding New Libraries
Next Steps
8. Real-World C With Arduino
Arduino IDE (Win, Mac, Linux)
Installing on Windows
Installing on macOS
Installing on Linux
Your First Arduino Project
Selecting Your Board
Hello, LED!
An External LED Upgrade
Arduino Libraries
Managing Libraries
Using Arduino Libraries
Arduino Sketches and C++
C++ Objects and Variables
More Practice with Objects
C++ Considerations
Object Homework
Next Steps
9. Smaller Systems
The Arduino Environment
Special Values
Special Types
“Built-In” Functions
Trying Out the Arduino “Stuff”
Microcontroller I/O
Sensors and Analog Input
The Serial Monitor
Is It Hot in Here?
Segmented Displays
Buttons and Digital Input
Just How Hot Is It?
Memory Management on Arduino
Flash (PROGMEM)
SRAM
EEPROM
Remembering Choices
Interrupts
Interrupt Service Routines
Interrupt-Driven Programming
Exercises
Next Steps
10. Faster Code
The Setup
Floating-Point Versus Integer Math
Floating-Point Math Alternatives
Integer Math Versus No Math
Lookup Tables
The Project So Far
The Power of Powers of 2
Loop Optimizations
Unrolling for Fun and Profit
Recursion Versus Iteration
String Versus char[]
Our Final Offer
Next Steps
11. Custom Libraries
Creating Your Own Library
Preprocessor Directives
Preprocessor Macros
Custom Type Definitions
Our Car Project
Multifile Projects
Code (.ino) Files
Header Files
Importing Custom Libraries
Facilitating Communication
Retrofitting Our Car
Creating a Controller
Creating the Library
Updating the Car Project
Getting It Under Control
Go Driving!
Documentation and Distribution
Next Steps
12. Next Next Steps
Intermediate and Advanced Topics
IoT and Arduino
Arduino Source Code
Other Microcontrollers
Industry C/C++
Back to the Future
A. Hardware and Software
Getting the Code
Getting the Hardware: Adafruit
VS Code
Arduino IDE
Fritzing
GNU Compiler Collection
B. printf() Format Specifier Details
Specifier Syntax
Specifier Types
Specifier Flags
Width and Precision
Common Formats
Index

Polecaj historie