摘要:舵机是常用的执行器,haas100具有pwm功能,那么python轻应用编程驱动舵机能不能实现呢?本文就一步步带您做一遍。

硬件:haas100,SG90舵机

软件:win7 x64,串口助理

目录

1.制作pwm程序

2.测试pwm例程运行效果

3.修改程序驱动舵机

4.可以一键复制的源代码


1.制作pwm程序

首先参考官方例程,文章链接是:

https://g.alicdn.com/HaaSAI/PythonDoc/library/Driver.PWM.html

选择一键复制,然后在tf卡上用vscode新建一个python文件,命名为haas_pwm.py,将源代码粘贴到该文件。

2.测试pwm例程运行效果

将tf卡插入开发板卡槽,然后打开串口助理,设置波特率150万,复位开发板,然后执行下面的命令:

python /sdcard/haas_pwm.py

使用串口助理观察当前输出的信息,出现以下的信息之后就证明运行起来了。

因为是例程,所以无法直观去观察pwm的效果,程序中设置的引脚是pwm3,就是下图中的pwm3引脚。

3.修改程序驱动舵机

用到的是SG90舵机

外观和基本参数是

这款舵机的控制信号是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相应舵盘的位置为0-180度,呈线性变化。

也就是说,给它提供一定的脉冲宽度,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号。

入下图所示:

刚才分析,SG90的周期是20ms,那么频率就应该是1/0.02=50Hz。

0.5ms的占比是0.5/20=0.025

2.5ms的占比是2.5/20=0.125

将这两个参数在python程序的相应位置做出修改。

连接舵机,供电采用5V

运行起来后,舵机没有反应,可能是运行的时间太短导致。

加入延时函数试试看

为了更加直观地观察运行效果,多做几种角度试试看

将tf卡插入卡槽,复位开发板,然后运行程序。发现舵机只是运动了一点点角度而已。

那么继续进行修改,按照0.1就是占空比10%,0.8就是80%理解,而不是根据前面分析的

0.5ms的占比是0.5/20=0.025(错的分析)

2.5ms的占比是2.5/20=0.125(错的分析)

修改为下图所示的占空比

再次运行,发现舵机已经可以有好几个位置了,动作幅度有大有小。

python /sdcard/haas_pwm.py

到此就完成了整个实验,可以驱动SG90这一常见的舵机了。

驱动舵机是利用haas100的python轻应用的关键一步,相当于一个机器人的大脑有了能动的腿脚。下一步就可以继续优化程序,包括加入AI程序,让它完成更多有趣的操作了。

4.可以一键复制的源代码

# coding=utf-8
# This is a sample Python script.
# SG90 Micro Servo
# Dive an Micro Servo for 4 different positions.
# HaaS 100 with Micropython firmware is the basic materials.
# Experimental steps:
# step1:Copy this code to your .py file(e.g haas_pwm.py).
# step2:Copy the file to the tf card.
# step3:Insert the tf card to your HaaS100.
# step4:Connect your HaaS100 to your computer with a USB cable.
# stet5:Connect your SG90 to your HaaS100,the port is pwm3.
# step6:Open your serial debugging assistant such as PuTTY,with the baud rete 1500000.
# step7:Type "python /sdcard/haas_pwm.py",and enjoy it.#  The SG90 circuit:
#  - SIGNAL connect to HaaS100 PWM3(pin 9)
#  - GND connect to HaaS100 GND(pin 3)
#  - VCC connect to HaaS100 5V(pin 5)#  created 25 Mar 2021
#  by aliyun
#  The source from:
#  https://g.alicdn.com/HaaSAI/PythonDoc/library/Driver.PWM.html
#  modified 27 Mar 2021
#  by TMS320VC5257
import utime
from driver import PWMprint("-------------------pwm test--------------------")
pwm = PWM()
pwm.open("pwm3")
duty = pwm.getDuty()
freq = pwm.getFreq()
print(duty)
print(freq)
# the period is 20ms,so the freq is 50 Hz
pwm.setConfig(50, 0.1)
# delay 2s,without this operation the servo will not drive
utime.sleep_ms(2000)
pwm.setConfig(50, 0.5)
utime.sleep_ms(2000)
pwm.setConfig(50, 0.1)
utime.sleep_ms(2000)
pwm.setConfig(50, 0.8)
utime.sleep_ms(2000)
duty = pwm.getDuty()
freq = pwm.getFreq()
print(duty)
print(freq)
pwm.close()
print("-------------------pwm end--------------------")

