- Notifications
You must be signed in to change notification settings - Fork1
CircuitPython - a Python implementation for teaching coding with microcontrollers
License
MIT, Unknown licenses found
Licenses found
python-ugame/circuitpython
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Status |Supported Boards |Download |Documentation |Contributing |Differences from Micropython |Project Structure
Adafruit CircuitPython is an open source derivative ofMicroPython for use on educationaldevelopment boards designed and sold byAdafruit.
CircuitPython, a MicroPython derivative, implements Python 3.x onmicrocontrollers such as the SAMD21 and ESP8266.
This project is in beta. Most APIs should be stable going forward.
- Adafruit CircuitPlayground Express
- Adafruit Feather M0 Express
- Adafruit Metro M0 Express
- Adafruit Gemma M0
- Adafruit Feather HUZZAH
- Adafruit Feather M0 Basic
- Adafruit Feather M0 Bluefruit LE (uses M0 Basic binaries)
- Adafruit Feather M0 Adalogger (MicroSD card supported using theAdafruit CircuitPython SD library)
- Arduino Zero
Official binaries are available through thelatest GitHub releases.Continuous (one per commit) builds are availablehereand includes experimental hardware support.
Guides and videos are available through theAdafruit Learning Systemunder theCircuitPython categoryandMicroPython category.An API reference is also available onRead the Docs.
SeeCONTRIBUTING.mdfor full guidelines but please be aware that by contributing to thisproject you are agreeing to theCode of Conduct. Contributors whofollow theCode of Conduct are welcome to submit pull requests andthey will be promptly reviewed by project admins. Please join theGitter chat orDiscord too.
Differences fromMicroPython
CircuitPython:
- includes a port for Atmel SAMD21 (Commonly known as M0in Adafruit product names.)
- supports only Atmel SAMD21 and ESP8266 ports.
- tracks MicroPython's releases (not master).
- The order that files are run and the state that is shared between them.CircuitPython's goal is to clarify the role of each file and make eachfile independent from each other.
boot.py(orsettings.py) runs only once on start up beforeUSB is initialized. This lays the ground work for configuring USBat startup rather than it being fixed. Since serial is notavailable, output is written toboot_out.txt.code.py(ormain.py) is run after every reload until itfinishes or is interrupted. After it is done running, the vm and hardware isreinitialized.This means you cannot read state fromcode.pyin the REPL anymore. CircuitPython's goal for this change includesreduce confusion about pins and memory being used.- After
code.pythe REPL can be entered by pressing any key. It nolonger shares state withcode.pyso it is a fresh vm. - Autoreload state will be maintained across reload.
- Adds a safe mode that does not run user code after a hard crash orbrown out. The hope is that this will make it easier to fix code thatcauses nasty crashes by making it available through mass storage afterthe crash. A reset (the button) is needed after its fixed to get backinto normal mode.
- Unified hardware APIs:
audioio,analogio,busio,digitalio,pulseio,touchio,microcontroller,board,bitbangio(Only available on atmel-samd21 and ESP8266 currently.) - No
machineAPI on Atmel SAMD21 port.
- No module aliasing. (
uosandutimeare not available asosandtimerespectively.) Insteados,time, andrandomare CPythoncompatible. - New
storagemodule which manages file system mounts. (Functionalityfromuosin MicroPython.) - Modules with a CPython counterpart, such as
time,osandrandom,are strictsubsetsof theirCPython version.Therefore, code from CircuitPython is runnable on CPython but notnecessarily the reverse. - tick count is available as
time.monotonic()
- RGB status LED
- Auto-reload after file write over mass storage. (Disable with
samd.disable_autoreload()) - Wait state after boot and main run, before REPL.
- Main is one of these:
code.txt,code.py,main.py,main.txt - Boot is one of these:
settings.txt,settings.py,boot.py,boot.txt
Here is an overview of the top-level source code directories.
The core code ofMicroPython is shared amongst ports includingCircuitPython:
docsHigh level user documentation in Sphinx reStructuredTextformat.driversExternal device drivers written in Python.examplesA few example Python scripts.extmodShared C code used in multiple ports' modules.libShared core C code including externally developed libraries suchas FATFS.logoThe MicroPython logo.mpy-crossA cross compiler that converts Python files to byte codeprior to being run in MicroPython. Useful for reducing library size.pyCore Python implementation, including compiler, runtime, andcore library.shared-bindingsShared definition of Python modules, their docs andbacking C APIs. Ports must implement the C API to support thecorresponding module.shared-moduleShared implementation of Python modules that may bebased oncommon-hal.testsTest framework and test scripts.toolsVarious tools, including the pyboard.py module.
Ports include the code unique to a microcontroller line and alsovariations based on the board.
atmel-samdSupport for SAMD21 based boards such asArduino Zero,Adafruit Feather M0 Basic, andAdafruit Feather M0 Bluefruit LE.bare-armA bare minimum version of MicroPython for ARM MCUs.cc3200Support for boards basedCC3200from TI such as theWiPy 1.0.esp8266Support for boards based on ESP8266 WiFi modules such as theAdafruit Feather HUZZAH.minimalA minimal MicroPython port. Start with this if you wantto port MicroPython to another microcontroller.pic16bitSupport for 16-bit PIC microcontrollers.qemu-armSupport for ARM emulation throughQEMU.stmhalSupport for boards based on STM32 microcontrollers includingthe MicroPython flagshipPyBoard.teensySupport for the Teensy line of boards such as theTeensy 3.1.unixSupport for UNIX.windowsSupport forWindows.zephyrSupport forZephyr, areal-time operating system by the Linux Foundation.
CircuitPython only maintains theatmel-samd andesp8266 ports. Therest are here to maintain compatibility with theMicroPython parent project.
About
CircuitPython - a Python implementation for teaching coding with microcontrollers
Resources
License
MIT, Unknown licenses found
Licenses found
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Languages
- C88.6%
- Python6.0%
- C++3.4%
- Makefile1.1%
- Assembly0.7%
- Shell0.1%
- Other0.1%