IO 状态读取与外设控制
AGVPlus 底盘主板提供了一组针对外设的 IO 接口,您可以利用这些接口读取输入信号,或输出高低电平信号控制外部继电器以及底盘风扇。
1 接口说明
控制 IO 和外设主要涉及以下三个接口:
get_pin_input(pin): 读取主板上的输入引脚状态。pin范围为1-6。返回值为0(低电平,硬件默认),1(高电平),读取失败或无此引脚返回-1。set_pin_output(pin, state=0): 控制主板上输出引脚的电平。pin范围为1-6。state传入0为低电平(默认),1为高电平。set_fan_state(state=1): 设置底盘散热风扇的开关。state传入0为关闭,1为开启(硬件默认值为开启)。
2 简单演示
创建一个新的 Python 文件 io_test.py,并输入以下代码:
from pymycobot.myagvplus import MyAGVPlus
import time
# 初始化 MyAGVPlus 对象
agv = MyAGVPlus('/dev/myagvplus_controller', baudrate=921600, esp32_port='/dev/ttyACM0', esp32_baud=115200, debug=True)
# IO 与外设由底层主板直接控制,测试时需开启底盘电源(注意:这也将使能电机)
agv.power_on()
print("--- 开始风扇与外设输出测试 ---")
print("关闭风扇 3 秒...")
agv.set_fan_state(0)
time.sleep(3)
print("重新开启风扇...")
agv.set_fan_state(1)
time.sleep(1)
print("设置 1 号输出引脚为高电平(1)...")
agv.set_pin_output(1, 1)
time.sleep(2)
print("恢复 1 号输出引脚为低电平(0)...")
agv.set_pin_output(1, 0)
time.sleep(1)
print("\n--- 开始输入引脚测试 ---")
# 测试读取 2 号引脚的输入状态
pin2_state = agv.get_pin_input(2)
print(f"当前 2 号引脚的输入状态: {pin2_state}")
# 运行完毕,安全关闭机器人电源并禁用电机
agv.power_off()
3 运行示例文件
在终端中输入以下命令运行代码:
python3 io_test.py
执行后,您可以明显听见底盘风扇关闭和重新开启的声音变化,同时终端会打印出对应引脚的实时读取状态。