: Norman Dunbar
: Arduino Software Internals A Complete Guide to How Your Arduino Language and Hardware Work Together
: Apress
: 9781484257906
: 1
: CHF 50.60
:
: Hardware
: English
: 627
: Wasserzeichen/DRM
: PC/MAC/eReader/Tablet
: PDF
It's not enough to just build your Arduino projects; it's time to actually learn how things work! This book will take you through not only how to use the Arduino software and hardware, but more importantly show you how it all works and how the software relates to the hardware.

Arduino Software Internals takes a detailed dive into the Arduino environment. We'll cover the Arduino language, hardware features, and how makers can finally ease themselves away from the hand holding of the Arduino environment and move towards coding in plain AVR C++ and talk to the microcontroller in its native language. 

What You'll Learn:
  • How the Arduino Language interfaces with the hardware, as well as how it actually works in C++;
  • How the compilation system works, and how kit can be altered to suit personal requirements;
  • A small amount of AVR Assembly Language;
  • Exactly how to set up and use the various hardware features of the AVR without needing to try and decode the data sheets - which are often bug ridden and unclear;
  • Alternatives to the Arduino IDE which might give them a better workflow;
  • How to build their own Arduino clone from scratch.
br>
Who This Book Is For: 
No expertise is required for this book! All you need is an interest in learning about what you're making with Arduinos and how they work. This book is also useful for those looking to understand the AVR microcontroller used in the Arduino boards. In other words, all Makers are welcome!


Norman Dunbar is an Oracle Database Administrator. Norman has had a long running relationship with Electronics since childhood and computers since the late 1970s, and the Arduino was a perfect marriage of the two interests. With a love of learning new things, examining and explaining the Arduino Language and the hardware became a bit of a hobby, and as piles of notes expanded, Norman has now decided to publish his work.
Table of Contents5
About the Author14
About the Technical Reviewer15
Preface16
Chapter 1: Introduction17
1.1. Arduino Installation Paths18
1.2. Coding Style20
1.3. The Arduino Language22
1.4. Coming Up22
Chapter 2: Arduino Compilation25
2.1. Preferences.txt25
2.1.1. Using an ICSP for All Uploads28
2.1.2. Change the Action of Home and End Keys30
2.1.3. Setting Tab Stops31
2.2. Globally Defined Paths32
2.3. Boards.txt34
2.3.1. Arduino Uno Example34
2.3.1.1. Board Identifier36
2.3.1.2. Identification Settings36
2.3.1.3. Upload Settings38
2.3.1.4. Bootloader Settings39
2.3.1.4.1. Boards.local.txt41
2.3.1.5. Build Settings41
2.3.1.6. Configuring an ICSP43
2.4. Platform.txt44
2.4.1. Build Recipes45
2.4.2. Pre- and Post-build Hooks50
2.5. Programmers.txt52
2.6. Compiling a Sketch55
2.6.1. Arduino Sketch (*.ino) Preprocessing55
2.6.2. Arduino Sketch (*.ino) Build57
2.7. The Arduino main() Function60
2.8. Header File Arduino.h63
2.8.1. Header File avr\pgmspace.h65
2.8.2. Header File avr\io.h65
2.8.2.1. Header File avr/iom328p.h66
2.8.2.2. Header File avr/portpins.h66
2.8.2.3. Header File66
2.8.2.3. Header File66
6766
2.8.2.4. Header File66
2.8.2.4. Header File66
6766
2.8.2.5. Header File66
2.8.2.5. Header File66
6866
2.8.2.6. Header File66
2.8.2.6. Header File66
6866
2.8.3. Header File avr\interrupt.h68
2.8.4. Header File binary.h69
2.8.5. Header File WCharacter.h71
2.8.6. Header File WString.h72
2.8.7. Header File HardwareSerial.h72
2.8.8. Header File USBAPI.h73
2.8.9. Header File pins_arduino.h73
2.9. The init() Function75
2.9.1. Enabling the Global Interrupt Flag75
2.9.2. Enabling Timer/counter 076
2.9.3. Timer/counter 0 Overflow Interrupt79
2.9.4. Configuring Timer/counter 1 and Timer/counter 283
2.9.5. Initializing the Analogue to Digital Converter86
2.9.6. Disabling the USART88
Chapter 3: Arduino Language Reference89
3.1. Digital Input/Output91
3.1.1. Function pinMode()91
3.1.2. Function digitalRead()100
3.1.3. Function digitalWrite()103
3.2. Analogue Input/Output106
3.2.1. Function analogReference()106
3.2.2. Function analogRead()109
3.2.3. Function analogWrite()113
3.3. Advanced Input/Output120
3.3.1. Function tone()120
3.3.2. Function noTone()135
3.3.3. Function pulseIn()138
3.3.4. Function pulseInLong()146
3.3.5. Function shiftIn()150
3.3.6. Function shiftOut()153
3.4. Time156
3.4.1. Function delay()157
3.4.2. Function delayMicroseconds()163
3.4.3. Function micros()167
3.4.4. Function millis()170
3.5. Interrupts173
3.5.1. Function interrupts()173
3.5.2. Function noInterrupts()174
3.5.3. Function attachInterrupt()174
3.5.4. Function detachInterrupt()185
3.6. Bits and Bobs187
3.6.1. Macro bit()187
3.6.2. Macro bitClear()189
3.6.3. Macro bitRead()189
3.6.4. Macro bitSet()190
3.6.5. Macro bitWrite()190
3.6.6. Macro highByte()191
3.6.7. Macro lowByte()191
3.6.8. Macro sbi()192
3.6.9. Macro cbi()193
Chapter 4: Arduino Classes195
4.1. The Print Class195
4.1.1. Class Members198
4.1.2. Using the Print Class200
4.2. The Printable Class205