OpenART mini 控制舵机
OpenART mini 控制舵机
- 基本介绍
- 舵机的分类
- 代码呈现(PWM控制)
- PWM.py
- 单个舵机代码
- 运行结果:
- 整合代码:
- 运行结果:
- 两个舵机
- 代码
- 项目效果呈现
基本介绍
最近在做智能车,用的语言是python,做识别动物水果数字等,最基本的需要舵机来控制摄像头的移动镜头,这个就写一下 用OpenART mini 控制舵机 的代码 记录一下。
资料:OpenART mini 百度网盘 提取码:mxx8
在使用OPENART MINI的 GPIO LED PWM UART的时候,请务必将“SD卡必备文件”文件夹中的内容放置到sd卡根目录中。
舵机的分类
大致分为以下三种吧 只是我现在用过就三种 。
180° 有限位 (不上电 只能转180度 真正转也就是180° )
180° 无限位 (不上电 能转360° 但是真正转也就是180°)
360° 无限位 (这个就是上电不上电都能转360°以上)
我这里用的是 180° 无限位的舵机
首先看看一下图片:
代码呈现(PWM控制)
PWM.py
这个是逐飞给的demo代码。
import pyb
from machine import PWM # 导入PWMpwm1=PWM(2,1,100,50) # 初始化pwm 使用pwm2 通道1 频率100hz 占空比数值设置为50(设置范围是0-255) PWM通过C6输出
pwm1.freq(2000) # 修改频率为2khz
pwm2=PWM(2,2,2000,100) # 使用pwm2通道2与使用pwm2通道1使用的是同一个定时器,因此两个通道频率必须一致,占空比可以不同 PWM通过C7输出pwm3=PWM(2,3,3000,150) # 初始化pwm 使用pwm2 通道3 频率3khz 占空比数值设置为150(设置范围是0-255) PWM通过C8输出
pwm4=PWM(2,4,3000,200) # 使用pwm2通道3与使用pwm2通道4使用的是同一个定时器,因此两个通道频率必须一致,占空比可以不同 PWM通过C9输出n = 255
while(n>0):pwm1.duty(n) # 修改占空比 占空比设置范围0-255pwm2.duty(n) # 修改占空比 占空比设置范围0-255pwm3.duty(n)pwm4.duty(n)n = n-1 # 重新计算占空比 下次设置pyb.mdelay(2) # 延时2mspwm1.deinit() # PWM2通道1反初始化
pwm2.deinit()
pwm3.deinit()
pwm4.deinit()
每个pwm是控制一个舵机的,我这里用的是2两个舵机 所以有两个可以不要,你们不知道分别是哪个舵机可以单个调试。
单个舵机代码
在这里我们 我们来看看pwm 从 1 到 255 看舵机 的转动状态是怎么样的 再整合代码。
##导入模块
import pyb
from machine import PWM # 导入PWM
import time## 初始化引脚 我这里控制单个舵机是 pwm4
##频率:400 占空比:100
pwm4=PWM(2,4,400,100) # 通道4 400频率 100占空比#定义一个变量 从1 到 255 观察 舵机转动状态
n = 1#直接死循环
while True:while(n < 255): #如果n 小于 255 不断的循环pwm4.duty(n) #转动舵机n = n + 1 #加 1print(n) #打印 n 的值time.sleep(200) #防止转动太快 加个延时 好看出现象## 反方向 转回去while(n > 0):pwm4.duty(n) #转动舵机n = n - 1 #减 1print(n) #打印 n 的值time.sleep(200) #防止转动太快 加个延时 好看出现象
运行结果:
总结现象: 我这里的现象: 分为:左、正视前方、右
通过打印值 我这里发现
正视前方:155
左:255
右:1
整合代码:
我们把现象整合代码 变成一个个的函数,方便阅读 和 管理。
## 回正
def initPwm4(n):if n < 155:while(n<155):pwm4.duty(n) n = n + 1print("n = %d" % n)time.sleep(3)else:while(n>155):pwm4.duty(n) n = n - 1print("n = %d" % n)time.sleep(3)print('方向回正')return n## 往右
def Pwm4_right(n): while(n>1):pwm4.duty(n) n = n - 1print("n = %d" % n)time.sleep(3)print('方向往右')return n## 往左
def Pwm4_left(n):while(n<255):pwm4.duty(n) n = n + 1print("n = %d" % n)time.sleep(3)print('方向往左')return n
import pyb
from machine import PWM # 导入PWM
import timepwm4=PWM(2,4,400,100) # 通道4 400频率 100占空比n = 150initPwm4(n) #初始化 回正
time.sleep(2000)print('n初始化值: %d' % n)
while True: n = Pwm4_right(n) #往右time.sleep(1000)n = initPwm4(n) #回正time.sleep(1000)n = Pwm4_left(n) #往左time.sleep(1000)n = initPwm4(n) #回正time.sleep(1000)
运行结果:
两个舵机
代码
import pyb
from machine import PWM # 导入PWM
import timepwm3=PWM(2,3,400,100) # 初始化pwm 使用pwm2 通道3 频率3khz 占空比数值设置为101(设置范围是0-255) PWM通过C8输出
pwm4=PWM(2,4,400,100) # 使用pwm2通道3与使用pwm2通道4使用的是同一个定时器,因此两个通道频率必须一致,占空比可以不同 PWM通过C9输出##===================上面舵机=====================##
#上面舵机 往上def Pwm3_above(u):while(u > 0):pwm3.duty(u)print("值:%d " % u)u = u - 1time.sleep(1)print("=== 上面舵机 往上 ===")print("u = %d" % u)return u#上面舵机 正方向def Pwm3_correct(u):if u > 150:while(u > 150):pwm3.duty(u)print("值:%d " % u)u = u - 1time.sleep(1)print("u = %d" % u)return uelse:while(u < 150):pwm3.duty(u)print("值:%d " % u)u = u + 1time.sleep(1)print("u = %d" % u)print("=== 上面舵机 回正 ===")return u#上面舵机 往下def Pwm3_under(u):while(u < 210):pwm3.duty(u)print("值:%d " % u)u = u + 1time.sleep(1)print("=== 上面舵机 往下 ===")print("u = %d" % u)return u##===================下面舵机=====================##
#下面舵机 回正def initPwm4(n):if n < 155:while(n<155):pwm4.duty(n)n = n + 1print("n = %d" % n)time.sleep(1)else:while(n>155):pwm4.duty(n)n = n - 1print("n = %d" % n)time.sleep(1)print("=== 下面舵机 回正 ===")return n#下面舵机 往右 函数def Pwm4_right(n):while(n>1):pwm4.duty(n)n = n - 1print("n = %d" % n)time.sleep(1)print("=== 下面舵机 往右 ===")return n#下面舵机 往左 函数def Pwm4_left(n):while(n<255):pwm4.duty(n)n = n + 1print("n = %d" % n)time.sleep(1)print("=== 下面舵机 往左 ===")return nu = 50 #设置 控制上面舵机 初值
n = 150 #设置 控制下面舵机 初值u = Pwm3_above(u) #初始化 上面 舵机 (默认往上)
n = initPwm4(n) #初始化 下面 舵机 (默认回正)
time.sleep(1000)u = Pwm3_under(u) #舵机1 往下
time.sleep(500)n = Pwm4_left(n) #舵机2 往左u = Pwm3_correct(u) #舵机1 正视前方
time.sleep(500)n = initPwm4(n) #舵机2 回正
time.sleep(500)
n = Pwm4_right(n) #舵机2 往右
项目效果呈现
如果觉得这篇文章有用 记得点赞收藏哦 评论也可 o( ̄︶ ̄)o
OpenART mini 控制舵机相关推荐
- OpenART mini使用教程
前言 OpenART mini 是我们在 NXP 的 OpenART 套件的基础上,去除非视觉部分而制作出来的迷你版.虽说只是迷你版,但"麻雀虽小,五脏俱全". OpenART m ...
- 实例4:树莓派GPIO控制舵机转动
实例4:树莓派GPIO控制舵机转动 实验目的 通过背景知识学习,了解舵机的外观及基本运动方式. 了解四足机器人mini pupper腿部单个舵机的组成结构. 通过GPIO对舵机进行转动控制,熟悉PWM ...
- pwm控制舵机转动角度程序_01 舵机旋转控制基础
从今天开始,我们将学习Python代码控制舵机专题.第一节课我们将学习舵机的旋转控制基础,探究180度舵机的图形化编程控制. 一.舵机 1.舵机简介 舵机也叫伺服电机,最早用于船舶上实现其转向功能,由 ...
- Arduino 控制舵机
Arduino 控制舵机 #include <Servo.h> Arduino自带的Servo函数及其语句,先来介绍一下舵机函数的几个常用语句吧. 1.attach(接口)--设定舵机的接 ...
- python舵机控制程序_树莓派PWM控制舵机的两种方式
PWM控制舵机简介 通常情况下,伺服电机(舵机)是由一个标准的直流系统和一个内部反馈控制装置(一个减速齿轮和电位计)来组成的.伺服电机(舵机)的主要作用是将齿轮轴旋转到一个预定义的方向上.伺服电机(舵 ...
- arduino定时器控制舵机_Arduino学习经验(一)之解决舵机库和pwm输出冲突
一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...
- STM32超声波模块测距串口输出/通用定时器中断并输出PWM控制舵机/系统定时器延时
参考:stm32 超声波模块 原理 实现测距 +舵机使用 作者:点灯小哥 发布时间: 2021-03-10 19:37:16 网址:https://blog.csdn.net/weixin_46016 ...
- STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值
参考:stm32 定时器输出PWM原理及工作原理+控制舵机 作者:点灯小哥 发布时间: 2021-03-09 23:17:52 网址:https://blog.csdn.net/weixin_4601 ...
- 探测距离机器人模型:通过超声波测距控制舵机转向,LED灯,语音播放,蜂鸣器(米思齐mixly,arduino)
** ------------探测距离机器人模型:通过超声波测距控制舵机转向,LED灯,语音播放,蜂鸣器(米思齐mixly,arduino) 一. 初始化设置 在初始化这里要先设置波特率.并且把初始超 ...
最新文章
- Netty时间轮调度原理分析,再不了解你就out啦
- android 布局之scrollview
- (九)HTML5本地存储——本地数据库SQLLite的使用
- excel mysql实时交换数据_Excel与数据库的数据交互
- 一些图形学中的数学应用
- 如何用C++来计算大数字乘法
- 苹果为什么收购英特尔手机基带业务?库克解释了一下
- Thinapp的昨天,今天和明天
- 爬虫的步骤解析内容xpath介绍_Xpath的基本方法和使用详解 Python爬虫中最好用解析库...
- 集成CCFlow工作流与GPM的办公系统驰骋CCOA介绍(三)
- iOS 程序上传流程
- 5个酷毙的Python工具
- matlab中ifelse能嵌套吗,MATLAB嵌套if-else语句
- 汽车电子_EMC测试_RE试验整改
- 缺失.NET Framework组件的解决方法
- java barchart类,JavaFX BarChart条形图颜色
- 37.0.概率论与数理统计-常用统计量及其分布,次序统计量,(样本均值,样本方差,样本标准差,样本k阶矩,样本k阶中心矩)
- win10安装序列号
- spark写入Oracle 报错 java.lang.ArrayIndexOutOfBoundsException: -32423
- python中的newline_python open函数newline用法