Arduino输入0/1控制步进电机正反转一定行程

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。

它构建于开放原始码simple I/O介面版,并且具有使用类似JavaC语言的Processing/Wiring开发环境。主要包含两个部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,它们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。 

    Arduino输入0/1控制步进电机正反转一定行程:

J接线方法采用共阳极接法

VCC 2  //电源+  PLS+ DIR+ ENA+ 共阳极串联

 PLS 3  //脉冲  DIR 4  //方向  ENA 5  //使能

 

代码如下

#define VCC 2  //电源+
#define PLS 3  //脉冲
#define DIR 4  //方向
#define ENA 5  //使能
int p;
//int String p;
String comdata = "";//字符串函数

void setup()
{
  pinMode(VCC, OUTPUT);
  pinMode(PLS, OUTPUT);
  pinMode(DIR, OUTPUT);
  pinMode(ENA, OUTPUT);
  Serial.begin(9600);//打开串口波特率9600
  //Serial.println("\n\nString toInt():");
}

void loop()
{
 digitalWrite(VCC, HIGH);
 digitalWrite(ENA, HIGH);
 
  if (Serial.available() > 0)//判读是否串口有数据
  {
    String comdata = "";//缓存清零
    
    while (Serial.available() > 0)//循环串口是否有数据
          {
            comdata += char(Serial.read());//叠加数据到comdata
            delay(2);//延时等待响应
          }
    if (comdata.length() > 0)//如果comdata有数据
      {
      String my_str = "123";
      int p = comdata.toInt();
      
      Serial.println(p);//打印comdata数据
      //p = Serial.parseInt();
      //Serial.println(p);
      //p=toInt(comdata);
      //p=Serial.parseInt();
      if(p==1)
           {
            digitalWrite(DIR, HIGH);  //正转
//正转一圈,用时1s
  //此处驱动器定义1600步为1圈
  //本来1600X625微秒=1秒,因为时间间隔太短,程序运行也需要时间,间隔时间/2之后总时间差不多1秒
    for(int x=0; x<1600; x++){
      digitalWrite(PLS, HIGH);
      delayMicroseconds(5*-00); //脉宽调速度
      digitalWrite(PLS, LOW);
      delayMicroseconds(500);} //脉宽调速度
      delay(10);  //停1s
           }
      if(p==0) 
         {
          digitalWrite(DIR, LOW);    //反转
  //反转一圈,用时1s
     for(int x=0; x<1600; x++){
      digitalWrite(PLS, HIGH);
      delayMicroseconds(500);//脉宽调速度
      digitalWrite(PLS, LOW);
      delayMicroseconds(500);}//脉宽调速度

          
         }
       delay(10); //停1s
      
      
      
      }
  }
}        

实验效果:

在Arduino窗口输入1正转(行程1600个脉冲,电机旋转圈数可以根据驱动器细分调控),反转同理,输入0(行程1600个脉冲,电机旋转圈数可以根据驱动器细分调控)。

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖天星辰变

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值