Search icon CANCEL
Subscription
0
Cart icon
Close icon
You have no products in your basket yet
Save more on your purchases!
Savings automatically calculated. No voucher code required
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
zł39.99 | ALL EBOOKS & VIDEOS
Save more on purchases! Buy 2 and save 10%, Buy 3 and save 15%, Buy 5 and save 20%
Learning C for Arduino
Learning C for Arduino

Learning C for Arduino: A comprehensive guide that will help you ace C's fundamentals using the powerful Arduino board

By Syed Omar Faruk Towaha
Free Trial
Book Mar 2017 378 pages 1st Edition
eBook
zł158.99 zł39.99
Print
zł197.99 zł137.99
Subscription
Free Trial
eBook
zł158.99 zł39.99
Print
zł197.99 zł137.99
Subscription
Free Trial

What do you get with a Packt Subscription?

Free for first 7 days. $15.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
Table of content icon View table of contents Preview book icon Preview Book

Learning C for Arduino

Chapter 1. Getting Started

Since you have picked this book, this means you want to learn both about programming and electronics, especially microcontrollers. The book is designed to enable you to learn C programming easily and implement the language with an Arduino. I would suggest you do every code of the book by yourself and run them on the Arduino IDE. Microcontroller programming was hard before, but since the innovation of Arduino and the use of C programming on the Arduino board, microcontroller programming has become easy and fun.

Before going any further, let's understand the programming language C better. You may wonder why C programming is called C.

Well, before the creation of C, there was its predecessor programming language, called B. So, you should be able to guess from this where the name came from. The B language was developed by Ken Thompson at Bell Labs. At the same lab, the C language was developed in 1972 by Dennis Ritchie. The main purpose of creating this language was to design a UNIX operating system. Ken Thomson and Dennis Ritchie were the main developers of the UNIX operating system, so Dennis developed C to design UNIX.

C is not just a powerful language but a flexible one too. It is a portable language, because we can write a C program on one computer and compile to another with almost no modification.

To compile the source code of C, we need to have an IDE installed to our computers. Throughout this book we will learn C programming using the Arduino IDE. We will also be introduced to the Arduino IDE, its installation process, and how we can run our very first C program using an Arduino and the Arduino IDE.

Note

IDE stands for Integrated Development Environment. IDEs are used for software development. An IDE usually consists of an editor (where we can type code and comments), and a few tools along with a debugger (which is used to test the code to see if it has any errors). Most IDEs have a built in compiler (which converts source code/programming language into machine language).

Let's get introduced to an Arduino now.

Arduino


Arduino is a microcontroller board. People also call it a prototype board. In a nutshell, an Arduino board is a small computer with a processor, RAM, ROM etc. Arduino is open source hardware - you might have heard of open source software. Open source software is computer software distributed with a license that gives the users the right to see its source code. A Free Open Source Software license provides the rights to study, change and distribute the software to anyone for any kind of purpose. Open source software is usually developed by a group of open source enthusiasts who develop and gradually fix bugs of the software.

Since Arduino is open source hardware, we can build our own Arduino and also develop it for the purpose of our goals. We can change it to whatever we want.

Types of Arduino

Since Arduino is open source hardware, people around the world modify the board according to their needs. There are a few companies that produce different versions and types of Arduino. Let's get introduced to a few famous types of Arduinos.

Arduino Uno

Arduino Uno is the most-used Arduino board. It is based on the ATmega328 microcontroller. It has 14 digital pins and six analog inputs. We will know more about analog and digital pins in the next chapters.

The ATmega328 has 32Kbytes flash memory, 32 pins, 20MHz maximum operating frequency and 8-bit AVR CPU. The following image is an Arduino Uno board and an ATmega328 microcontroller with its pin out:

Arduino Mega

Arduino Mega is a microcontroller board that is famous for providing more pins. It uses ATmega2560, and has 54 digital pins and 16 analog inputs.

