Book Image

C Programming for Arduino

By : Julien Bayle
Book Image

C Programming for Arduino

By: Julien Bayle

Overview of this book

Physical computing allows us to build interactive physical systems by using software & hardware in order to sense and respond to the real world. C Programming for Arduino will show you how to harness powerful capabilities like sensing, feedbacks, programming and even wiring and developing your own autonomous systems. C Programming for Arduino contains everything you need to directly start wiring and coding your own electronic project. You'll learn C and how to code several types of firmware for your Arduino, and then move on to design small typical systems to understand how handling buttons, leds, LCD, network modules and much more. After running through C/C++ for the Arduino, you'll learn how to control your software by using real buttons and distance sensors and even discover how you can use your Arduino with the Processing framework so that they work in unison. Advanced coverage includes using Wi-Fi networks and batteries to make your Arduino-based hardware more mobile and flexible without wires. If you want to learn how to build your own electronic devices with powerful open-source technology, then this book is for you.
Table of Contents (21 chapters)
C Programming for Arduino
Credits
About the Author
Acknowledgement
About the Reviewers
www.PacktPub.com
Preface
Index

Memory management


This section is a very short one but not a less important one at all. We have to remember we have the following three pools of memory on Arduino:

  • Flash memory (program space), where the firmware is stored

  • Static Random Access Memory (SRAM), where the sketch creates and manipulates variables at runtime

  • EEPROM is a memory space to store long-term information

Flash and EEPROM, compared to SRAM, are non-volatile, which means the data persists even after the power is turned off. Each different Arduino board has a different amount of memory:

  • ATMega328 (UNO) has:

    • Flash 32k bytes (0.5k bytes used by the bootloader)

    • SRAM 2k bytes

    • EEPROM 1k bytes

  • ATMega2560 (MEGA) has:

    • Flash 256k bytes (8k bytes used by the bootloader)

    • SRAM 8k bytes

    • EEPROM 4k bytes

A classic example is to quote a basic declaration of a string:

char text[] = "I love Arduino because it rocks.";

That takes 32 bytes into SRAM. It doesn't seem a lot but with the UNO, you only have 2048 bytes available. Imagine you use a big lookup...