为什么这串代码中总是显示ImportError: no module named 'servo'呢?该如何修改?

代码如下:我复制的官网三子棋机器人的,为什么还会报错?

robot.py

import time
from servo import Servos
from machine import SoftI2C, Pin
import math

# 控制继电器,继电器控制电磁铁
pin1 = Pin('P1', Pin.OUT_PP, Pin.PULL_NONE)
pin1.value(0)

# PCA9685 舵机扩展板
i2c = SoftI2C(sda=Pin('P5'), scl=Pin('P4'))
servo = Servos(i2c, address=0x40, freq=50, min_us=650, max_us=2800, degrees=180)

# 三个舵机的初始位置
servo.position(0, 0)
servo.position(1, 90)
servo.position(2, 90)

#全局变量,用于缓慢移动
servo_positions = [0,90,90]


# 控制一个舵机移动
def move(index, angle):
    servo.position(index, angle)
    servo_positions[index] = angle


# 控制三个舵机移动
def move_list(angle_list):
    print(angle_list)
    move(0, int(angle_list[0]))
    move(1, int(angle_list[1]))
    move(2, int(angle_list[2]))


# 控制三个舵机慢速移动
def slow_move_to(angle_list):

    init_positions = servo_positions.copy()

    d0 = angle_list[0] - init_positions[0]
    d1 = angle_list[1] - init_positions[1]
    d2 = angle_list[2] - init_positions[2]

    dm = int(max(abs(d0), abs(d1), abs(d2)))
    if dm == 0:
        return

    for i in range(dm+1):
        move_list([init_positions[0]+i*d0/dm,
        init_positions[1]+i*d1/dm,
        init_positions[2]+i*d2/dm])

        time.sleep_ms(40)


# 设置棋子拾取区的位置
PICK = [[74,128,19], [82,128,17], [90,125,14], [98,128,17], [106,128,19]]
# 拾取区机械臂提起来的位置
HIGH_PICK = [90,95,55]

# 棋盘的放置位置
BOARD = [
    [[82,150,55], [82,140,40], [81,133,30]],
    [[90,150,55], [90,140,40], [90,133,30]],
    [[98,150,55], [98,140,40], [99,133,30]]
]

# 棋盘落子上方的位置
HIGH_BOARD = [90,120,70]


# 拾取棋子,并放置到 x,y
def pick_and_place(x,y):

    slow_move_to(HIGH_PICK)
    time.sleep_ms(500)

    slow_move_to(PICK[2])
    time.sleep_ms(500)

    slow_move_to(HIGH_PICK)
    time.sleep_ms(500)

    slow_move_to(HIGH_BOARD)
    time.sleep_ms(500)

    slow_move_to(BOARD[y][x])
    time.sleep_ms(500)
    pin1.value(1) # 继电器打开
    time.sleep_ms(500)

    slow_move_to(HIGH_PICK)
    pin1.value(0) # 继电器关闭
    time.sleep_ms(500)

    slow_move_to([0,90,90])


if __name__ == "__main__":
# 校准测试用

    time.sleep_ms(1)

    for order in [
        BOARD[1][1], BOARD[0][0], BOARD[1][0],
        BOARD[2][0], BOARD[2][1], BOARD[2][2],
        BOARD[1][2], BOARD[0][2], BOARD[0][1],
    ]:
        slow_move_to(HIGH_BOARD)
        time.sleep_ms(500)
        slow_move_to(order)
        time.sleep_ms(500)

    #slow_move_to(BOARD[0][2])


    #for x in PICK:
        #slow_move_to(HIGH_PICK)
        #time.sleep_ms(500)
        #slow_move_to(x)
        #time.sleep_ms(500)

    slow_move_to([0,90,90])

Did you put the servo.py file on your flash drive? There’s no servo module in the firmware. So, you have to include the library for it somewhere.

那我该怎么弄?再去安装servo吗?应该在哪里安装?openmv里本身没有servo吗?我看视频教程也是直接可以复制代码驱动舵机的呀?

You have to put the servo.py file on the camera drive. Whatever tutorial you were following should have illustrated this.

麻烦问一下,那个servo.py我找了很久都没能找到,那个星瞳openmv的u盘里的github网址我打开了那个资源库,可是也没能找见servo.py,

这张图是u盘中github里的openmv资料库,可是并没有servo.py

然后官网上的三子棋机器人里给出的代码又会用到servo库,否则代码运行一直显示错误我在github直接搜索又搜不到servo.py,请问这种情况我该怎么办,请帮帮我!谢谢您!

Hi, servo.py isn’t our code. I can’t provide you help support for that. You need to ask the folks who made the example where to find that file.