Understanding the Arduino uber functions loop() and setup()

Understanding the Arduino uber functions loop() and setup()

Discussion:

In this lesson, we're going to discuss two very special functions that you will use in every single Arduino sketch that you write. They're called Setup and Loop.

Specifically, we'll cover:

  • How Setup Operates and the type of code that it executes
  • How Loop Operates and the type of code that it executes
  • Loop Function's Responsive Outputs
  • How to get those little ships inside the glass bottles

I want you to pretend for a moment that you own a specialty Italian sub shop. Business is great, and you have wonderful customers.

However, you have one major problem. Employee turnover is very high. This is mostly because the majority of your employees are teenagers who, by nature, tend to move on to different things.

It feels like as soon as you get an employee trained, they move on to Harvard Business School or get a scholarship to MIT - or they just decide that bungee jumping all day long is better than making subs.

In order to help train new employees, you create two binders of procedure lists. One binder is called "The Morning Setup Binder", and it lists all the stuff that you have to do when you open the store.

This binder contains things like unlock the front and back doors, turn on the "Open" sign, put the delivered sausage in the fridge, and get the broccoli out of the fridge. It's stuff that only has to be done once.

Once all of that stuff has been done, a new employee can take that binder and stick it on the shelf. Then, they can pull out "The Sub Making Binder". This is the binder that lists step-by-step everything an employee has to do to make a sub and deliver quality customer service.

It might go something like this: When a customer walks in, welcome them with a warm, "Hello!" Ask them what type of sub they want. Ask them what type of bread they want. Ask them what type of condiments they want. Ask them if it will be for here or to go. See if they want to add one of Mama's homemade cookies to their order. I think you get the gist.

The binder lists these steps in detail and talks about the quantities of toppings for different subs. "The Sub Making Binder" is really the procedure list that drives the task of the employee and will be the binder that the new employee will keep open all day long when they're starting out. They're going to go back to it over and over again for every sub.

So, what does this have to do with programming? Well, a program in Arduino has to do similar things like the sub shop.

The Setup Function

There are certain tasks that need to be done just once when the program first starts. These are things like: setting up a serial communication to talk with the computer over a USB port, setting the modes of microcontroller pins as either inputs or outputs, displaying a welcome message on an attached LCD screen, or possibly turning a servo to a default location.

All of these things might only need to happen once when the sketch first starts and never need to be bothered with again until the program is restarted or the Arduino is reset. These are the type of tasks that are put into a special function called Setup.

Let's take a look at Setup. First, notice that the color of Setup is different. Unfortunately, the color is reminiscent of baby poop.

This automatic coloring, though, is letting you know that the Arduino IDE recognizes the function Setup as a special type of function that's used for controlling the structure of the code.

You'll also notice that right after the word Setup there is an opening and closing parenthesis. The Setup function doesn't need any arguments to operate, but you still have to include the opening and closing parentheses just as you would in any other function.

To the left is the word void. Void means that the Setup function will not return any data.

So this is a function that doesn't need any arguments from us in order to operate and doesn't return any values to us, but it does do something. Its job is to execute all the code inside its opening and closing curly braces precisely one time.

Let me say this again - and with a dramatic pause - because it's that important! Setup only runs once. When the program starts up, Setup will run just once. All of the code inside the curly brackets will get executed one time.

If you pretend the program is like the high schooler at the sub shop, the first thing she does when she comes to work is open "The Setup Binder" and go line-by-line until everything is done. Once everything in Setup is finished, she closes the binder, and then she goes on to the next binder.

The Loop Function

For the Arduino sketch, the next binder is the Loop function. The Loop function looks just like the Setup function.

It doesn't take any arguments. It has the opening and closing parentheses. It doesn't return any values, so it has that void to the left. Then, it has the opening and closing curly brackets. Just like Setup, when Loop gets executed, the program will work line-by-line down the sketch.

However, here's how Loop is different. When the code between the curly brackets has been executed, the program starts back at the top of the loop and does it all over again.

Back to our sub shop example, imagine the teenage employee during the lunch hour rush. He has customer after customer lined up, and he's going through each line in the procedure guide step-by-step.

He asks what kind of sub they want. He asks what kind of bread they want. He asks if they want it for here or to go, and so on and so forth. He keeps working down that list until he gets to the end of the procedure list.

Then, he starts back at the top of the list with the next customer. He does this over and over and over, all through the lunch rush and all day long.

This is how the Loop works. It executes all of the code inside the curly brackets, step-by-step. When it gets to the closing curly bracket, it starts all over at the top, working through all of the code again, line-by-line. It does this over and over and over.

How fast can it go through the loop? How fast can it actually execute this code? Well, that's a really good question. The answer is that it depends, but the microcontroller that the Arduino uses can run at 20 megahertz.

Each line of code you write might end up being multiple instructions when it actually gets translated into machine code, but needless to say, even a sketch with several thousand instructions will be looping pretty fast.

Even though I really do like this sub shop analogy, there's one key place that it breaks down. I want to point it out so that you're not misled.

