极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11585|回复: 1

在循环中如何用按键控制暂停和继续,用的millis()函数控制周期的

[复制链接]
发表于 2015-1-27 16:22:00 | 显示全部楼层 |阅读模式
本帖最后由 Arthur1088 于 2015-1-27 16:24 编辑

目前在做控制步进电机的实验,正反转各10s,速度控制与周期控制都是基于millis()函数,想用按键控制程序暂停和继续。目前程序里的按键在外部中断时,由于millis()函数始终运行,所以中断时间也算在周期时间内,难点在于比如先运行3s,中断一段时间后如何继续运行剩下的7s,求各位大神帮忙指导一下,不胜感激!!!!!

int CLK1=10;
int DIR1=11;
int key=7;
boolean direct=true;

void setup()
{
  pinMode(CLK1,OUTPUT);
  pinMode(DIR1,OUTPUT);
  pinMode(key,INPUT);
  Serial.begin(9600);

}

long interval1 = 1;
long previousMillis1 = 0;
static boolean SteperState1 = HIGH;

boolean key_scan()  
{
     if(digitalRead(key) == HIGH)
     {
          delay(10);  
          if(digitalRead(key) == HIGH)
             { direct = ! direct;}
           while(digitalRead(key) == HIGH);
      }
      return direct;
}

unsigned long timegap=10000;
unsigned long begintime=0;
int stepstat=1;
void loop()
{              
               
         
            if(!key_scan())
            {
                 unsigned long currentMillis1 = millis();
                 if(currentMillis1 - previousMillis1 > interval1)
                {
                     previousMillis1 = currentMillis1;   
                     SteperState1 = !SteperState1;
                     digitalWrite(CLK1, SteperState1);
                 }

                  unsigned long time=millis();
                  begintime=time;
                  if(time-begintime>=timegap)
                  {
                      begintime=time;
                      stepstat=!stepstat;
                   }
                  if(stepstat==1)
                     digitalWrite(DIR1, LOW);
                  else
                     digitalWrite(DIR1, HIGH);
            }      
            else
                 digitalWrite(CLK1, HIGH);
}
回复

使用道具 举报

发表于 2016-1-10 09:44:56 | 显示全部楼层
请问你的问题解决了吗
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 17:29 , Processed in 0.033147 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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