极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13395|回复: 4

如何在中断内使用步进电机

[复制链接]
发表于 2016-11-8 21:19:12 | 显示全部楼层 |阅读模式
各位朋友帮帮忙,我想通过中断来控制步进电机,但中断内无法使用,怎么办?就如以下格式:
void setup()
{
attachInterrupt(3,blink,LOW);
]
void loop()
{
直流电机;
]
void blink()
{
步进电机;
]
回复

使用道具 举报

发表于 2016-11-9 00:49:26 | 显示全部楼层
blink()里修改一个flag的全局变量,然后在loop里判断这个全局变量来决定驱动步进电机还是直流电机
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-10 20:29:01 | 显示全部楼层
非常感谢,我正在试试,谢谢。
回复 支持 反对

使用道具 举报

发表于 2016-11-30 13:47:05 | 显示全部楼层
fuwen0202 发表于 2016-11-9 00:49
blink()里修改一个flag的全局变量,然后在loop里判断这个全局变量来决定驱动步进电机还是直流电机

你好,请问下,有没有可能,利用全局变量来控制运行中的电机停止下来,附上我一段程序,用于控制LED可以,控制电机不行,必须的motor1()运行完,void loop()
{
  if (irrecv.decode(&results))
  {
    Serial.println(results.value, HEX);   
    irrecv.resume(); //重新接收红外
   }
  if(results.value==0xFFA25D)
  {
   motorA();            
  }
  
  void motorA()
{
if(flag==0)//标志,初始为0
    {
     flag=1;
     motorA1();
     }else
    {
     digitalWrite(jdq1,LOW);//继电器控制电机断电
     flag=0;
     }   
    }
void motorA1()
{
     digitalWrite(jdq1,HIGH);//继电器控制电机通电
     motor1();
     digitalWrite(jdq1,LOW);//继电器控制电机断电
}
void motor1()     //利用方波控制电机速度
{  
   for(double i=0;i<400;i+=0.1)
   {   
    digitalWrite(motorPin1, HIGH);
    delay(1);
    digitalWrite(motorPin1, LOW);
    delay(1);   
   }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-18 14:07:37 | 显示全部楼层
为什么把flag定义放在blink里面,干嘛不放在setup函数的上面去,同时既然能够驱动LED,电机的电压是否足够也需要考虑。
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 17:39 , Processed in 0.051290 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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