极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13148|回复: 4

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

[复制链接]
发表于 2016-3-27 21:07:56 | 显示全部楼层 |阅读模式
淘宝买的 山寨MEGA 2560开发板
5110 LCD显示
Easy Driver 步进驱动

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

求救。


部分代码如下:

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

  6.       int sensorValue = analogRead(Shot_X);
  7.        if(FirstShotX == 0)
  8.    {
  9.      FirstShotX = sensorValue;
  10.    }
  11.       
  12.       absvalue = abs(sensorValue-FirstShotX);
  13.       int Rspeed =  absvalue*Dspeed;
  14.       if(sensorValue-FirstShotX >= 10){
  15.         digitalWrite(6, HIGH);
  16.         digitalWrite(5, HIGH);
  17.         delayMicroseconds(1000);         
  18.         digitalWrite(5, LOW);
  19.         delayMicroseconds(1000);
  20.         
  21.       }else if(sensorValue-FirstShotX <= -10){
  22.         digitalWrite(6, LOW);
  23.         digitalWrite(5, HIGH);
  24.         delayMicroseconds(3000);         
  25.         digitalWrite(5, LOW);
  26.         delayMicroseconds(3000);
  27.         
  28.       }
  29.       
  30.       myGLCD.printNumI(absvalue*Dspeed,35,0);
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-3-27 21:35:56 | 显示全部楼层
经过多次实验,只要上面有其它代码,都会有所变慢,只是没有输出到LCD明显。

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

如果推断是对的,那么要如何解决?
回复 支持 反对

使用道具 举报

发表于 2016-3-28 08:26:28 | 显示全部楼层
输出是需要花时间的啊,肯定影响啊
除非多任务运行,或者用中断来做
回复 支持 反对

使用道具 举报

发表于 2016-3-28 16:45:42 | 显示全部楼层
弄个定时器中断驱动步进试试。
或者再弄块arduino板分开控制。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-28 20:10:57 | 显示全部楼层
Hackerpro 发表于 2016-3-28 08:26
输出是需要花时间的啊,肯定影响啊
除非多任务运行,或者用中断来做

把步进程序写进While但又有另外的问题,就是运行数据传递不出来。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 20:18 , Processed in 0.036427 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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