ZBLOG

#define E1A 2 #define E1B 3 #define LeftMotor1 4 #define LeftMotor2 5 int valA=0,ValAB=0; float m,o; int flag=0,flag1=0; int speedc=70,speedgord=750;//speed_a:自定速度初始值 speed_b:目标速度 int speedb=70...

根据你提供的代码,存在一些问题和错误。首先,你的代码中有两个相同名称的loop()函数,这是不允许的。其次,在第一个loop()函数中,你将变量名写错了,应该将m改为ValAB。另外,在第二个loop()函数中,你使用了一个未定义的变量valb,需要将其更正为正确的变量名称。

以下是修正后的代码:

#define E1A  2
#define E1B  3  
#define LeftMotor1 4 
#define LeftMotor2 5                                                
int valA=0, ValAB=0;
float m, o;
int flag=0, flag1=0;
int speedc=70, speedgord=750; //speed_a:自定速度初始值 speed_b:目标速度
int speedb=70,
unsigned long starttime,stoptime; //定时器
unsigned long starttime1,stoptime1; //定时器

void timer()
{
  valA++;
  stoptime = millis(); 
   if ((stoptime - starttime) > 100) //每100毫秒记一次数
   { 
    detachInterrupt(0); //关中断
    flag = 1;
   }
}

void setup() {
  pinMode(speedgord, OUTPUT);
  pinMode(E1A, INPUT);
  
  Serial.begin(9600);
  
  attachInterrupt(0, timer, RISING); //上升沿开中断
  
  starttime = millis();
  
   Serial.println(starttime);  
}

void loop() {
  analogWrite(LeftMotor1, speedc); 
  
  if (flag == 1)         
  { 
    m = ValAB; //放大一百倍串口绘图
    Serial.println(m, 3);
    valA = 0;
    flag = 0;
    
    if (m > speedgord) //如果编码器测得的实际速度大于我们设定的目标速度就减速
    {
      speedc--; //speed为60/100 r/s
    }
    else //如果编码器测得的实际速度小于我们设定的目标速度就加速
    {
      speedc++;
    }
      
     delay(0);
     starttime = millis();
     attachInterrupt(0, timer, RISING); 
  }
}

请注意,这只是对你提供代码进行了修正,并不能保证逻辑上是否正确。你可能需要进一步检查和调整代码以满足你的需求。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17155

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?