极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19679|回复: 1

新手求助,测速模块,步进电机

[复制链接]
发表于 2019-9-4 22:42:10 | 显示全部楼层 |阅读模式
亲爱的老哥们,真的是新手。
最近实验室有一个播种机的机器,需要arduino控制步进电机进行播种。
首先播种机,有两种工作模式。
第一:通过程序的设定,光电测速模块通过对于主动轮子的速度的测量,分为不同的播种速度。
第二:无级变速,播种后,看到播种的效果,再决定播种的速度。

这时候我的程序:
大家看一下,能不能帮我改改,或者提供一些指导性的意见。
跪谢大哥们!!!

#define STEPPIN 9
#define DIRPIN 8
//方向位为8,脉冲位为9
int in_Pin = 2;
int i=1;   
float Val = 0;      //设置变量Val,计数
float time;  //设置变量time,计时
float Speed;  //设置变量Speed,存储转速

void setup() {
  pinMode(STEPPIN, OUTPUT);
  pinMode(DIRPIN, OUTPUT);
  pinMode(2,INPUT);
Serial.begin(9600);
attachInterrupt(0,count,CHANGE);  //引脚电平发生改变时触发
}

void loop() {
  time = millis();
  Speed =  (Val/20)/(time/60000) ;
  while(Serial.available())
{
      char z=Serial.read();
      if(z=='A')//无极调速
  {
      digitalWrite(DIRPIN, HIGH);
      for (int x = 0; x < 400; x ++)  // 正向转1圈(400脉冲)
  {
    digitalWrite(STEPPIN, HIGH);
    delayMicroseconds(500);
    digitalWrite(STEPPIN, LOW);
    delayMicroseconds(500-20*i);//加快速度减小该数值
    i=i+1;
  }
  if(z=='B')
  {
      digitalWrite(DIRPIN, HIGH);
      for (int x = 0; x < 400; x ++)  // 正向转1圈(400脉冲)
  {
    digitalWrite(STEPPIN, HIGH);
    delayMicroseconds(500);
    digitalWrite(STEPPIN, LOW);
    delayMicroseconds(500-Speed);//加快速度减小该数值
  }
}
}
}
}
void count(){
  Val+= 1;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2019-9-4 22:43:38 | 显示全部楼层
这里面还有蓝牙模块,和手机互相相连接
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 23:51 , Processed in 0.044157 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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