Arduino Software Internals: A Complete Guide to How Your Arduino Language and Hardware Work Together 1st ed. [Minkštas viršelis]

  • Formatas: Paperback / softback, 617 pages, aukštis x plotis: 235x155 mm, weight: 967 g, 162 Illustrations, color; 32 Illustrations, black and white; XIX, 617 p. 194 illus., 162 illus. in color., 1 Paperback / softback
  • Išleidimo metai: 26-Apr-2020
  • Leidėjas: APress
  • ISBN-10: 1484257898
  • ISBN-13: 9781484257890
Kitos knygos pagal šią temą:
  • Formatas: Paperback / softback, 617 pages, aukštis x plotis: 235x155 mm, weight: 967 g, 162 Illustrations, color; 32 Illustrations, black and white; XIX, 617 p. 194 illus., 162 illus. in color., 1 Paperback / softback
  • Išleidimo metai: 26-Apr-2020
  • Leidėjas: APress
  • ISBN-10: 1484257898
  • ISBN-13: 9781484257890
Kitos knygos pagal šią temą:
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.

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!
1. Introduction1.1. Arduino Installation Paths1.2. Coding Style1.3. The Arduino Language1.4. Coming UpPart 1 - Arduino Compilation2. Preferences.txt2.1. Using an ICSP For All Uploads2.2. Change the Action of Home and End Keys2.3. Setting Tab Stops3. Globally Defined Paths4. Boards.Txt4.1. Arduino Uno Example5. Platform.txt5.1. Build Recipes5.2. Pre and Post Build Hooks6. Programmers.txt7. Compiling a Sketch7.1. Arduino Sketch (*.ino) Preprocessing7.2. Arduino Sketch (*.ino) Build8. The Arduino main() Function9. Header File Arduino.h9.1. Header File avr\pgmspace.h9.2. Header File avr\io.h9.3. Header File avr\interrupt.h9.4. Header File binary.h9.5. Header File WCharacter.h9.6. Header File WString.h9.7. Header File HardwareSerial.h9.8. Header File USBAPI.h9.9. Header File pins_arduino.h10. The init() Function10.1. Enabling the Global Interrupt Flag10.2. Enabling Timer 010.3. Timer 0 Overflow Interrupt10.4. Enabling Timer 1 and Timer 210.5. Initialising the Analogue to Digital Converter10.6. Disabling the USARTPart 2 - Arduino Language Reference11. Digital Input/Output11.1. Function pinMode()11.2. Function digitalRead()11.3. Function digitalWrite()12. Analogue Input/Output12.1. Function analogReference()12.2. Function analogRead()12.3. Function analogWrite()13. Advanced Input/Output13.1. Function tone()13.2. Function noTone()13.3. Function pulseIn()13.4. Function pulseInLong()13.5. Function shiftIn()13.6. Function shiftOut()14. Time14.1. Function delay()14.2. Function delayMicroseconds()14.3. Function micros()14.4. Function millis()15. Interrupts15.1. Function interrupts()15.2. Function noInterrupts()15.3. Function attachInterrupt()15.4. Function detachInterrupt()16. Bits and Bobs16.1. Function bit()16.2. Function bitClear()16.3. Function bitRead()16.4. Function bitSet()16.5. Function bitWrite()16.6. Function highByte()16.7. Function lowByte()16.8. Function sbi()16.9. Function cbi()17. Arduino Classes17.1. The Print Class17.2. The Printable Class17.3. The Stream Class17.4. The HardwareSerial Class17.5. The String ClassPart 3 - Converting to the AVR Language18. Introduction19. Numbering Systems.19.1. Decimal Numbering19.2. Binary Numbering19.3. Hexadecimal Numbering20. Binary Logical Operations20.1. NOT20.2. AND20.3. OR20.4. XOR21. Using the Arduino IDE21.1. Replacing pinMode()21.2. Replacing digitalWrite()21.3. Replacing digitalRead()Part 4 - Alternatives to the Arduino IDE22. PlatformIO22.1. Installing PlatformIO Core22.2. Testing PlatformIO Core22.3. PlatformIO in an IDE22.4. PlatformIO Home23. Arduino Command Line23.1. Obtaining the Arduino-CLI23.2. Installing23.3. Installing Platforms23.4. Configuring the CLI23.5. Creating Sketches23.6. Selecting a Board23.7. Compiling Sketches23.8. Uploading Sketches23.9. Getting Help23.10. Serial Usage23.11. FinallyPart 5 - About the ATMega328P24. ATmega328P Fuses24.1. Low Fuse Bits24.2. Low Fuse Factory Default24.3. Arduino Low Fuse Settings24.4. High Fuse Bits24.5. High Fuse Factory Default24.6. Arduino High Fuse Settings24.7. Extended Fuse Bits24.8. Extended Fuse Factory Default24.9. Arduino Extended Fuse Settings25. Brown Out Detection26. The Watchdog Timer26.1. WDT Modes of Operation26.2. Amended Sketch setup() function26.3. WDT Reset26.4. The WDT Control Register26.5. Enabling the WDT26.6. Setting the WDT Timeout Period26.7. Disabling the WDT27. The Analogue Comparator27.1. Reference Voltage27.2. Sampled Voltage27.3. Digital Input27.4. Enable the Analogue Comparator27.5. Select Reference Voltage Source27.6. Select Sampled Voltage Source Pin27.7. Sampled Voltage Summary27.8. Comparator Outputs27.9. Comparator Example28. Timer/Counters28.1. Timer/Counter 0 (8 bits)28.2. Timer/Counter 1 (8, 9, 10 and/or 16 bits)28.3. Timer/Counter 2 (8 bits)28.4. Timer/Counter Clock Sources28.5. Timer/Counter Operating Modes28.6. PWM Modes - Duty Cycle28.7. Too Much to Remember? Try AVRAssist29. Counting29.1. Setting External Counting29.2. Example Sketch30. Timer 1 Input Capture Unit31. Putting the AVR to Sleep31.1. Sleep Modes 23931.2. Analogue Comparator
24632. Power Reduction32.1. Power Consumption32.2. Power Reduction Register32.3. Saving Arduino Power32.4. The Power Functions33. Analogue to Digital Converter (ADC)33.1. ADC Setup and Initiation33.2. Noise Reduction33.3. Temperature Measurement33.4. ADC Example34. USART34.1. Baud Rates34.2. What is a Frame?34.3. Parity34.4. Interrupts34.5. Initialising the USART34.6. USART Checks34.7. USART ExampleAppendices
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.