fareign 发表于 2016-3-27 21:07:56

只要输出字符到LCD上,步进电机就转的慢很多

淘宝买的 山寨MEGA 2560开发板
5110 LCD显示
Easy Driver 步进驱动

不输出字符到LCD上,速度正常。
只要输出字符到LCD上,速度慢很多很多

求救。


部分代码如下:

void loop(){
//if(digitalRead(Shot_SEL) == 0) //按下开始
   // {
   // myGLCD.print("speed:",LEFT,0);      //使屏幕显示文字X=
   // myGLCD.clrScr();

      int sensorValue = analogRead(Shot_X);
       if(FirstShotX == 0)
   {
   FirstShotX = sensorValue;
   }
      
      absvalue = abs(sensorValue-FirstShotX);
      int Rspeed =absvalue*Dspeed;
      if(sensorValue-FirstShotX >= 10){
      digitalWrite(6, HIGH);
      digitalWrite(5, HIGH);
      delayMicroseconds(1000);         
      digitalWrite(5, LOW);
      delayMicroseconds(1000);
      
      }else if(sensorValue-FirstShotX <= -10){
      digitalWrite(6, LOW);
      digitalWrite(5, HIGH);
      delayMicroseconds(3000);         
      digitalWrite(5, LOW);
      delayMicroseconds(3000);
      
      }
      
      myGLCD.printNumI(absvalue*Dspeed,35,0);

fareign 发表于 2016-3-27 21:35:56

经过多次实验,只要上面有其它代码,都会有所变慢,只是没有输出到LCD明显。

因此推断可能是代码执行效率的问题,系统输出后,再执行步进程序,所以导致电机的频率延时加长。

如果推断是对的,那么要如何解决?

Hackerpro 发表于 2016-3-28 08:26:28

输出是需要花时间的啊,肯定影响啊
除非多任务运行,或者用中断来做

seagatecm 发表于 2016-3-28 16:45:42

弄个定时器中断驱动步进试试。
或者再弄块arduino板分开控制。

fareign 发表于 2016-3-28 20:10:57

Hackerpro 发表于 2016-3-28 08:26 static/image/common/back.gif
输出是需要花时间的啊,肯定影响啊
除非多任务运行,或者用中断来做

把步进程序写进While但又有另外的问题,就是运行数据传递不出来。
页: [1]
查看完整版本: 只要输出字符到LCD上,步进电机就转的慢很多