用户灯

例程讲解

该例程在 例程的xxx ,可以在 CanMV IDE 中打开

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import time
from maix import GPIO
from fpioa_manager import fm
from board import board_info

fm.register(board_info.USER_LED, fm.fpioa.GPIOHS1, force=True)
led = GPIO(GPIO.GPIOHS1, GPIO.OUT)

status = 0
for i in range(0, 20):
    led.value(status)
    time.sleep_ms(300)
    status = 0 if (status == 1) else 1

fm.unregister(board_info.USER_LED)

实验准备

  1. 野火K210 AI视觉相机 连接到 CanMV IDE

  2. 执行程序

运行结果

1.运行之后, 野火K210 AI视觉相机 背面的绿色led灯每隔300ms会切换亮灭状态

野火logo

程序分析

1
2
3
4
import time
from maix import GPIO
from fpioa_manager import fm
from board import board_info
  • import time : 导入Python的时间模块,用于实现延时功能。

  • from maix import GPIO : 从maix模块导入GPIO类,用于控制通用输入输出。

  • from fpioa_manager import fm : 导入fpioa_manager模块中的fm对象,用于管理管脚映射。

  • from board import board_info : 从board模块导入board_info对象,其中包含了开发板的相关信息。

1
2
fm.register(board_info.USER_LED, fm.fpioa.GPIOHS1, force=True)
led = GPIO(GPIO.GPIOHS1, GPIO.OUT)
  • fm.register(board_info.USER_LED, fm.fpioa.GPIOHS1, force=True) : 将用户LED灯对应的管脚映射到GPIOHS1(高速度GPIO)。

  • led = GPIO(GPIO.GPIOHS1, GPIO.OUT) : 初始化GPIOHS1管脚作为输出,并创建一个名为led的GPIO对象。

1
2
3
4
5
status = 0
for i in range(0, 20):
    led.value(status)
    time.sleep_ms(300)
    status = 0 if (status == 1) else 1
  • status = 0 : 初始化LED状态为关闭。

  • for i in range(0, 20): : 开始一个循环,循环20次。

  • led.value(status) : 将LED的状态设置为status变量指示的状态。

  • time.sleep_ms(300) : 让程序暂停300毫秒,使LED保持当前状态一段时间。

  • status = 0 if (status == 1) else 1 : 更新status变量,如果当前LED是亮的(status为1),则将其设置为0(灭),反之亦然。

1
fm.unregister(board_info.USER_LED)
  • fm.unregister(board_info.USER_LED) : 循环结束后,注销用户LED的管脚映射,释放资源。