极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11540|回复: 1

arduino控制2个工业步进电机而且不用库

[复制链接]
发表于 2017-8-16 20:18:06 | 显示全部楼层 |阅读模式
arduino控制2个工业步进电机而且不用库

/*  without Delay
不使用delay函数来使一个连接在数字口的LED闪烁,这意味着别的代码可以同时执行,而不会被LED的代码打断。
*/
const int DianJi1 =2;
int DJ1State =LOW;             // 设置 LED状态
  int dirPin1=3;
int DIR1=LOW;
const int DianJi2 =4;      
int DJ2State = LOW;             // 设置 LED状态
   int dirPin2=5;
   int DIR2=LOW;
long previous1 =0;        // 存储上一次LED状态改变的时间
long previous2 =0;
// 下面的变量是长整形,因为以us为单位测量的时间会快速地变成一个更大的,整形无法存储的数字。
long ShiJian1 =240 ;           // 设置间隔时间为240us
long ShiJian2 =500 ;           // 设置间隔时间为770us

void setup() {
pinMode(DianJi1, OUTPUT);   // 设置数字口输出
pinMode(dirPin1, OUTPUT);
pinMode(DianJi2, OUTPUT);   
pinMode(dirPin2, OUTPUT);
}

void loop(){
  
for(long i=0;i<50000;i++) { digitalWrite(dirPin1,HIGH);dianji1();     digitalWrite(dirPin2,HIGH);dianji2();   }
delay(1000);

for(long i=0;i<50000;i++) {digitalWrite(dirPin1,LOW);dianji1();    digitalWrite(dirPin2,LOW);dianji2();   }
delay(1000);

for(long i=0;i<50000;i++) { digitalWrite(dirPin1,HIGH); dianji1();}
delay(1000);
}

void dianji1(){     
  unsigned long current = micros();
if(current - previous1 >= ShiJian1) {     // 检查是否到了亮灭灯的时间,也就是,如果现在和上一次亮灭灯的时间差比你设置的间隔时间大
        previous1 = current;   // 保存最后一次亮灯的时间
          if (DJ1State == LOW)    DJ1State = HIGH; // 如果LED灭了就点亮它 ,反之亦然:
          else                  DJ1State = LOW;
     digitalWrite(DianJi1, DJ1State);  }   // 设置变量DJ1State为LED数字输入:
}

void dianji2(){
      unsigned long current = micros();
if(current - previous2 >= ShiJian2) {
    previous2 = current;   
          if (DJ2State == LOW)    DJ2State = HIGH;
          else                    DJ2State = LOW;
     digitalWrite(DianJi2, DJ2State);  }    // 设置变量DJ1State为LED数字输入:
}
回复

使用道具 举报

发表于 2017-9-5 17:00:35 | 显示全部楼层
感谢楼主分享!
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 02:40 , Processed in 0.043480 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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