Skip to content


The majority of Adafruit hardware can run either


A Beginner's Recommendation.


What is CircuitPython?

This website focuses on CircuitPython which is a version of python for microcontrollers. Adafruit is the principle backer for CircuitPython.

I recommend CircuitPython over Arduino for beginners because:

  • Python is a more accesible programming language than C++ (which is what Arduino uses).
    • Python syntax is more similar to plain language
  • Python gives beginners an easier and quicker feedback loop
    • Python code does not need to be compiled in the way that C++ (Arduino) code requirees.
      • With CircuitPython, the code is stored and run directly on the microcontroller, aka "click save and your code starts running"
    • Arduino code requires the traditional method of:
      • Compiling code on an external device (e.g., your laptop)
      • Downloading the compiled binary to the microcontroller through the Arduino IDE
      • Debugging the code
      • Watching the output
  • Edit with any code editor

Because of these and other reasons, Python continues to be increasingly used for microcontroller projects.



Great for younger students, MakeCode is a blocked-based programming language which is similar to Scratch.

Block-based programming, such as MakeCode or Scratch, is great for younger beginners. Using drag-and-drop blocks avoids common syntax errors like typos or formatting issues, which can be source of frustration for new programmers. However, the power and flexiblity of block-based programs is limited.

Hence for older students, or those students already experienced with Scratch or MakeCode, I recommend jumping straight into python.


For those looking to ease the transition from block-based programming to python, EduBlocks is an interesting hybrid which offers python in a block-based format.

The CircuitPython Show interviews Joshua Lowe, the creator of EduBlocks (Aug 8, 2022).
Joshua Lowe joins the show and shares how he started programming and created Edublocks.


CodeSkool is a block based Python for Raspberry Pi Pico Now at CodeSkool ( we support the complete examples of PicoZero Python API All you need is a $4 raspberry Pico board, few led, resistors, a buzzer & a speaker. Now write programs that runs and interact with the physical world, using drag & drop scratch blocks with our Python extension. With Scratch Kids can use the familiar environment to program Pico. Just drag the blocks and it will generate the python code, that they can upload directly, i.e. save directly using the upload button to the device. The kids don't need any tool, just a browser and there familiar scratch environment and they can write code that is running on embedded hardware and can interface with the real world like they used to do with makey makey, etc

What about Micropython?

MicroPython is an open source Python programming language interpretor that runs on small embedded development boards, aka microcontrollers.

  • Lean and efficient implementation of Python 3
    • Includes a small subset of Python standard library
  • Optimized to run on microcontrollers
  • Micropython developed by Damien George in 2014
    • CircuitPython is a fork of Micropython
      • CircuirtPython developed by Adafruit in 2017
    • While CircuitPython looks somewhat like MicroPython there are some differences.

Choose MicroPython

  • For advanced features like interrupts and threading
  • Complete access to the RP2040’s Programmable I/O (PIO) in Python

Choose CircuitPython

  • Beginner friendly
  • Extensive library support for sensors and other breakouts
  • Well supported by Adafruit

CircuitPython Documentation

CircuitPython documentation is hosted at Read the Docs.

CircuitPython Community

Additional References

Additional CircuitPython Resources

Adafruit has a great walkthrough on how to get started with CircuitPython with Raspberry Pi Pico

This page was last updated on 2023-03-01 15:25:07 -0500.