我叫孙小小 发表于 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;
}

我叫孙小小 发表于 2019-9-4 22:43:38

这里面还有蓝牙模块,和手机互相相连接
页: [1]
查看完整版本: 新手求助,测速模块,步进电机