CircuitPython中文网 API 参考¶
欢迎使用 CircuitPython中文网 的 API 参考文档。这包含低级 API 参考文档,这些文档可能会链接到单独的 “入门”指南。Adafruit通过 Adafruit 学习系统提供了许多优秀的教程 。
CircuitPython¶
circuitpython.org | 获取 CircuitPython | 文档 | 贡献 | 品牌推广 | 与 Micropython 的区别 | 项目结构
CircuitPython是初学者友好的 Python 开源版本,适用于称为微控制器的小型廉价计算机。微控制器是许多电子产品的大脑,包括用于构建业余项目和原型的各种开发板。电子学中的 CircuitPython 是学习编码的最佳方法之一,因为它将代码与现实联系起来。通常只需通过拖放将 CircuitPython 安装在受支持的 USB 板上,然后code.py
在 CIRCUITPY 驱动器上编辑文件。代码将自动重新加载。除了文本编辑器外,无需安装任何软件(我们建议初学者使用 Mu。)
从 CircuitPython 7.0.0 开始,某些板可能只能通过蓝牙低功耗 (BLE) 进行连接。这些板使用开放协议通过 BLE 而不是 USB 提供串行和文件访问。(某些板可能同时使用 USB 和 BLE。)可以从各种应用程序(包括 code.circuitpython.org)访问 BLE 。
CircuitPython 具有统一的 Python 核心 API 和越来越多的 300 多个与之配合使用的设备库和驱动程序。这些库还可以通过Adafruit Blinka 库在具有常规 Python 的单板计算机上运行。
CircuitPython 基于MicroPython。请参阅下面 的差异。大多数(但不是全部)CircuitPython 开发由Adafruit赞助,可在他们的教育开发板上获得。请同时支持 MicroPython 和 Adafruit。
获取 CircuitPython¶
所有支持的板的官方二进制文件都可以通过circuitpython.org/downloads获得。该站点包括稳定、不稳定和连续的构建。完整的发行说明也可通过GitHub 发行版获得。
文档¶
指南和视频可通过 Adafruit 学习系统在 CircuitPython 类别下获得。阅读文档上还提供了 API 参考。可以在Awesome CircuitPython找到一系列很棒的资源。
开始时特别有用的文档:
代码搜索¶
GitHub 目前不支持在 fork 上进行代码搜索。因此,CircuitPython 没有通过 GitHub 进行代码搜索,因为它是 MicroPython 的一个分支。幸运的是,SourceGraph可以免费搜索诸如 CircuitPython 之类的公共存储库。因此,请访问sourcegraph.com/github.com/adafruit/circuitpython在线搜索 CircuitPython 代码库。
贡献¶
有关 完整指南,请参阅CONTRIBUTING.md,但请注意,为该项目做出贡献即表示您同意行为准则。 欢迎遵守 行为准则的贡献者提交拉取请求,项目管理员将及时对其进行审查。请也加入Discord。
品牌推广¶
虽然我们很高兴看到 CircuitPython 分叉和修改,但如果分叉版本不使用名称“CircuitPython”或 Blinka 徽标,我们将不胜感激。“CircuitPython”对我们和了解它的人来说意义非凡。因此,我们希望确保引用它的产品满足一组通用要求。
如果您想在您的产品中使用术语“CircuitPython”和 Blinka,我们会问:
您的产品由主要的“adafruit/circuitpython” 存储库支持。通过这种方式,我们可以在更新 CircuitPython 内部结构时更新任何自定义代码。
您的产品在www.86x.org/circuitpython/latest上列出(来源 在这里)。这是为了确保您的产品用户始终可以从标准位置下载最新版本的 CircuitPython。
您的产品有一个用户可访问的 USB 插头,插入时显示为 CIRCUITPY 驱动器和/或通过低功耗蓝牙提供文件和串行访问。不支持 USB 的电路板应明确标记为 BLE-only CircuitPython。
如果您选择不满足这些要求,那么我们会要求您将您的 CircuitPython 版本称为其他名称(例如 SuperDuperPython),并且不要使用 Blinka 徽标。如果大多数 CircuitPython 驱动程序都可以使用它,您可以说它是“CircuitPython 兼容的”。
与MicroPython 的区别MicroPython¶
电路Python:
在大多数板上支持原生 USB,否则支持 BLE,无需特殊工具即可编辑文件。
所有构建都启用了浮点数(又名小数)。
错误消息被翻译成 10 多种语言。
Python 中的并发性没有得到很好的支持。中断和线程被禁用。async/await 关键字在某些板上可用于协作多任务处理。对于需要它的任务(例如音频文件播放),使用本机模块实现了一些并发性。
行为¶
文件运行的顺序以及它们之间共享的状态。CircuitPython 的目标是明确每个文件的作用,并使每个文件相互独立。
boot.py
在 USB 初始化之前启动时只运行一次。这为在启动时配置 USB 而不是固定 USB 奠定了基础。由于串行不可用,输出被写入boot_out.txt
.code.py
(或main.py
) 在每次重新加载后运行,直到它完成或被中断。运行完成后,重新初始化虚拟机和硬件。 这意味着你不能再从code.py
REPL 中读取状态,因为 REPL 是一个新的虚拟机。CircuitPython 进行此更改的目标包括减少对正在使用的引脚和内存的混淆。主代码完成后,可以按任意键输入 REPL。
自动重载状态将在重载期间保持不变。
添加一个安全模式,在硬崩溃或掉电后不运行用户代码。这使得通过在崩溃后通过大容量存储提供代码来修复导致严重崩溃的代码成为可能。修复后需要重置(按钮)才能恢复正常模式。
RGB 状态 LED 指示 CircuitPython 状态。
Re-runs
code.py
文件系统写入 USB 大容量存储后重新运行或其他主文件。(禁用supervisor.disable_autoreload()
)当 REPL 处于活动状态时,自动重新加载被禁用。
主要是以下之一:
code.txt
,code.py
,main.py
,main.txt
启动就是其中之一:
boot.py
,boot.txt
应用程序接口¶
统一的硬件 API。记录在 ReadTheDocs上。
API 文档是 .c 文件中的 Python 存根
shared-bindings
.没有
machine
API。
模块¶
没有模块别名。(
uos
和utime
不可用作os
和time
分别。)相反os
,time
和random
是CPython的兼容。storage
管理文件系统挂载的新模块。(来自uos
MicroPython 的功能。)与 CPython 对应的模块,例如
time
,os
和random
,是 其CPython 版本的 严格子集。因此,来自 CircuitPython 的代码可以在 CPython 上运行,但不一定相反。滴答计数可用作time.monotonic()
项目结构¶
这是顶级源代码目录的概述。
核¶
MicroPython的核心代码 在包括 CircuitPython 在内的端口之间共享:
docs
Sphinx reStructuredText 格式的高级用户文档。drivers
用 Python 编写的外部设备驱动程序。examples
一些示例 Python 脚本。extmod
在多个端口的模块中使用的共享 C 代码。lib
共享核心 C 代码,包括外部开发的库,如 FATFS。logo
CircuitPython 徽标。mpy-cross
在 MicroPython 中运行之前将 Python 文件转换为字节码的交叉编译器。用于减小库大小。py
核心 Python 实现,包括编译器、运行时和核心库。shared-bindings
Python 模块的共享定义、它们的文档和支持的 C API。端口必须实现 C API 以支持相应的模块。shared-module
Python 模块的共享实现可能基于common-hal
.tests
测试框架和测试脚本。tools
各种工具,包括 pyboard.py 模块。
端口¶
端口包括微控制器产品线独有的代码。
Supported |
Support status |
---|---|
atmel-samd |
|
cxd56 |
stable |
espressif |
stable |
litex |
alpha |
mimxrt10xx |
alpha |
nrf |
stable |
raspberrypi |
stable |
stm |
|
unix |
alpha |
stable
极不可能有错误或缺少功能。beta
正在积极改进,但可能缺少功能并存在错误。alpha
将有错误和缺失的功能。
完整目录¶
- 核心模块
- 模块
_bleio
– 低功耗蓝牙 (BLE) 通信_eve
– 低级 BridgeTek EVE 绑定_pew
– LED 矩阵驱动器_stage
– 舞台上精灵动画的 C 级助手_typing
– C 级协议的类型adafruit_bus_device
– 硬件加速外部总线访问adafruit_pixelbuf
– 一个快速的 RGB(W) 像素缓冲库,用于 NeoPixel 和 DotStaraesio
– AES 加密例程alarm
– 闹钟和睡眠analogio
– 模拟硬件支持atexit
– Atexit 模块audiobusio
–支持数字总线上的音频输入和输出audiocore
– 支持音频样本audioio
– 支持音频输出audiomixer
– 支持音频混合audiomp3
– 支持 MP3 压缩的音频文件audiopwmio
– 通过数字 PWM 音频输出bitbangio
– 由 CPU 实现的数字协议bitmaptools
– 位图操作工具的集合bitops
– 二进制数据的低级操作例程board
– 板特定的引脚名称busio
– 硬件加速外部总线访问camera
– 支持相机输入canio
– CAN 总线访问countio
– 支持边缘计数digitalio
– 基本数字引脚支持displayio
– 用于驱动显示器的本地助手dualbank
– DUALBANK 模块espidf
fontio
– 核心字体相关数据结构framebufferio
– 原生帧缓冲显示驱动frequencyio
– 支持基于频率的协议gamepadshift
– 按下通过移位寄存器读取的轨道按钮。getpass
– Getpass 模块gnss
– 全球导航卫星系统i2cperipheral
– 两线串行协议外设imagecapture
– 支持“并行捕获”接口ipaddress
keypad
– 支持扫描密钥和密钥矩阵math
– 数学函数memorymonitor
– 内存监控助手microcontroller
– 引脚参考和 CPU 功能msgpack
– msgpack 格式的打包对象multiterminal
– 管理额外的终端资源neopixel_write
– 低级新像素实现nvm
– 非易失性存储器onewireio
– Maxim(原Dallas Semi)单线协议的低级位原语。os
– 操作系统通常提供的功能paralleldisplay
– 用于驱动并行显示的本机助手ps2io
– 支持 PS/2 协议pulseio
– 支持基于单个脉冲的协议pwmio
– 支持基于 PWM 的协议qrio
rainbowio
random
– 伪随机数和选择rgbmatrix
– bitbanged LED 矩阵的低级例程rotaryio
– 支持读取旋转传感器rp2pio
– RP2 系列可编程 IO (PIO) 外设的硬件接口。rtc
– 实时时钟samd
– SAMD 实现设置sdcardio
– 通过 SPI 总线连接到 SD 卡sdioio
– 通过 SDIO 总线连接到 SD 卡sharpdisplay
– 支持 Sharp Memory Display 帧缓冲区socketpool
ssl
storage
– 存储管理struct
– 操纵 c 风格的数据supervisor
– 主管设置synthio
– 支持 MIDI 合成terminalio
– 在 TileGrid 中显示文本time
– 时间和定时相关功能touchio
– 触摸相关 IOtraceback
– 追溯模块uheap
– 堆大小分析ulab
– 操作类似于 numpy 的数字数据usb_cdc
– USB CDC 串行流usb_hid
– USB 人机接口设备usb_midi
– 通过 USB 的 MIDIustack
– 堆栈信息和分析vectorio
– 用于显示器的轻量级 2D 形状watchdog
– 看门狗定时器wifi
help()
– 提供有用信息的内置方法
- 模块
- 支持的端口
- 故障排除
- GitHub 上的其他 CircuitPython 库和驱动程序