The picture above shows the simplest of Arduino programs, what you get when you select File -> New from the menu. There are two mandatory function calls:

  • setup - code that will be executed once when the program begins
  • loop - code that is continuously run in a loop, over & over

Neither function must do anything. There are sketches that do everything just once in setup and some programs that don't use setup at all and just use loop. But both must be defined, even if they are empty like shown above.


CircuitPython does not put restrictions on having either code which is executed at the start like the Arduino setup function or any sort of repetitive main code like the Arduino loop function.

That said, many CircuitPython programs are structured very similarly to how an Arduino sketch program is structured.

A simple example. A program that defines a variable var to be the value 5 and then prints that value over and over, kinds similar to the old BASIC Hello World programs. In Arduino, you might write this as follows:

The program adds a bit of code to open the serial connection and print the output.

The equivalent CircuitPython program would be:

Any setup type statements are placed near the top of the program.

An infinite loop like the Arduino loop function can be done in Python via a while loop with the condition set to True so that it never exits the while.

The serial monitor is "baked in" to CircuitPython, the user does not have to set anything up to use it and this will be discussed more in-depth in this guide.

There is no constraint that CircuitPython must do an infinite loop at all. A simple program might read a temperature sensor, print the output and end.

But, both Arduino and CircuitPython run on microcontrollers. In a class, you might want to do something like read and print a temperature value once. If this project were deployed to a farmer's field, it would probably read the temperature over and over, probably so many times a minute or hour. The code should never stop when out in the farmer's field.

So an infinite loop to do certain functions is of great utility and is used in a majority of microcontroller programs. This is why Arduino has simplified things for beginners, to show that you may want to have a setup and loop. You can do the exact same things in CircuitPython, you just structure your code to provide the same functionality.

This guide was first published on Oct 22, 2018. It was last updated on Oct 22, 2018.

This page (Simple Code Structure) was last updated on Oct 14, 2018.

Text editor powered by tinymce.