The ATmega2560 has 256Kbytes of flash memory, 100 pins, 16MHz operating frequency and 8-bit AVR CPU. The following image is an Arduino Mega and an ATmega2560 microcontroller with its pin out:

Arduino Nano

Arduino Nano is usually chosen for prototypes with a small form factor. It is based on the ATmega328 microcontroller, which is same as the Arduino Uno. It has 14 digital pins and eight analog inputs. The following image is an Arduino Nano:

Arduino Leonardo

Arduino Leonardo is similar to Arduino Uno. The main difference is that it has a soldered microcontroller instead of a removable one, and the model of the microcontroller is ATmega32U4. It has 20 digital pins and 12 analog inputs. The following image is an Arduino Leonardo with the ATmega32U4 microcontroller's pin out:

Arduino Mini

Arduino Mini is a small prototyping device that is based on the ATmega168. It does not come with a USB port. Arduino Mini has 14 digital pins and eight analog inputs. The ATmega168 has 16Kbytes of flash memory, 20MHz maximum operating frequency and an 8-bit AVR CPU. The following image is an Arduino Mini and an ATmega168 microcontroller with its pin out. The following image is image of an Arduino menu with the ATmega168's pin out:

Arduino Micro

Arduino Micro is based on the ATmega32u4 microcontroller. It uses the same microcontroller as the Arduino Leonardo. There are fewer digital and analog pins than in the Arduino Leonardo - the Micro has 20 digital pins. It comes with a micro USB port and ICSP pins. The following image is an Arduino Micro:

Throughout this book, we will use the most famous board, Arduino Uno. Arduino Uno has a replaceable microcontroller, ATmega 328. Before connecting an Arduino to our PC, let's get to know our Arduino better.

Exploring Arduino Uno


An Arduino Uno consists of a number of parts. The important ones are as follows:

  • USB port

  • External power supply port

  • Analog pins

  • Digital pins

  • ICSP

  • Microcontroller

  • Reset button

Let's know about them in detail.

USB port

This port is used to power up the Arduino board and upload programs into the microcontroller:

On the Arduino Uno, the USB port is situated in between the reset button and the voltage regulator.

A-B cable is needed for powering up the board and uploading code to the microcontroller. The following picture is an A-B cable:

The 'A' side is connected to the Arduino board and the 'B' side is connected to the USB port of the computer.

External power jack

Via this port, we can power the Arduino, but we cannot upload a program using it. This port is usually a 7-12 volt DC input. The following picture is a spare port and an adapter of 7-12 volts. The following picture is an external power jack and a port of 3.5mm power:

Analog pins

On an Arduino Uno, there are six analog pins (A0, A1, A2, A3, A4 and A5). The analog pins are used for reading analog values. We will discuss the uses of the analog pins in the next chapter.

The following image shows the analog inputs of the Arduino Uno:

Digital pins

On an Arduino Uno there are 14 digital pins (0-13). The digital pins are used for reading digital values from sensors, generating digital signals and communicating with other devices through digital interfaces. The following image shows the position of the digital pins of the Arduino Uno:

ICSP

There are two sets of ICSP (In Circuit Serial Programming) pins on an Arduino Uno board. On the image below, you can see both of them (A and B). These ICSP pins are used for updating the firmware or reinstalling the bootloader, which is something you should not worry about in this book:

Note

Firmware is permanent software that is programmed on the read-only memory, and bootloader is a computer program that helps to load the operating system.

Microcontroller

There is a main microcontroller on our Arduino. By microcontroller we mean a single computer or a collection of processor core, memory and input/output peripherals. On our Arduino Uno we have ATmega328. Let's see the pin out of the microcontroller:

The pins are defined as follows:

Pin number

Pin name on the microcontroller

Pin name on Arduino

1

PC6

Reset

2

PD0

0 (RX)

3

PD1

1 (TX)

4

PD2

2

5

PD3

3 (PWM)

6

PD4

4

7

VCC

VCC

8

GND

GND

9

PB6

Crystal

10

PB7

Crystal

11

PD5

5 (PWM)

