资源简介
openmv控制舵机
代码片段和文件信息
import sensor image time
from pid import PID
from pyb import ServoUARTPin
import pyb
uart = UART(3 115200) # TX:P4 RX:P5 (板子线反接)
pan_servo=Servo(1) # P7
distance_servo=Servo(2) # P8
key_servo = Servo(3) # P9 -40:开 40:关
shot_flagpin = Pin(‘P1‘ Pin.OUT_PP) # 设置shot_flagpin为输出引脚
shot_flagpin.low() # 拉高发射控制电平 高电平:发射 低电平:不发射
mode_Highpin = Pin(‘P2‘ Pin.IN Pin.PULL_UP)# 设置flag_Highpin为输入引脚,并开启上拉电阻
mode_Lowpin = Pin(‘P3‘ Pin.IN Pin.PULL_UP)# 设置flag_Lowpin为输入引脚,并开启上拉电阻
distance_dict = {‘15‘:212‘16‘:214‘17‘:229‘18‘:232‘19‘:234‘20‘:242‘21‘:248‘22‘:252‘23‘:260‘24‘:272‘25‘:273‘26‘:270‘27‘:264‘28‘:274‘29‘:296‘30‘:283‘31‘:300}
mode_flag = 0 # 0:等待模式 1:手动模式 2:自动模式 3:摆头模式
uart_flag = False # True:串口接收完成 False: 串口等待接收
shot_flag = False # True:发射炮弹 False: 不发射炮弹
distance_finish = False # True: 调整完成 False:未调整完成
pan_finish = False # True: 调整完成 False:未调整完成
distance_rejustvalue = 0 # 调试上传调整距离,解决阈值变化问题
# 数据包起始标志位
START = b‘(‘
STOP = b‘)‘
mid_Xangel = 30 #X 舵机给定初始转向 30
mid_Yangel = 15#Y 舵机给定初始转向 15
X_range = list(range((mid_Xangel-30)(mid_Xangel+30))) # 模式三的旋转范围
X_i = 0 # 旋转计数
Aim_threshold = (27 58 46 74 3 59)# (34 61 25 66 -11 47)
red_threshold = (13 49 18 61 6 47)
pixels_threshold = 60
K= 4700 #the value should be measured
#pan_pid = PID(p=0.07 i=0 imax=90) #脱机运行或者禁用图像传输,使用这个PID
#distance_pid = PID(p=0.05 i=0 imax=90) #脱机运行或者禁用图像传输,使用这个PID
pan_pid = PID(p=0.1 i=0 imax=90)#在线调试使用这个PID
distance_pid = PID(p=0.1 i=0 imax=90)#在线调试使用这个PID
sensor.reset()# Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # use RGB565.
sensor.set_framesize(sensor.QVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) # turn this off.
clock = time.clock() # Tracks FPS.
# 模式读取
def mode_read():
High = mode_Highpin.value()
Low = mode_Lowpin.value()
modevalue = High * 2 + Low * 1
return modevalue
# 找最大标志点
def find_max(blobs):
max_size=0
for blob in blobs:
if blob[2]*blob[3] > max_size:
max_blob=blob
max_size = blob[2]*blob[3]
return max_blob
# 距离角度转换 distabce = angle * -2.1786 + 400.96
def distance_turn2angel(distance):
angel = int((distance + distance_rejustvalue - 139.316)/5) # 乘以一个系数
return angel
# 发射开关
def is_shot(is_fire):
# -40 guang 40 kai
if is_fire:
key_servo.angle(10)
else:
key_servo.angle(55)
# 转角限幅
def turn_max():
pass
# 初始化
pan_servo.angle(mid_Xangel)# 摆正水平舵机
distance_servo.angle(mid_Yangel) # 摆正竖直舵机
is_shot(False)
while(True):
clock.tick() # Track elapsed milliseconds between snapshots().
mode_flag = mode_read() # 获取运行模式
if mode_flag == 0:
# mode_flag = 0
pan_servo.angle(mid_Xangel)# 摆正水平舵机
distance_servo.angle(mid_Yangel) # 摆正竖直舵机
is_shot(False)
uart_flag = False
shot_flag = False #
相关资源
-
AES加解密(AESEncryptsc
ript.py) - 人脸检测和识别(opencv3+python)
- python检测图片是否有人脸
- jd抢茅台(基于selenium.webdriver)
- Python 3 Web Development. Beginners Guide
- 模拟自动滑块验证码.py(基于chromed
- python语言实现的基于opencv的表针识别
- tensorflow2.0 yolo3目标检测算法
- OpenCV入门教程+OpenCV官方教程中文版
- 计算机科学导论-python.pdf
- wxPython Application Development Cookbook
-
python 3 ob
ject-oriented programming 3rd 20 - opencv+Python的教程大全
- 12306火车班次.zip
- Python-gzipencoding如何压缩HTTP请求发送到
- tensorflow制作自己的灰度图像数据集并
- selenium中python包&对应版本的firefox
- Python网络编程 3版 高清扫描版 完整中
- openmv一次性识别红黄蓝三种颜色
- 电影推荐系统171901
- 工程训练大赛openmv二维码、色环、色
- OpenMV交通灯识别例程
- Data Science from Scratch First Principles wit
- opencv手势识别
- selenium最新版2.53.1---python
- 测试工程师相关学习视频(包含pyth
- ciscoIOUKeygen.py
- mysqlclient-1.3.13-cp36-cp36m-win32.whl
- 单重态Majoron模型中的两场宇宙相变和
- Python+OpenCv项目代码
评论
共有 条评论