- 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 fromMicropython |ProjectStructure
CircuitPython is aneducation friendly open source derivative ofMicroPython. CircuitPython supports useon educational development boards designed and sold byAdafruit. Adafruit CircuitPython featuresunified Python core APIs and a growing list of Adafruit libraries anddrivers of that work with it.
This project is stable. Most APIs should be stable going forward. Thosethat change will change on major version numbers such as 2.0.0 and3.0.0.
M0 Boards
- Adafruit CircuitPlayground Express (CircuitPython Guide)
- Adafruit Feather M0 Express (CircuitPython Guide)
- Adafruit Gemma M0 (CircuitPython Guide)
- Adafruit Hallowing M0 Express (CircuitPython Guide)
- Adafruit ItsyBitsy M0 Express (CircuitPython Guide)
- Adafruit Metro M0 Express (CircuitPython Guide)
- Adafruit Trinket M0 (CircuitPython Guide)
M4 Boards
- Adafruit Feather M4 Express (CircuitPython Guide)
- Adafruit ItsyBitsy M4 Express (CircuitPython Guide)
- Adafruit Metro M4 Express (CircuitPython Guide)
- Adafruit Feather HUZZAH
- Adafruit Feather M0Basic
- Adafruit Feather M0 BluefruitLE (uses M0 Basicbinaries)
- Adafruit Feather M0Adalogger (MicroSD cardsupported using theAdafruit CircuitPython SDlibrary)
- Arduino Zero
- Arduino MKR Zero (MicroSD cardsupported using theAdafruit CircuitPython SDlibrary)
Official binaries are available through thelatest GitHubreleases.Continuous (one per commit) builds are availablehereand includes experimental hardware support.
Guides and videos are available through theAdafruit LearningSystem under theCircuitPythoncategory andMicroPythoncategory. An APIreference is also available onRead the Docs. A collection of awesomeresources can be found atAwesome CircuitPython.
Specifically useful documentation when starting out:
SeeCONTRIBUTING.mdfor full guidelines but please be aware that by contributing to thisproject you are agreeing to theCode ofConduct.Contributors who follow theCode ofConductare welcome to submit pull requests and they will be promptly reviewedby project admins. Please join theDiscord too.
Differences fromMicroPython
CircuitPython:
- includes a ports for MicroChip SAMD21 (Commonly known as M0 in Adafruitproduct names) and SAMD51 (M4).
- supports only SAMD21, SAMD51, and ESP8266 ports. An nRF port is underdevelopment.
- tracks MicroPython's releases (not master).
- Longints (arbitrary-length integers) are enabled for most M0Express boards (those boards with SPI flash chips externalto the microcontroller), and for all M4 builds.Longints are disabled on other boards due to lack of flash space.
- The order that files are run and the state that is shared betweenthem. CircuitPython's goal is to clarify the role of each file andmake each file independent from each other.
boot.py(orsettings.py) runs only once on start up beforeUSB is initialized. This lays the ground work for configuring USB atstartup rather than it being fixed. Since serial is not available,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 andhardware is reinitialized.This means you cannot read state from``code.py`` in the REPL anymore. CircuitPython's goal for thischange includes reduce 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 storageafter the crash. A reset (the button) is needed after its fixed toget back into normal mode.
- Unified hardware APIs:audioio,analogio,bleio,busio,digitalio,pulseio,touchio,microcontroller,board,bitbangio
- No
machineAPI on Atmel SAMD21 port.
- No module aliasing. (
uosandutimeare not available asosandtimerespectively.) Insteados,time, andrandomare CPython compatible. - New
storagemodule which manages file system mounts.(Functionality fromuosin MicroPython.) - Modules with a CPython counterpart, such as
time,osandrandom, are strictsubsetsof theirCPythonversion.Therefore, code from CircuitPython is runnable on CPython but notnecessarily the reverse. - tick count is available astime.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 sharedamongst ports including CircuitPython:
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 librariessuch as FATFS.logoThe CircuitPython logo.mpy-crossA cross compiler that converts Python files to bytecode prior to being run in MicroPython. Useful for reducing librarysize.pyCore Python implementation, including compiler, runtime, andcore library.shared-bindingsShared definition of Python modules, their docsand backing 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 asArduinoZero,AdafruitFeather M0 Basic, andAdafruit Feather M0 BluefruitLE.bare-armA bare minimum version of MicroPython for ARM MCUs.cc3200Support for boards basedCC3200 from TI such as theWiPy 1.0.esp8266Support for boards based on ESP8266 WiFi modules such astheAdafruit FeatherHUZZAH.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 microcontrollersincluding the MicroPython flagshipPyBoard.teensySupport for the Teensy line of boards such as theTeensy3.1.unixSupport for UNIX.windowsSupport forWindows.zephyrSupport forZephyr, areal-time operating system by the Linux Foundation.
CircuitPython only maintains theatmel-samd andesp8266 ports.The rest are here to maintain compatibility with theMicroPython parentproject.
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%
