只要输出字符到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); 经过多次实验,只要上面有其它代码,都会有所变慢,只是没有输出到LCD明显。
因此推断可能是代码执行效率的问题,系统输出后,再执行步进程序,所以导致电机的频率延时加长。
如果推断是对的,那么要如何解决? 输出是需要花时间的啊,肯定影响啊
除非多任务运行,或者用中断来做 弄个定时器中断驱动步进试试。
或者再弄块arduino板分开控制。 Hackerpro 发表于 2016-3-28 08:26 static/image/common/back.gif
输出是需要花时间的啊,肯定影响啊
除非多任务运行,或者用中断来做
把步进程序写进While但又有另外的问题,就是运行数据传递不出来。
页:
[1]