阿里云python轻应用学习笔记(四)---haas100通过python轻应用驱动舵机相关推荐

  1. 阿里云天池训练营task4学习笔记

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql 4.1表的加减法 4.1.1 ...

  2. 阿里云负载均衡SLB学习笔记5

    Web类负载均衡: Nginx 反向代理 调度器 Haproxy 调度器 阿里云有自己的负载均衡器SLB: 创建负载均衡器: 按量付费: 地域:不同地域之间的产品内网不互通.全球业务选AWS,国内业务 ...

  3. Python计算机视觉编程学习笔记 四 照相机模型与增强现实

    照相机模型与增强现实 (一)针孔照相机模型 1.1 照相机模型 1.2 三维点的投影 1.3照相机矩阵的分解 1.4 计算照相机中心 (二)照相机标定 (三)以平面和标记物进行姿态估计 (四)增强现实 ...

  4. 阿里云DevOps助理工程师认证学习笔记 1 - 敏捷项目管理基础

    敏捷项目管理基础 1.项目管理和迭代开发方式 项目的定义: 项目是一系列独特的.复杂的.相互关联的活动,这些活动有着一个明确目标或目的,并且必须在特定的时间和预算内规范完成. 项目管理: 运用各种相关 ...

  5. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  6. python基础知识学习笔记(2)

    python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...

  7. Python——常用Python包的学习笔记

    1 致谢 感谢陈助教的帮助! 2 前言 今天想通过画图展现一下学习参考值的变化情况,在网上看了一下,需要使用plt包,不过又忘了plt是做什么用的了,于是想要记录一下,写一下关于常用Python包的笔 ...

  8. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  9. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  10. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

最新文章

  1. 一个简单的内核模块实现和使用
  2. entity.Database.SqlQuery() 和entity.Database.SqlCommand()
  3. mysql 主从热备_windows10本地两个mysql8服务配置主从热备
  4. 【MM模块】Split Valuation 分割评估
  5. 反思深度思考:不无脑的行动 有脑的持久行动
  6. 服务器上装filezilla server后,本地的ftp客户端连接不上去
  7. 内连接 左连接 右连接 交叉连接的区别
  8. 深入比特币原理(四)——锁定脚本(locking script)与解锁脚本(unlocking script)
  9. RestTemplate HttpMessageConverter报错的解决方案no suitable HttpMessageConverter
  10. java remote debug parameters
  11. 【转】密码破解全能工具:Hashcat密码破解攻略
  12. 笔记本显示器仅计算机,笔记本可以当屏幕用 笔记本屏幕当显示器用
  13. python遇到错误跳过_python如何设置报错跳过?
  14. MySQL——in和exists优化
  15. windows下vue-cli及webpack 构建网站(四) 路由vue-router的使用
  16. 6.7.1 机器人系统仿真/URDF、Gazebo与Rviz综合运用/机器人运动控制以及里程计信息显示
  17. LAMP一键安装脚本 from:秋水逸冰
  18. 获取现在的Unix时间戳(Unix timestamp)的方法-在线时间戳转换器
  19. linux php com,Linux_COM简介,世上无难事,只要肯登攀, - phpStudy
  20. cadence计算器里面的函数

热门文章

  1. 【scala安装Windows】
  2. 成都大学计算机学院录取分数线,2016年成都大学艺术类专业录取分数线
  3. 度量衡计算工具_【度量衡换算器下载】中国古代度量衡换算器 v2.1 中文版-开心电玩...
  4. 视频语音聊天室办理会员是骗人的吗?
  5. EhCache常用配置详解和持久化硬盘配置
  6. 教你用matlab做损伤分析,Abaqus常用损伤分析模型.pdf
  7. Build and run UDK2021.8 Emulator in Deepin-20.2.4
  8. 一篇弄懂LayoutInflater.from(context).inflate()
  9. 运维安全-网络与基础架构图
  10. 使用拼接URL显示指定定位(腾讯地图)