arduino uno官方原理图_Arduino基础入门篇27—步进电机驱动库的使用

2023-10-28

本篇介绍步进电机驱动库的使用,通过读取电位器输入,控制步进电机转动相应角度。

Stepper库是官方提供的驱动库,我们启动Arduino IDE,点击「文件」—「示例」就能找到Stepper库,官方提供了四个例程。关于Stepper库可参考官方介绍(https://www.arduino.cc/en/Reference/Stepper)。

1. 实验材料

  • Uno R3开发板

  • 配套USB数据线

  • 面包板及配套连接线

  • ULN2003驱动板

  • 步进电机

  • 电位器

2. 实验步骤

1. 根据原理图搭建电路。

原理图在上一篇基础上添加了电位器的连接。ULN2003驱动板上IN1、IN2、IN3、IN4分别连接UNO开发板的数字引脚2,3,4,5;驱动板电源输入+、-引脚分别连接UNO开发板的5V、GND;电位器中间引脚连接Uno模拟引脚A0,电位器两端引脚分别连接Uno的5V和GND。

实验原理图如下图所示:

c36c3303f7908e7c05871edb7eebfe92.png
实验原理图

实物连接图如下图所示:

3bd998582c6802e3299112901f66d31f.png
实物连接图

2. 修改Stepper源文件。

由于我们使用的步进电机和官方驱动库中有所差异,所以需要对驱动库稍加修改。

  • 找到Arduino IDE安装目录,进入\libraries\Stepper\src\,用文本文件打开Stepper.cpp。将255行switch包含的case注释掉。

28521bd2ec3a9cdc41b2119d93644097.png
库文件
  • 拷贝如下代码到switch中。

 1case 0:  // 1010
2  digitalWrite(motor_pin_1, HIGH);
3  digitalWrite(motor_pin_2, LOW);
4  digitalWrite(motor_pin_3, LOW);
5  digitalWrite(motor_pin_4, LOW);
6break;
7case 1:  // 0110
8  digitalWrite(motor_pin_1, LOW);
9  digitalWrite(motor_pin_2, HIGH);
10  digitalWrite(motor_pin_3, LOW);
11  digitalWrite(motor_pin_4, LOW);
12break;
13case 2:  //0101
14  digitalWrite(motor_pin_1, LOW);
15  digitalWrite(motor_pin_2, LOW);
16  digitalWrite(motor_pin_3, HIGH);
17  digitalWrite(motor_pin_4, HIGH);
18break;
19case 3:  //1001
20  digitalWrite(motor_pin_1, LOW);
21  digitalWrite(motor_pin_2, LOW);
22  digitalWrite(motor_pin_3, LOW);
23  digitalWrite(motor_pin_4, HIGH);
24break;

如下如所示:

95b4414f8a2d3254b20acfd0b26ec181.png
修改后
  • 保存并关闭Stepper.cpp。

3. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

 1/* 2 * MotorKnob 3 * 4 * A stepper motor follows the turns of a potentiometer 5 * (or other sensor) on analog input 0. 6 * 7 * http://www.arduino.cc/en/Reference/Stepper 8 * This example code is in the public domain. 9 */
10
11#include 
12
13// change this to the number of steps on your motor
14#define STEPS 200
15
16// create an instance of the stepper class, specifying
17// the number of steps of the motor and the pins it's
18// attached to
19Stepper stepper(STEPS, 2, 3, 4, 5);
20
21// the previous reading from the analog input
22int previous = 0;
23
24void setup() {
25  // set the speed of the motor to 90 RPMs
26  stepper.setSpeed(90);
27}
28
29void loop() {
30  // get the sensor value
31  int val = analogRead(0);
32
33  // move a number of steps equal to the change in the
34  // sensor reading
35  stepper.step(val - previous);
36
37  // remember the previous value of the sensor
38  previous = val;
39}

4. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

d416b17aebf60fa68c6940006568cc14.png
程序下载

3. 实验现象

步进电机跟随电位器旋转而转动。

6d236076d48823dc9dca27e42d56950f.gif
实验现象

4. 实验分析

程序中使用Stepper库,设置步进电机四相驱动引脚,设置转动速度。主循环中读取A0口模拟输入,与上次数据作比较,以上次数据为参考点驱动步进电机转动。

71cd8aba88faa327b3b3e4f6918ca995.png

扫码加入微信公众号:TonyCode
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

arduino uno官方原理图_Arduino基础入门篇27—步进电机驱动库的使用 的相关文章

  • neo4j修改节点(包括属性,关系)

    将 傅式级数 这个节点删除 并把 单位冲激序列的傅里叶变换 这个节点 指向 傅氏级数 这个节点 match r where id r 76247 detach delete r match p KnowledgeBlock name 单位冲
  • Sass 条件-循环语句

    学习Sass中 if else for while each 一 条件判断 if else 示例 1 mixin blockOrHidden boolean true 2 if boolean 3 debug boolean is bool
  • OpenCV机器视觉-边缘与轮廓

    边缘与轮廓 基于图像边缘提取或二值化的基础寻找对象轮廓 边缘提取的阈值会最终影响轮廓发现的结果 主要API要有以下俩个 findContours发现轮廓 drawContours绘制轮廓 查找轮廓 处理的图像 轮廓列表 继承关系 cv fi
  • druid的解密

    项目中往往配置的数据库密码不是明文 当我们的数据库配置的密码是一系列的你看不懂的文字时 你就应该考虑是不是是druid的加解密了 使用druiid的加解密 首先应该配置依赖
  • 简易虚拟培训系统-UI控件的应用3

    目录 Button组件的组成 Button组件方法1 在Button组件中设置OnClick 回调 Button组件方法2 在脚本中添加Button类的监听 上一篇使用了文件流读取硬盘数据并显示在Text组件中 本篇增加使用按钮来控制显示哪
  • 牛客网SQL题目解析(答案+解析+理解)

    本文记录了牛客网sql全部题目的答案与难题解析 部分题目包含多种解法 并且涵盖了开窗函数等各种语法点的理解 标题中高亮的题目 是易错题 牛客网刷题链接 牛客网sql在线练习 本文所有语句使用mysql8 0 参考教程资源 mysql教程1
  • 贪心法求解背包问题

    编写程序 输入一组物体重量以及它们的价值大小 对每一个物体求出它对的价值重量比 按由大到小的顺序排列 每一次取出这个比值最大且物体可以被包装下的物体 直到包装满为止 输出装入背包的物体 并给出装入物体的编号以及它们各自的价值和装入背包的物体
  • java commons-chain_Apache commons chain 初探

    Apache commons chain 是什么 Apache common chain 是对责任链设计模式的改造封装 让使用者更加方便的使用 简单回顾一下责任链设计模式 在阎宏博士的 JAVA与模式 一书中开头是这样描述责任链 Chain
  • 收藏

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 仅作学术分享 不代表本公众号立场 侵权联系删除 转载于 来自 知乎 https www zhihu com question 56024942 编辑 AI有道 卷积神经网
  • tnsnames.ora配置小结

    oracle网络配置 三个配置文件 listener ora sqlnet ora tnsnames ora 都是放在 ORACLE HOME network admin目录下 1 sqlnet ora 作用类似于linux或者其他unix
  • 利用一根网线实现新电脑一键迁移文件和软件

    文章目录 问题 方法 Win10下用网线在两台电脑之间高效传输文件数据 第一步设置电脑ip 第二步 利用PING命令测试两台电脑是否连通 360手机助手实现文件迁移 参考文献 问题 最近来到了一个新的实验室 实验室新分配了一台电脑 于是想要
  • OutputStreamWriter在完成write()后 一定要立即关闭,不然写入内容不完整!

    在开发中 同一个程序中需要两次写文件 通过OutputStreamWriter来实现 刚开始为了管理方便 我把这两个操作的关闭过程统一都放到了程序的最后 但是发现写入的内容变得不完整 无论文本长短 最后总是有大约几百个字符没有写进去 后来在
  • el-table 记住选中状态

  • Gitlab部署报错There was an error running gitlab-ctl reconfigure: ruby_block[authorize Grafana with Gitla

    安装gitlab 报错 There was an error running gitlab ctl reconfigure ruby block authorize Grafana with Gitlab monitoring grafan
  • 亲身实践,这份SpringCloud Alibaba全彩笔记助你高效学习

    SpringCloud Aliababa简介 大家好 我最近在学习SpringCloud Alibaba 在此过程中积累了很多学习笔记 为了方便更多人学习 我决定将这套SpringCloud Alibaba全解笔记开源 这套笔记包含Spri
  • 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六)

    优化七 编译器优化 降低miss率 处理器和主内存之间不断扩大的性能差距促使编译器编写者仔细检查内存层次结构 看看编译时优化是否可以提高性能 再次 研究分为指令缺失的改进和数据缺失的改进 接下来介绍的优化可以在许多现代编译器中找到 有些程序
  • Java常用的stream流操作,附源码

    Java常用的stream流操作 附源码 问题背景 stream操作方法 1 去重 2 对象无序去重 通过name去重 3 对象无序去重 通过name且age去重 注意 不是先使用name去重 再使用age去重 3 1 对象有序去重 4 整
  • dockerfile 中 ENTRYPOINT 和 CMD的区别

    大家好 在dockerfile当中 ENTRYPOINT 和CMD的作用于效果是很类似的 我们今天就来说一下它们两者的区别 ENTRYPOINT 指定这个启动的时候启动的时候要运行的命令 可以被替代 CMD 指定这个启动的时候启动的时候要运
  • struct和typedef struct的区别

    在了解struct和typedef struct之前 我们先学习下typedef的定义和用法 typedef为C语言的关键字 作用是为一种数据类型定义一个新名字 这里的数据类型包括内部数据类型 int char等 和自定义的数据类型 str

随机推荐

  • 网络安全(黑客技术)自学

    前言 网学黑客技术的人越来越多了 不少人都不知道该怎么学 今天就来详细的说一说黑客是如何自学成为一名黑客 首先 什么是黑客 黑客 泛指擅长IT技术的电脑高手 黑客一词 源自英文Hacker 早期其实就是一群爱好电脑技术的人 他们有着与常人不
  • awk 练习题

    test txt为cp etc passwd test txt 用awk 打印整个test txt 以下操作都是用awk工具实现 针对test txt awk F print 0 test txt 查找所有包含 bash 的行 awk ba
  • web前端知识总结一(HTMl+CSS)

    web前端知识总结一 HTML CSS 文章目录 web前端知识总结一 HTML CSS 浏览器 HTML基础 换行标签 水平线标签 图片标签 绝对路径 相对路径 视频标签 链接标签 锚点 无序列表 有序列表 自定义列表 表格 表格属性 合
  • vue使用什么进行css开发,教你在Vue项目中使用React超火的CSS-in-JS库: styled-components...

    什么是CSS in JS 顾名思义 CSS in JS就是可以使用JS来编写CSS样式 那么为什么要用JS来编写CSS呢 我写CSS写的好好的 干嘛非给自己找不自在呢 相信以前大家都听说过这么一个词 关注点分离 就算没听过这个词那么你肯定至
  • Java笔记-Object,String,Math,BigInteger类

    一 项目的jar包的导入与导出 jar包是一个可以包含许多 class文件的压缩文件 我们可以将一个jar包加入到项目的依赖中 从而该项目可以使用该jar下的所有类 也可以把项目中所有的类打包到指定的jar包 提供给其他项目使用 1 1导出
  • 艾诺威Aerohive AP120,TTL简单设置和Image(固件)损坏修复等

    艾诺威Aerohive AP120 TTL简单设置和Image 固件 损坏修复等 原始用户名 admin 原始密码 aerohive 默认IP 192 168 58 64 eth0 WAN口 mgt0 LAN口 WLAN 无线 串行口速度
  • IDEA使用maven搭建java项目连接redis(图文)

    1 新建项目 2 添加依赖 对应的依赖配置项可以在https mvnrepository com artifact redis clients jedis 中找到 可以根据自己想要的版本进行配置 3 mevan下载jar 4 解决依赖包导入
  • 美国教育数据分析

    现有一份来自kaggle的美国教育相关的数据集 数据中一共有1497个样本 25个属性 我们先将这份数据的缺失值进行补充 并进行标准化 然后将这份数据中的学生数学成绩作为标签 利用其它的24个属性构建机器学习方法 来对学生成绩进行预测 通过
  • 《英语国家社会与文化入门》答案翻译

    Traslate by 东莞理工学院 14级软件2班 赖静朝 本资料仅供学习交流 不保证内容的绝对准确性 严禁使用于任何商业用途 下载地址 链接 http pan baidu com s 1nv6JhAp 密码 b3oc 如果发现错误 可以
  • 锐捷实操系列

    1 锐捷实操 Telnet方式登录 1 配置路由器以太网口的IP地址 Ruijie config interfaceinterface number 进入接口配置模式 Ruijie config if GigabitEthernet0 0
  • Blender基础操作:移动游标位置、快速设置原点

    1 游标 作用 用于物体定位 比如 1 作为出生点 新创建的物体的初始位置 2 在游标处汇合的操作 右键 吸附 选中项 游标 如何移动游标的位置 手工移动 选中游标工具 点到指定位置 不推荐 右键 吸附 游标 选中项 自动吸附 勾选磁铁 顶
  • 华为测开面试记,三面被吊打,所幸最后Offer已到手

    在互联网做了几年之后 去大厂 镀镀金 是大部分人的首选 大厂不仅待遇高 福利好 更重要的是 它是对你专业能力的背书 大厂工作背景多少会给你的简历增加几分竞争力 但说实话 想进大厂还真没那么容易 最近面试华为 结果三面被吊打 不甘心的我整理了
  • 简单使用 MySQL 索引

    MySQL 索引 1 什么是索引 在数据库表中 对字段建立索引可以大大提高查询速度 通过善用这些索引 可以令 MySQL 的查询和 运行更加高效 如果合理的设计且使用索引的 MySQL 是一辆兰博基尼的话 那么没有设计和使用索引的 MySQ
  • linux:vmware下docker容器无法ping通外部

    问题 如题 原因 可能是因为网络原因 之前用的梯子如果没有断开而直接关机 导致网卡出现异常 而vm ware也可能是同样原因 尝试解决 关闭vmware并重启 再一次进入到容器 问题解决
  • ant编译Tomcat8时报错 the archive file.tar.gz doesn't exist

    报错 testexist echo Testing for D project Tomcat 8 0 2 src share commons dbcp2 2 0 SNAPSHOT src build xml downloadgz 2 pro
  • Python tkinter 树形列表控件(Treeview)的使用方法

    1 方法 方法 描述 bbox item column None 返回指定item的框选范围 或者单元格的框选范围 column cid option None kw 设置或者查询某一列的属性 delete items 删除指定行或者节点
  • [专利与论文-11]:南京市职称申请 - 继续教育学时认定表如何填写

    2021年电子信息申报通知 中 高级 南京人力资源和社会保障学会 关于做好2020年度南京市专业技术人员继续教育工作的通知 关于做好2020年度南京市专业技术人员继续教育工作的通知 今年申报职称 关于学时 需要填写 南京市专业技术人员继续教
  • MySQL自带数据库

    文章目录 MySQL自带数据库 自带数据库介绍 1 mysql 2 information schema Server层统计信息字典表 Server层表级别对象字典表 Server层其它信息字典表 InnoDB层系统字典表 InnoDB层锁
  • tcp短连接TIME_WAIT问题解决方法大全(4)——tcp_tw_reuse

    tcp tw reuse选项的含义如下 http www kernel org doc Documentation networking ip sysctl txt tcp tw reuse BOOLEANAllow to reuse TI
  • arduino uno官方原理图_Arduino基础入门篇27—步进电机驱动库的使用

    本篇介绍步进电机驱动库的使用 通过读取电位器输入 控制步进电机转动相应角度 Stepper库是官方提供的驱动库 我们启动Arduino IDE 点击 文件 示例 就能找到Stepper库 官方提供了四个例程 关于Stepper库可参考官方介