学习资料来自Get started with MicroPython on Raspberry Pi Pico

此前我们一直是将树莓派Pico连接到电脑上的。但树莓派具有自主的处理能力、内存等用于独立工作的一切。

文件系统

存储我们所写程序的文件系统与我们电脑上的硬盘(或固态硬盘)是等价的,因此,即便我们把它从数据线上拔下来也可以把文件存储到位。

打开Thonny,在终端(shell)区输入

1
file = open("test.txt", "w")

这样,我们就打开了test.txt并写入——w即代表写入,输入这行代码后什么也不会显示,因为我们什么也没做呢。接着,写入:

1
file.write("File,你好!")

按下回车后,我们可以看见16——也就是确认我们输入了16个字节到我们打开的文件(注意,一个汉字(或中文标点)占3个字节)。

写入后,我们需要将他关闭——以确认数据确实被写入到文件系统中了。

1
file.close()

这使,我们就可以打开了。当然,也可以输入

1
file = open("test.txt")

可以看到,这时,我们并没有输入w,因为我们应该是要读取文件,因此,我们可以用r代替。但MicroPython用只读模式默认打开一个文件,所以也就不用指明r

接着

1
file.read()

如图:

当然,别忘了关闭文件

1
file.close()

记录温度

再打开一个文件,输入

1
2
3
4
5
6
7
8
import machine
import utime

sensor_temp = machine.ADC(4)

conversion_factor = 3.3 / (65535)
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721

接着,输入:

1
file = open("temps.txt", "w")

如果该文件不存在,那么将创建一个,如果存在,那么文件将被覆写。

注意!

覆写一个文件将清除其所有内容。

接着,输入

1
file.write(str(temperature))

当然,别忘了关闭文件。

1
file.close()

正如我们刚刚提到的,覆写文件会清除其原有的所有内容,因此文件中只有一个数字。

为了实现不断计数,我们需要加入循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import machine
import utime

sensor_temp = machine.ADC(4)

conversion_factor = 3.3 / (65535)
file = open("temps.txt", "w")

while True:
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
file.write(str(temperature) + "\n")
file.flush()
utime.sleep(10)

flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

——菜鸟教程

Pico的文件系统无论是否连接到电脑都能工作,因此,我们只需要有Micro USB的充电线就可以在任何空间工作。但是我们需要找到一种不需要点击运行图标的方法来运行程序。

这时,我们就需要将文件使用特定的名称main.py存储,这样的话,Pico在充电或是重启时就会自动运行该文件。

另存为后,什么也不会发生。因为Thonny自动将其设置为inactive模式。为了强制程序运行,点击Shell区域,按住CTRL键,再按下(再放开)D,接着放开CTRL键。

等一会儿,按下停止键,再打开temps.txt,我们就能看到一系列的温度数值,尽管我们没有按运行键。

接着,找一个micro USB充电器,再过一会儿,将Pico插回电脑,再读取文件,当看到一行行温度时,就证明我们成功了。