Circuit Python 官方指南翻译Part 6
注意内容重要内容
创建和编辑你的代码
Circuit Python 最大的优点之一是启动和运行代码非常简单。本节介绍如何创建和编辑你的第一个 Circuit Python 程序。
要创建和编辑代码,只需要一个代码编辑器,而代码编辑器有很多很多选择。Adafruit 强烈推荐使用 Mu,它专为 Circuit Python 设计,非常简单易用,并带有内置的串口控制台。
如果你不能或不想使用 Mu,还有许多其他编辑器也同样可以使用。编辑器推荐页面(https://learn.adafruit.com/welcome-to-circuitpython/recommended-editors)提供了更多详细信息。如果你没有使用 Mu,请在写入文件后执行 Windows 上的 "Eject" 或 "Safe Remove",或在 Linux 上执行 "sync"等指令。(在 MacOS 上不会出现这个问题。)
创建代码

安装 Circuit Python 会在CIRCUITPY U盘上生成一个 code.py 文件。如果要开始写自己的代码,需要打开代码编辑器,从 CIRCUITPY U盘加载 code.py 文件。
如果你正在使用 Mu,点击按钮栏中的 "Load" 按钮,导航到 CIRCUITPY U盘,并选择 code.py进行加载就可以了。
将以下代码复制并粘贴到编辑器中:
//******************分割线******************//
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
//******************分割线******************//
KB2040、QT Py 和 Trinkeys 没有板载的红色 LED,它们有一个 WS2812 LED。上述示例在 KB2040、QT Py 或 Trinkeys 开发板上将无法运行!
如果你正在使用 KB2040、QT Py 或 Trinkey,请下载 WS2812示例。(https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Welcome_to_CircuitPython/code.py)
//******************分割线******************//
Blink example for boards with ONLY a NeoPixel LED (e.g. without a built-in red LED).
Includes QT Py and various Trinkeys.
Requires two libraries from the Adafruit CircuitPython Library Bundle.
Download the bundle from circuitpython.org/libraries and copy the
following files to your CIRCUITPY/lib folder:
* neopixel.mpy
* adafruit_pixelbuf.mpy
Once the libraries are copied, save this file as code.py to your CIRCUITPY
drive to run it.
"""
import time
import board
import neopixel
pixels = neopixel.NeoPixel(board.NEOPIXEL, 1)
while True:
pixels.fill((255, 0, 0))
time.sleep(0.5)
pixels.fill((0, 0, 0))
time.sleep(0.5)
//******************分割线******************//
WS2812 闪烁示例使用内置的WS2812,但时间代码是相同的。可以使用链接内的WS2812 闪烁示例来继续学习本指南。(就上面那一大串,不用再点开网站了,都复制过来了)

代码复制进去以后效果如图所示。要注意在 "while True:" 行下面,接下来的四行以四个空格开头,且缩进的量完全相同。在此之前的所有行都没有前面的空格缩进。

将 code.py 文件保存到 CIRCUITPY U盘上。
板载 LED 现在应该在每半秒钟闪烁一次。
恭喜,你刚刚运行了你的第一个 Circuit Python 程序!
在大多数开发板上,都板载了微小的红色 LED,在 ItsyBitsy nRF52840 开发板上,板载了一个微小的蓝色 LED,而在 QT Py M0、QT Py RP2040 和 Trinkey 系列开发板上,只会找到一个 WS2812 LED。
编辑代码

要编辑代码,需要在编辑器中打开 CIRCUITPY U盘上的 code.py 文件。对代码进行所需的更改然后保存文件。就这么简单!只要文件保存完毕,代码更改就会生效。
在继续之前,有一个警告...
不要在保存文件和更改代码的时候点击复位按钮或拔下开发板!
开发板上的 Circuit Python 固件会检测到文件发生更改或写入,并自动重新启动代码。如果在计算机将文件写入开发板之前拔下或复位开发板,可能会损坏驱动器。如果发生这种情况,可能会丢失已经写好的代码,因此定期备份代码备份非常重要。
有几种避免文件系统损坏的方法。
1. 使用在保存文件时完全写出文件的编辑器。查看推荐编辑器页面(https://learn.adafruit.com/welcome-to-circuitpython/recommended-editors)了解不同的编辑选项的详细信息。
如果将文件从主机计算机拖放到 CIRCUITPY U盘上,仍然需要执行第二步,即在保存完文件后执行 "Eject" 或 "Sync"(下一步)以确保文件完全写入。
2. 写入后弹出或同步驱动器
如果使用的是我们不推荐的编辑器,仍然有办法让它工作。
在 Windows 上,可以弹出或安全移除 CIRCUITPY U盘。它实际上不会弹出(物理),但它会强制操作系统将文件保存到磁盘。在 Linux 上,可以在终端中使用 sync 命令强制写入磁盘。
如果使用 Windows 资源管理器或 Linux 图形文件管理器将文件拖放到 CIRCUITPY 上,也需要执行此操作。
哦,不,我做错了什么,现在 CIRCUITPY U盘不显示了!!!
不要担心!破坏驱动器并不是世界末日(也不会是开发板的末日!)。如果发生这种情况,请按照每个开发板指南上的故障排除页面上的步骤来重新启动你的开发板。
(https://learn.adafruit.com/welcome-to-circuitpython/troubleshooting)
回到代码编辑...
现在!让我们尝试编辑你添加到开发板上的程序。在编辑器中打开 code.py 文件并进行一个简单的更改。将第一个 0.5 更改为 0.1。代码应该如下所示:
//******************分割线******************//
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.1)
led.value = False
time.sleep(0.5)
//******************分割线******************//
其余的代码保持不变,保存文件。看看板载LED 会发生什么变化?有些东西发生了变化!知道为什么吗?
不必止步于此!让我们继续前进。将第二个 0.5 更改为 0.1,使其如下所示:
//******************分割线******************//
while True:
led.value = True
time.sleep(0.1)
led.value = False
time.sleep(0.1)
//******************分割线******************//
现在它闪烁得非常快!
现在尝试将这两个 0.1 都改为 1。由于增加了 LED 保持亮和灭的时间,LED 闪烁速度会慢得多。
做得好!做得很棒!现在你已经准备好开始尝试新的示例并对其进行编辑,看看会发生什么!这些只是简单的更改,但是不积跬步无以至千里。进行所需的更改,保存它,然后查看结果。实际上,就是这么简单so easy!
程序文件的命名
Circuit Python 在开发板上寻找一个要运行的代码文件有四个文件选项:code.txt、code.py、main.txt 和 main.py。Circuit Python 按照这个顺序寻找这些文件,然后运行它找到的第一个文件。尽管 code.py 是建议的代码文件名,但重要的是要知道还有其他选项存在。如果你写的程序似乎在工作时没有更新,请确保没有创建另一个同名但无用的代码文件。