C-Programming for by Julien Bayle, chapter name Preface


Our futuristic world is full of smart and connected devices. Do-it-yourself communities have always been fascinated by the fact that each one could design and build its own smart system, dedicated or not, for specific tasks. From small

controllers switching on the lights when someone is detected to a smart sofa sending e-mails when we sit on them, cheap electronics projects have become more and   more easy to create and, for contributing to this, we all have to thank the team, who initiated the Arduino project around 2005 in Ivrea, Italy.

Arduino's platform is one of the most used open source hardware in the world. It provides a powerful microcontroller on a small printed circuit board with a very    small form factor. Arduino users can download the Arduino Integrated Development Environment (IDE) and code their own program using the C/C++ language and the Arduino Core library that provides a lot of helpful functions and features.

With C Programming for Arduino, users will learn enough of C/C++ to be able to design their own hardware based on Arduino. This is an all-in-one book containing all the required theory illustrated with concrete examples. Readers will also learn about some of the main interaction design and real-time multimedia frameworks such as Processing and the Max 6 graphical programming framework.

C Programming for Arduino will teach you the famous "learning-by-making" way of work that I try to follow in all of my courses from Max 6 to Processing and Ableton Live.

Lastly, C Programming for Arduino will open new fields of knowledge by looking at the input and output concept, communication and networking, sound synthesis, and reactive systems design. Readers will learn the necessary skills to be able to continue their journey by looking at the modern world differently, not only as a user but also as a real maker.

For more details, you can visit my website for the book at



What this book covers

Chapter 1, Let's Plug Things, is your first contact with Arduino and microcontroller programming. We will learn how to install the Arduino Integrated Development Environment on our computer and how to wire and test the development toolchain to prepare the further study.

Chapter 2, First Contact with C, covers the relation between the software and the hardware. We will introduce the C language, understand how we can compile it, and then learn how to upload our programs on the Arduino Board. We will also learn all the steps required to transform a pure idea into firmware for Arduino.

Chapter 3, C Basics—Making You Stronger, enters directly into the C language. By learning basics, we learn how to read and write C programs, discovering the datatype, basic structures, and programming blocks.

Chapter 4, Improving Programming with Functions, Math, and Timing, provides the first few keys to improve our C code, especially by using functions. We learn how to produce reusable and efficient programming structures.

Chapter 5, Sensing with Digital Inputs, introduces digital inputs to Arduino. We will learn how to use them and understand their inputs and outputs. We will also see how Arduino uses electricity and pulses to communicate with everything.

Chapter 6, Sensing the World—Feeling with Analog Inputs, describes the analog inputs of Arduino through different concrete examples and compares them to digital pins. Max 6 frameworks are introduced in this chapter as one of the ideal companions for Arduino.

Chapter 7, Talking over Serial, introduces the communication concept, especially by teaching about Serial communication. We will learn how to use the Serial communication console as a powerful debugging tool.

Chapter 8, Designing Visual Output Feedback, talks about the outputs of Arduino and how we can use them to design visual feedback systems by using LEDs and their systems. It introduces the powerful PWM concept and talks about LCD displays too.

Chapter 9, Making Things Move and Creating Sounds, shows how we can use the Arduino's outputs for movement-related projects. We talk about motors and movement and also about air vibration and sound design. We describe some basics about digital sound, MIDI, and the OSC protocol, and have fun with a very nice PCM library providing the feature of reading digitally encoded sound files from Arduino itself.



Chapter 10, Some Advanced Techniques, delivers many advanced concepts, from data storage on EEPROM units, and communication between multiple Arduino boards, to the use of GPS modules. We will also learn how to use our Arduino board with batteries, play with LCD displays, and use the VGA shield to plug the microcontroller to a typical computer screen.

Chapter 11, Networking, introduces the network concepts we need to understand in order to use our Arduino on Ethernet, wired or wireless networks. We will also use a powerful library that provides us a way to tweet messages directly by pushing a button on our Arduino, without using any computer.

Chapter 12, Playing with the Max 6 Framework, teaches some tips and techniques we can use with the Max 6 graphical programming framework. We will completely describe the use of the Serial object and how to parse and select data coming from Arduino to the computer. We will design a small sound-level meter using both real LEDs and Max 6 and finish by designing a Pitch shift sound effect controlled by our own hand and a distance sensor.

Chapter 13, Improving Your C Programming and Creating Libraries, is the most advanced chapter of the book. It describes some advanced C concepts that can be used to make our code reusable, more efficient, and optimized, through some nice and interesting real-world examples.

Appendix provides us with details of data types in C programming language, operator precedence in C and C++, important Math functions, Taylor series for calculation optimizations, an ASCII table, instructions for installing a library, and a list of components' distributors.

Appendix can be downloaded from http://www.packtpub.com/sites/default/ files/downloads/7584OS_Appendix.pdf.


What you need for this book

If you want to take benefits of each example in this book, the following software

is required:

  • The Max 6 framework (trial version of 30 days, http://cycling74.com/ downloads). This framework is a huge environment that is used in this book too.

Some other libraries are also used in this book. Every time they are needed, the example description explains where to download them from and how to install them on our computer.


Who this book is for

This book is for people who want to master do-it-yourself electronic hardware making with Arduino boards. It teaches everything we need to know to program firmware using C and how to connect the Arduino to the physical world, in

great depth. From interactive-design art school students to pure hobbyists, from interactive installation designers to people wanting to learn electronics by entering  a huge and growing community of physical computing programmers, this book will help everyone interested in learning new ways used to design smart objects, talking objects, efficient devices, and autonomous or connected reactive gears.

This book opens new vistas of learning-by-making, which will change readers' lives.



In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.

Code words in text are shown as follows: "We can include other contexts through the use of the include directive."

A block of code is set as follows:


exten => s,1,Dial(Zap/1|30) exten => s,2,Voicemail(u100) exten => s,102,Voicemail(b100) exten => i,1,Voicemail(s0)

When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:


exten => s,1,Dial(Zap/1|30) exten => s,2,Voicemail(u100)

exten => s,102,Voicemail(b100)

exten => i,1,Voicemail(s0)

Any command-line input or output is written as follows:

# cp /usr/src/asterisk-addons/configs/cdr_mysql.conf.sample


New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: "clicking the Next button moves you to the next screen."


    Warnings or important notes appear in a box like this.

     Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply send an e-mail to feedback@packtpub.com, and mention the book title via the subject of your message.If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.


Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.


Downloading the example code

You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.


Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you fi                 a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you fi        any errata, please report them by visiting http://www.packtpub.

com/submit-errata, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verifi                    your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.



Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at copyright@packtpub.com with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.



You can contact us at questions@packtpub.com if you are having a problem with any aspect of the book, and we will do our best to address it.