K210循迹代码
时间: 2023-07-02 16:11:34 浏览: 655
以下是K210循迹代码的示例:
```python
import sensor, image, time
from board import board_info
from fpioa_manager import fm
from pyb import UART
# 初始化串口
fm.register(board_info.PIN15, fm.fpioa.UART2_TX)
fm.register(board_info.PIN17, fm.fpioa.UART2_RX)
uart = UART(UART.UART2, 115200,8,0,0,timeout=1000, read_buf_len=4096)
# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(True)
sensor.set_hmirror(True)
sensor.run(1)
# 循迹函数
def track():
img = sensor.snapshot().lens_corr(1.8) # 拍摄并校正畸变
blobs = img.find_blobs([(0, 0, 0), (50, 50, 50)], pixels_threshold=200, area_threshold=200, merge=True)
if blobs:
max_blob = max(blobs, key=lambda b: b.pixels())
img.draw_rectangle(max_blob.rect())
img.draw_cross(max_blob.cx(), max_blob.cy())
# 将循迹结果发送给串口
if max_blob.cx() < 150:
uart.write('L'.encode())
elif max_blob.cx() > 190:
uart.write('R'.encode())
else:
uart.write('F'.encode())
while True:
track()
```
这段代码中,首先通过 `fm` 和 `UART` 初始化串口,然后初始化摄像头并设置参数。接着定义了一个 `track()` 函数,用于循迹。在该函数中,首先通过 `sensor.snapshot().lens_corr(1.8)` 拍摄并校正畸变,然后通过 `img.find_blobs()` 找到黑色线条的位置并画出矩形和十字线,最后根据线条位置判断小车应该向左、右还是直行,并将结果发送给串口。最后,在主循环中不断调用 `track()` 函数进行循迹。
阅读全文