In the sub shop example, the teenager waits to start the instructions again when a new customer shows up. In reality, the code in the Loop automatically starts over. Once it gets to the bottom, it jumps back to the top. It doesn't wait for any outside input to do so.

Responsive Outputs for Loop Functions

You might be wondering how the same code running over and over again can produce any coherent result. How does it add any variation?

Well, think about that teenage sub maker. Do you remember the steps that she had to follow? Many of the steps could have different results depending on the response of the customer. So she may have had one procedure guide, but she could make a giant variety of tasty subs as a result.

It's the same way with the programming code. You're going to write instructions that will do different things based on different new inputs.

For example, if the water level is above some threshold, then beep an alarm. Otherwise, don't do anything. As the code loops over and over again, it's probably doing nothing until it sees that the threshold was too high. Then it executes what you've asked it to do.

Or maybe something like... while the light is shining, keep the servo arm at 60 degrees. There's all types of amazing things that you can do and all types of possibilities of how you can control things.

There's one last thing to keep in mind. The Setup and Loop functions are required in your sketches. Your sketches will not compile without them being present.

In fact, these two functions are so integral that when you open up a new sketch in the Arduino IDE, you'll find them already there for you pre-populated.

Review

This was a lot of information, so let's review. Setup and Loop are special functions that help define the structure of the program.

Setup is written before the loop and only executes once. All of the code in the Setup function only runs once.

The code in the Setup function does things like set pin modes, start serial communication with the computer, display default messages to an LCD screen, or just about anything that needs to happen only once at the beginning of a program.

The Loop function comes after the Setup function. All of the code in the Loop function runs over and over forever really fast.

Both the Loop and the Setup function are required in your sketch. The program will not compile without them.

If you ever forget what the Loop and the Setup do, just say their names. Setup sets up the sketch. Loop loops over and over again. I hope you have a wonderful day, and I can't wait to see you in the next video lesson.

Avsnitt(61)

Understanding the Arduino Sketchbook: Opening and Saving Arduino Sketches

Understanding the Arduino Sketchbook: Opening and Saving Arduino Sketches

Understanding how the Arduino IDE sets up its file directory system can spare you some confusion when it comes to saving, organizing and opening your Arduino sketches (or sketches you have downloaded ...

21 Apr 20179min

An Easy Way to Learn I2C, SPI, RTC, ADCs and More with this Awesome Arduino Education Shield

An Easy Way to Learn I2C, SPI, RTC, ADCs and More with this Awesome Arduino Education Shield

In this video we talk about an Arduino shield designed to teach you about shift registers, I2C, SPI, temperature sensors, real time clocks, analog to digital convertors and flash memory chips - all th...

20 Apr 20175min

The Process and Tools I use for Creating Arduino Tutorials

The Process and Tools I use for Creating Arduino Tutorials

This week's Episode is what I am calling an intermission, which is basically me taking a break from hardcore Arduino tutorial making, and present a less technical topic.  In this intermission video, I...

19 Apr 20178min

Using the Same Input to Trigger Multiple Arduinos

Using the Same Input to Trigger Multiple Arduinos

If you ever have a project using two or more Arduinos, it's likely you'll want them to work together. Say for example you have one Arduino connected to an LCD shield, and another Arduino controlling a...

18 Apr 20179min

6 Tips on Assembling an Arduino Shield (Or any Electronics Kit)

6 Tips on Assembling an Arduino Shield (Or any Electronics Kit)

In this video we will be talking about some key points to keep in mind when assembling an Arduino shield from a kit. Many of these tips will apply equally well to any type of electronics kit you are a...

17 Apr 20178min

A YouTube Channel for Learning about Arduino

A YouTube Channel for Learning about Arduino

In this episode I talk about the video channel that I host on YouTube. If you have watched any previous episodes of this channel then you know I focus on Arduino related topics. The purpose of the cha...

16 Apr 20175min

What is a Breakout Board for Arduino?

What is a Breakout Board for Arduino?

If you have been learning about Arduino for any amount of time, than you have probably come across the term Breakout Board.  Now, you might think, as I did when I first heard about breakout boards, th...

14 Apr 20178min

What is an Arduino Shield?

What is an Arduino Shield?

If you are learning about Arduino, you have no doubt come across the term Arduino Shield. This tutorial will explain what Arduino Shields are, why they are awesome, and several things to consider whe...

13 Apr 20179min

Populärt inom Utbildning

historiepodden-se
rss-bara-en-till-om-missbruk-medberoende-2
det-skaver
harrisons-dramatiska-historia
alska-oss
nu-blir-det-historia
johannes-hansen-podcast
rss-foraldramotet-bring-lagercrantz
not-fanny-anymore
roda-vita-rosen
rss-viktmedicinpodden
sektledare
allt-du-velat-veta
rss-sjalsligt-avkladd
sa-in-i-sjalen
rss-max-tant-med-max-villman
i-vantan-pa-katastrofen
rss-basta-livet
rib-podcast
rss-traningsklubben