12

PD6

6 (PWM)

13

PD7

7

14

PB0

8

15

PB1

9 (PWM)

16

PB2

10 (PWM)

17

PB3

11 (PWM)

18

PB4

12

19

PB5

13

20

AVCC

VCC

21

AREF

AREF

22

GND

GND

23

PC0

A0

24

PC1

A1

25

PC2

A2

26

PC3

A3

27

PC4

A4

28

PC5

A5

Note

PWM means Pulse Width Modulation. This is a process by which we get analog results by digital means. GND is Ground, and VCC is the power (3.5V or 5V).

Reset button

On Arduino Uno there is a reset button between the USB port and the digital pins. The following pins show a reset button of Arduino Uno. This button is used to refresh the board or restart the system:

Now we know all we need about Arduino Uno, let's connect it to the computer and program for our Arduino Uno.

Connecting Arduino to PC

To connect Arduino Uno to our system we will need an A-B cable, about which we have already learned. Let's connect the Arduino as shown in the following image:

You will hear a sound on your system after connecting the Arduino Uno to the PC. A green light on the Arduino Uno will glow. If the green light does not glow, something went wrong. You need to check the connection or see Chapter 10, Few Error Handlings:

Now, we will download the IDE for coding for the Arduino and uploading to the board.

Downloading and installing Arduino IDE


Arduino IDE is an Integrated Development Environment where we can write code, debug and upload to our Arduino Uno or any other board.

Downloading Arduino IDE

To download Arduino IDE, we need to go to https://www.arduino.cc/en/Main/Software and you will see the following page:

We will download the package associated with our Operating System.

Installing Arduino IDE

Let's install Arduino IDE on our system.

Installing Arduino IDE on Windows

To install Arduino IDE on Windows, go to the previous link and download Windows Installer or Windows Zip file for non admin install. I would recommend you choose the installer file because the other file is a portable IDE, which may show errors with the drivers of the Arduino.

You will see the following page after clicking on any of the files:

You may Contribute and Download or Just Download.

After downloading the Windows Installer file, you will have an .exe file. Double click on the file to get started. I would recommend right clicking on the .exe file and selecting Run as Administrator,as shown in the image below:

The rest of the processes are similar to an ordinary installation.

Installing Arduino IDE on Ubuntu/Linux

On most modern Linux distributions you can download the Linux 32 bits or Linux 64 bits depending on your system architecture.

On Ubuntu and most Debian-based distributions you can use the command line to download and install the IDE from official package sources. Open your terminal ( Ctrl+Alt+T) and write the following line and press Enter.

sudo apt-get install arduino arduino-core

You will be prompted to enter your password. Enter your password and hit Enter :

You will be shown the following message on your terminal. Type Y and hit Enter :

If no error occurs, you will see the following screen:

Installing Arduino IDE on Mac

To install Arduino IDE for mac, download the Mac OS X 10.7 Lion or newer file. You will see the Arduino.app file in your download folder. Double click on the file and you will first see a message that says verifying the Arduino.app. Then you will see a warning as the following image:

Click Open to open the Arduino IDE.

You may not see the option Open . All you need is to press the Control/Option Key of your mac and click on the Arduino.app  file, and you will see the Open option.

You may copy the Arduino.app file into your Application folder for frequent access.

Explore Arduino IDE


Now we have downloaded and installed the Arduino IDE on our system, let's explore the IDE.

In Windows, just open the installed Arduino software. On Ubuntu/Linux, type the following line in the terminal and hit Enter :

sudo Arduino

On the mac, just open the Arduino.app file.

No matter which operating system you use, you will see almost the following screen on every platform:

At the top of the screen you will find all the menus for the Arduino Uno. Before learning anything, let's configure our Arduino Uno with the Arduino IDE. We have already connected our Arduino to our PC via an A-B cable. Now, from the menu, go to Tools | Board and select Arduino Uno. Then go to port and select the port on which the Arduino is connected:

