极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16388|回复: 2

步进电机测试代码 L293D驱动板 控制正转暂停反转时间

[复制链接]
发表于 2013-4-30 14:18:08 | 显示全部楼层 |阅读模式
步进电机测试代码 L293D驱动板 控制正转暂停反转时间
/*
作者:tom
时间:20130430
IDE版本号:1.01
发表地址:www.geek-workshop.com
作用:
*/
/*操作系统环境winxp
Arduino IDE Ver 1.01
硬件:2012年的Mango控制器(Arduino兼容)
作者:tom
*/
//硬件:Mango控制器、自制的传感器扩展板、自制的L293D电机驱动板(光耦隔离)5伏的步进电机型号28BYJ-48
备注:为了方便观察步进电机是否停下来了,间隙时间变量设置为interval=1300(13)
实现功能
步进电机正转13 停止12 反转13 停止12
/*执行Stepper.step(0)子程序时,只有第一个和第三个指示灯亮。
*/
#include <Stepper.h>
// change this to the number of steps on your motor
//改变这个数字适应你的步进电机
#define STEPS 100
// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
//创建步进电机类
//Arduino控制器上数字端口8,9,10,11,定义为步进电机的端口
//Stepper stepper(STEPS, 8, 9, 10, 11);
//为了适应变化,定义变量stepPin1,stepPin2,stepPin3,stepPin4作为控制步进电机的端口变量
int stepPin1=8;
int stepPin2=9;
int stepPin3=10;
int stepPin4=11;
Stepper stepper(STEPS,stepPin1,stepPin2,stepPin3,stepPin4);
long previousMillis = 0;        // 定义储存上次的时间变量
int intstep=10;//设置步进电机的步数,请自行调整
// 下列的变量是长整型数,因为时间单位是毫秒
//将迅速变成一个很大的数字超过整型数字的存储
long interval = 13000;           // 间隙(毫秒)
void setup() {
  stepper.setSpeed(30);
  Serial.begin(9600);     
}
void loop()
{
  stepper.step(intstep);//步进电机正转
  //判断是否到了 间隔时间
  if (millis() - previousMillis > interval)
  {
    Serial.println("time is out");
    //暂停13
    stepper.step(0);
    delay(13000);
    //步进电机反转
    intstep=-intstep;
    stepper.step(intstep);
    //储存上次时间
    previousMillis = millis();   
  }
}
后记:如果仅用delay()函数想实现步进的电机的正转多少时间,反转多少时间行不通
void loop()
{
  stepper.step(intstep);//步进电机正转
  delay(13000);//此法错误,步进电机不转,端口810高电平,91`低电平保持13
  //暂停13
  stepper.step(0);
  delay(13000);
  Serial.println("Now is pause .");  
  //步进电机反转
  intstep=-intstep;
  stepper.step(intstep);
  delay(13000);
  //暂停13
  stepper.step(0);
  delay(13000);
  Serial.println("Now is pause .");  
回复

使用道具 举报

发表于 2013-9-17 15:59:55 | 显示全部楼层
最近我也遇到了一个问题,就是暂停的问题。
我采用的是大连好人分享的EasyStepper库函数,然后,我想实现 先正转,暂停几秒,再反转,可是这个暂停几秒不能用delay来实现,所以很纳闷了,不知道怎么弄了
回复 支持 反对

使用道具 举报

发表于 2013-9-17 22:56:07 | 显示全部楼层
要看step里面实现的代码。他里面是用while来处理的,你dealy了就把整个线程给停了所以。。不转。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 01:20 , Processed in 0.050594 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表