本帖最后由 不爱胡萝卜的仓鼠 于 2024-9-29 00:54 编辑
上一篇我们尝试在线运行了一个demo,但是在实际应用场景中,代码都是离线运行的,今天我们就要来尝试让代码离线运行。
由于脱离电脑,就没有办法通过USB数据线把摄像头的图像上传给电脑,我手上也没有屏幕,最终我选择最基础的点灯,通过运行点灯程序,就可以很直观的看到代码是否有离线运行成功
一.点灯
点灯的本质就是控制GPIO的高低电平输出,那么先来看看原理图,LED灯连接到K230的那个GPIO上
通过原理图可以看到,使用的是GPIO52
点灯的写法很多,可以参照一下01studio的文档:https://wiki.01studio.cc/docs/canmv_k230/basic_examples/led。
官方也提供了文档,关于点灯会可以用到以下2个文档:
1.pin模块:https://developer.canaan-creative.com/k230_canmv/main/zh/api/machine/K230_CanMV_Pin%E6%A8%A1%E5%9D%97API%E6%89%8B%E5%86%8C.html
2.FPIOA模块:https://developer.canaan-creative.com/k230_canmv/main/zh/api/machine/K230_CanMV_FPIOA%E6%A8%A1%E5%9D%97API%E6%89%8B%E5%86%8C.html
其中FPIOA模块是用于指定这个引脚的功能,一个屋里引脚可以有多个功能,这个在单片机中很常见,他就可以对这个引脚的功能进行配置。而pin模块就是真正对GPIO进行控制使用的
事实上不用FPIOA模块也可以实现点灯,直接使用pin模块就可以。代码如下,以下代码实现了闪灯效果,间隔1s
from machine import Pin
import time
#初始化52号引脚为输出模式,不拉高,驱动能力为默认的7
LED = Pin(52, Pin.OUT, pull=Pin.PULL_NONE, drive=7)
while True:
#开灯
LED.value(1)
time.sleep(1)
#关灯
LED.value(0)
time.sleep(1)
效果如下
IMG_6598
二.离线运行代码
LED灯闪烁的代码已经准备好了,接下来就可以让代码离线运行了。操作非常简单,只需要把代码的py文件保存到SD卡中即可。
K230在USB连接后,直接可以在电脑上看到对应的盘符,名字叫CanMV,就可以直接保存文件了
在CanMV中,有2个盘,一个是data,一个是sdcard
回头我们的代码就要放到sdcard中,现在的sdcard中文件如下
上电默认运行的文件规则如下:
1.手动保存
那么只需要放一个名字叫boot.py的文件或者main.py就可以了,先试着放一个boot.py,里面内容就是我们刚才的代码
断电后,再上电,代码成功运行
IMG_6600
2.IDE自动保存
手动复制文件很麻烦,IDE中还提供了一键保存的方案。不过这个方法有一点需要注意,就是他是以main.py的名称保存的,那么按照刚才我们说的boot和mian的规则,你的sdcard路径下不能有boot.py,或者boot.py运行后main.py要能运行(也就是不能有while1循环阻塞,boot文件要有结束)。否则你下载进去的代码就没机会被执行了
为了回头能区别出来两次保存的文件,我就把时间从1s改成了0.5s
操作方法很简单,如下所示
这个点击是或否都行,我选择了否,不然注释就没了
保存成功
sdcard路径下就有main.py了
现在我们不删除boot,让两个文件都在,看看是不是和之前说的一样,如果一样的话,这次上电就会一直运行boot,1s一次闪灯。
效果如下,确实还是1s间隔,和我们的预期一样
IMG_6601
然后我们把boot删除
此时再重新上电就会运行main了,会看到0.5s间隔的闪灯,效果如下,和我们的预期一致
IMG_6602