If you find difficulty in selecting the port, please have a look at Chapter 10, Few Error Handlings.

If everything looks good, then we are now ready to write code for Arduino and upload it to the board.

Let's explore all the menus and their functions. In the File menu you will see the following options:

  • New: This option enables you to create a new Arduino file.

  • Open: This option opens an existing Arduino file.

  • Open Recent: This shows the recent Arduino files.

  • Sketchbook: This shows the stored files.

  • Examples: This shows the common Arduino Programs and other library file-related examples.

  • Close: This option closes the Arduino tab.

  • Save: This option saves the Arduino code you want to save inside a folder and adds an .ino extension to the file.

  • Save as: This allows you to save the file as other formats (for example a text file).

  • Page Setup: This option helps to set up the print screen of the code.

  • Print options let you print the code.

  • Preference: This shows the following screen, where you can customize the look of your Arduino IDE, for example the location of your sketchbooks, size of fonts, type of fonts, display line numbers and so on. I would suggest checking the Display.

Line numbers option for the debugging suitability:

  • Quit option helps to exit the Arduino IDE at any time

  • The Edit option shows the following screen:

In the Edit menu, you will see the following options:

  • Undo: This option allows you to undo any error in the code or go back to the previous step of the code.

  • Redo: This option allows you to go forward if you have selected undo before.

  • Cut: This option cuts the line of code.

  • Copy: This option copies the selected text.

  • Copy for Forum: This formats code for the Arduino forum.

  • * Copy as HTML: This copies code as an HTML document. This option is used to publish the Arduino code to the web. It's an option that allows you to export the code in a web format (using HTML, CSS etc). Just click this option after writing the code, and your code will be copied as the web format. You can then use it in an HTML file.

  • Paste: This option allows you to paste the copied text.

  • Select All: This selects all the code.

  • Go to line: This allows you to go to the desired line.

  • Comment/Uncomment: This allows you to comment or uncomment any text on the code.

  • Increase Indent: This moves code to the right using spaces (organizes code for better readability).

  • Decrease Indent: This moves code to the left, removing spaces.

  • Find: This helps to find any text in the text editor.

  • Find Next: This helps you to find the next keyword when searching in the text editor.

  • Find Previous: This helps you to find the previous keyword that was searched for in the text editor:

In the Sketch menu you will see the following options:

  • Verify/Compile: This option compiles the code we write in the text editor into machine code for the Arduino microcontroller. In doing so, it also verifies the code to find any programming errors.

  • Upload : This option helps to upload the code we write in the text editor to the Arduino board.

  • Upload Using programmer: In the Arduino Uno, we use an ATmega328 microcontroller. By default, when we purchase it, it comes preinstalled with a tiny program known as a bootloader, and using this we can upload code to the board directly. If there was no bootloader, we would need an external programmer to upload code to the Arduino. So, if we need to change the removable microcontroller for a new one, it might not contain the bootloader pre-installed. For this reason, we use this option. We connect the Arduino with a fresh microcontroller and another old Arduino with a pre-installed bootloader. Then we upload to the new one using the old one as a programmer.

  • Export compiled binary: We sometimes need .hex files for microcontrollers. This option allows us to convert the Arduino code into hex format.

    Note

    Hex file is a file format that conveys binary data into ASCII text format.

  • Show Sketch Folder: This folder shows the directory of the sketch files we save.

  • Include Library: There are a number of libraries for Arduino, about which we will learn more in Chapter 8Working with Arduino Libraries. Using this option, we can add libraries to our code. All we need to do is just select a library and the Arduino application will automatically add the library to the code.

  • Add File... By using this option, we can add files (any file) to our sketch folder:

