当前位置: 首页 > news >正文

arduino AccelStepper库 控制步进电机的示例

#include "AccelStepper.h"
 
// 电机步进方式定义
#define FULLSTEP 4    //全步进参数
#define HALFSTEP 8    //半步进参数
 
// 定义步进电机引脚 
#define motor1Pin1  8     // 一号28BYJ48连接的ULN2003电机驱动板引脚 in1
#define motor1Pin2  9     // 一号28BYJ48连接的ULN2003电机驱动板引脚 in2
#define motor1Pin3  10    // 一号28BYJ48连接的ULN2003电机驱动板引脚 in3
#define motor1Pin4  11    // 一号28BYJ48连接的ULN2003电机驱动板引脚 in4
                                   
#define motor2Pin1  4     // 二号28BYJ48连接的ULN2003电机驱动板引脚 in1
#define motor2Pin2  5     // 二号28BYJ48连接的ULN2003电机驱动板引脚 in2
#define motor2Pin3  6     // 二号28BYJ48连接的ULN2003电机驱动板引脚 in3
#define motor2Pin4  7     // 二号28BYJ48连接的ULN2003电机驱动板引脚 in4
 
// 定义两个步进电机对象
// 1号电机设置为半步进运行,2号电机设置为全步进运行
AccelStepper stepper1(HALFSTEP, motor1Pin1, motor1Pin3, motor1Pin2, motor1Pin4);
AccelStepper stepper2(FULLSTEP, motor2Pin1, motor2Pin3, motor2Pin2, motor2Pin4);
 
void setup() {
  stepper1.setMaxSpeed(500.0);    // 1号电机最大速度500 
  stepper1.setAcceleration(50.0);  // 1号电机加速度50.0
 
  stepper2.setMaxSpeed(500.0);    // 2号电机最大速度500 
  stepper2.setAcceleration(50.0);  // 2号电机加速度50.0
}
 
void loop() {
  if ( stepper1.currentPosition() == 0 && stepper2.currentPosition() == 0 ){
    // 1号电机转动半周
    stepper1.moveTo(2048);              
    // 2号电机转动一周
    stepper2.moveTo(2048);  
    
  } else if ( stepper1.currentPosition() == 2048 && stepper2.currentPosition() == 2048 ){
    // 1号电机转动半周
    stepper1.moveTo(0);            
    // 2号电机转动一周
    stepper2.moveTo(0);  
  }         
  
  stepper1.run();   // 1号电机运行
  stepper2.run();   // 2号电机运行
}

相关文章:

  • P1598 垂直柱状图
  • P1914 小书童——密码
  • P1028 数的计算
  • EEPROM、EPROM、FLASH、SRAM、DRAM、SDRAM的区别
  • P1063选数
  • P1149 火柴棒等式
  • 非常规的变量交换里的坑
  • P3366 最小生成树
  • P1177 快速排序
  • Arduino 控制小车转动程序
  • Arduino 超声波模块测距 示例程序
  • 从位式控制算法到PID算法
  • P1618 三连击(升级版)
  • P1579 哥德巴赫猜想(升级版)
  • P2089 烤鸡
  • 「译」Node.js Streams 基础
  • eclipse(luna)创建web工程
  • java中的hashCode
  • Laravel Telescope:优雅的应用调试工具
  • magento 货币换算
  • nfs客户端进程变D,延伸linux的lock
  • PHP的类修饰符与访问修饰符
  • Puppeteer:浏览器控制器
  • Redis 懒删除(lazy free)简史
  • vagrant 添加本地 box 安装 laravel homestead
  • VUE es6技巧写法(持续更新中~~~)
  • Vue 动态创建 component
  • 警报:线上事故之CountDownLatch的威力
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何设计一个比特币钱包服务
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 源码安装memcached和php memcache扩展
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​一些不规范的GTID使用场景
  • #define、const、typedef的差别
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (十一)手动添加用户和文件的特殊权限
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)u-boot-nand.bin的下载
  • (转)【Hibernate总结系列】使用举例
  • (转)Mysql的优化设置
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)甲方乙方——赵民谈找工作
  • .bat批处理出现中文乱码的情况
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET MVC 验证码
  • .net 程序发生了一个不可捕获的异常
  • .NET 动态调用WebService + WSE + UsernameToken
  • .py文件应该怎样打开?
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @软考考生,这份软考高分攻略你须知道