In the Tools menu, you will see the following options:

  • Auto Format: We sometime do not maintain clean code. The code might not be understood by others if we do so. This option auto formats the whole code and makes it readable.

  • Archive Sketch: To make a zip folder that includes all the sketch files inside our sketch folder, we use this option.

  • Fix Encoding and Reload: This fixes the character encoding of the text file and reloads it.

  • Serial Monitor: This is one of the most useful options of the Arduino application. With this option we can monitor the data input/output on the Arduino. We will discuss this option later.

  • Serial Plotter: With this option we can also monitor the serial, but visually. We can create graphs using this option. You will be given examples of the serial plotter later.

  • Board: Using this option you can select your Arduino board, which is connected to your PC.

  • Port: With this option, we can select the port to which our Arduino is connected.

  • Get Board Info: This option shows the Arduino board information, which is connected to the PC.

  • * Programmer: This option selects the programmer if we want to burn our microcontroller or burn a bootloader on another Arduino. By default, AVRISP mkll is selected.

  • Burn Bootloader: This option helps to burn the bootloader on another Arduino.

Summary


In this first chapter we have learned all the basic information about an Arduino, especially Arduino Uno. Don't worry about other types of Arduino, because they have almost the same functionalities. Sometimes the number of pins is greater, or the microcontroller is faster (and so on) on other types of Arduino.

I would suggest you read the whole chapter and get to know your Arduino better for the following chapters. If you want to learn only C programming, not for Arduino, then you can skip this chapter.

Left arrow icon Right arrow icon

Key benefits

  • Get hands-on experience with the Ardruino board and learn to control it with your programming skills
  • Learn the essential concepts of C such as variables, data structures, functions, loops, and pointers
  • Work with electronic devices such as LEDs, switches, and motors and connect them to Arduino using C

Description

This book will start with the fundamentals of C programming and programming topics, such data types, functions, decision making, program loops, pointers, and structures, with the help of an Arduino board. Then you will get acquainted with Arduino interactions with sensors, LEDs, and autonomous systems and setting up the Arduino environment. Moving on you will also learn how to work on the digital and analog I/O, establish serial communications with autonomous systems, and integrate with electronic devices. By the end of the book, you will be able to make basic projects such as LED cube and smart weather system that leverages C.

What you will learn

Play with mathematical operations using C Use logical operations and loops to play with LEDs and the Arduino board Create custom functions using C and connect an SD card to the Arduino Use Object-oriented Programming to connect a GSM module to the Arduino board Play with an LCD board and Servo using standard Arduino libraries Build projects using Arduino such as a LED cube, a smart weather system, and home security Identify and fix common errors on an Arduino board

Product Details

Country selected

Publication date : Mar 24, 2017
Length 378 pages
Edition : 1st Edition
Language : English
ISBN-13 : 9781787120099
Category :
Languages :

What do you get with a Packt Subscription?

Free for first 7 days. $15.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details


Publication date : Mar 24, 2017
Length 378 pages
Edition : 1st Edition
Language : English
ISBN-13 : 9781787120099
Category :
Languages :

Table of Contents

17 Chapters
Learning C for Arduino Chevron down icon Chevron up icon
Credits Chevron down icon Chevron up icon
About the Author Chevron down icon Chevron up icon
About the Reviewer Chevron down icon Chevron up icon
www.PacktPub.com Chevron down icon Chevron up icon
Customer Feedback Chevron down icon Chevron up icon
Preface Chevron down icon Chevron up icon
1. Getting Started Chevron down icon Chevron up icon
2. Our First Program! Chevron down icon Chevron up icon
3. Exploring C with Arduino IDE Chevron down icon Chevron up icon
4. Blinking with Operations and Loops Chevron down icon Chevron up icon
5. Functions and Files with Arduino Chevron down icon Chevron up icon
6. Arduino and C++ Chevron down icon Chevron up icon
7. Using Pointers and Structure Chevron down icon Chevron up icon
8. Working with Arduino Libraries Chevron down icon Chevron up icon
9. Lets Build Something Awesome Chevron down icon Chevron up icon
10. Few Error Handlings Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Empty star icon Empty star icon Empty star icon Empty star icon Empty star icon 0
(0 Ratings)
5 star 0%
4 star 0%
3 star 0%
2 star 0%
1 star 0%
Top Reviews
No reviews found
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.