首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Arduino LCD的代码混淆了步进电机的代码?

为什么Arduino LCD的代码混淆了步进电机的代码?
EN

Stack Overflow用户
提问于 2018-11-11 19:24:20
回答 1查看 220关注 0票数 1

我有一个步进电机的基本代码,如下所示,但出于某种原因,每当我试图为我的2个LCD添加代码时,它会把一切都搞砸。输出到电机只是一遍又一遍,没有延迟,而且液晶显示器甚至没有打印出任何东西。我做错什么了?

简单的步进代码(这是工作的)

代码语言:javascript
复制
#define IN1  52
#define IN2  50
#define IN3  48
#define IN4  46
int Steps = 4096; //4096 or 768
int cstep = 0;

void setup()
{
    Serial.begin(9600);
    pinMode(IN1, OUTPUT); 
    pinMode(IN2, OUTPUT); 
    pinMode(IN3, OUTPUT); 
    pinMode(IN4, OUTPUT); 
}

void loop()
{
    for(int x=0; x<Steps; x++)
    {
        step1();
        delayMicroseconds(2500);
    }
    Serial.println("Boom!!");
    delay(1000);
}

void step1()
{
    //stepp
    switch(cstep)
    {
        case 0:
             digitalWrite(IN1, LOW); 
             digitalWrite(IN2, LOW);
             digitalWrite(IN3, LOW);
             digitalWrite(IN4, HIGH);
             break; 

        case 1:
             digitalWrite(IN1, LOW); 
             digitalWrite(IN2, LOW);
             digitalWrite(IN3, HIGH);
             digitalWrite(IN4, HIGH);
             break; 

        case 2:
             digitalWrite(IN1, LOW); 
             digitalWrite(IN2, LOW);
             digitalWrite(IN3, HIGH);
             digitalWrite(IN4, LOW);
             break; 

        case 3:
             digitalWrite(IN1, LOW); 
             digitalWrite(IN2, HIGH);
             digitalWrite(IN3, HIGH);
             digitalWrite(IN4, LOW);
             break; 

        case 4:
             digitalWrite(IN1, LOW); 
             digitalWrite(IN2, HIGH);
             digitalWrite(IN3, LOW);
             digitalWrite(IN4, LOW);
             break; 

        case 5:
             digitalWrite(IN1, HIGH); 
             digitalWrite(IN2, HIGH);
             digitalWrite(IN3, LOW);
             digitalWrite(IN4, LOW);
             break; 

        case 6:
             digitalWrite(IN1, HIGH); 
             digitalWrite(IN2, LOW);
             digitalWrite(IN3, LOW);
             digitalWrite(IN4, LOW);
             break; 

        case 7:
             digitalWrite(IN1, HIGH); 
             digitalWrite(IN2, LOW);
             digitalWrite(IN3, LOW);
             digitalWrite(IN4, HIGH);
             break; 

        default:
             digitalWrite(IN1, LOW); 
             digitalWrite(IN2, LOW);
             digitalWrite(IN3, LOW);
             digitalWrite(IN4, LOW);
             break; 
    }
    cstep=cstep+1;
    if (cstep==8)
    {
       cstep=0;
    }
}

带有LCD码的步进器(坏的)

代码语言:javascript
复制
#include <LiquidCrystal.h>

#define IN1  52
#define IN2  50
#define IN3  48
#define IN4  46
int Steps = 4096; //4096 or 768
int cstep = 0;

LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
LiquidCrystal lcd2(14, 9, 10, 11, 12, 13);

void setup(){
  lcd.begin(16,2);
  lcd2.begin(16,2);
  pinMode(IN1, OUTPUT); 
  pinMode(IN2, OUTPUT); 
  pinMode(IN3, OUTPUT); 
  pinMode(IN4, OUTPUT); 
  Serial.begin(9600);
}

void loop()
{
    for (int x=0;x< Steps; x++)
    {
        step1();
        //delay(1);
        delayMicroseconds(2500);
    }
    Serial.println("Boom!!");
    delay(1000);
}

    void step1()
    {
        switch(cstep)
        {
            case 0:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 1");
                 lcd2.print("Working");
                 digitalWrite(IN1, LOW);
                 lcd2.print("."); 
                 digitalWrite(IN2, LOW);
                 lcd2.print(".");
                 digitalWrite(IN3, LOW);
                 lcd2.print(".");
                 digitalWrite(IN4, HIGH);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

            case 1:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 2");
                 lcd2.print("Working");
                 digitalWrite(IN1, LOW);
                 lcd2.print("."); 
                 digitalWrite(IN2, LOW);
                 lcd2.print(".");
                 digitalWrite(IN3, HIGH);
                 lcd2.print(".");
                 digitalWrite(IN4, HIGH);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

            case 2:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 3");
                 lcd2.print("Working");
                 digitalWrite(IN1, LOW);
                 lcd2.print(".");
                 digitalWrite(IN2, LOW);
                 lcd2.print(".");
                 digitalWrite(IN3, HIGH);
                 lcd2.print(".");
                 digitalWrite(IN4, LOW);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

            case 3:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 4");
                 lcd2.print("Working");
                 digitalWrite(IN1, LOW);
                 lcd2.print("."); 
                 digitalWrite(IN2, HIGH);
                 lcd2.print(".");
                 digitalWrite(IN3, HIGH);
                 lcd2.print(".");
                 digitalWrite(IN4, LOW);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

            case 4:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 5");
                 lcd2.print("Working");
                 digitalWrite(IN1, LOW);
                 lcd2.print(".") ;
                 digitalWrite(IN2, HIGH);
                 lcd2.print(".");
                 digitalWrite(IN3, LOW);
                 lcd2.print(".");
                 digitalWrite(IN4, LOW);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

            case 5:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 6");
                 lcd2.print("Working");
                 digitalWrite(IN1, HIGH);
                 lcd2.print(".") ;
                 digitalWrite(IN2, HIGH);
                 lcd2.print(".");
                 digitalWrite(IN3, LOW);
                 lcd2.print(".");
                 digitalWrite(IN4, LOW);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

            case 6:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 7");
                 lcd2.print("Working");
                 digitalWrite(IN1, HIGH);
                 lcd2.print(".");
                 digitalWrite(IN2, LOW);
                 lcd2.print(".");
                 digitalWrite(IN3, LOW);
                 lcd2.print(".");
                 digitalWrite(IN4, LOW);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

            case 7:
                 lcdClear();
                 lcd2Clear();
                 lcd.print("Step 8");
                 lcd2.print("Working");
                 digitalWrite(IN1, HIGH);
                 lcd2.print("."); 
                 digitalWrite(IN2, LOW);
                 lcd2.print(".");
                 digitalWrite(IN3, LOW);
                 lcd2.print(".");
                 digitalWrite(IN4, HIGH);
                 lcd2Clear();
                 lcd2.print("Completed");
                 break; 

           default:
                 digitalWrite(IN1, LOW); 
                 digitalWrite(IN2, LOW);
                 digitalWrite(IN3, LOW);
                 digitalWrite(IN4, LOW);
                 break; 
       }
       cstep = cstep+1;
       if (cstep==8)
       {
           cstep=0;
       }
   }

   void lcdClear(){
       lcd.setCursor(0,0);
       lcd.clear();
   }

   void lcd2Clear(){
       lcd2.setCursor(0,0);
       lcd2.clear();
   }

不知道这是否有帮助,但我的董事会是一个Mega2560-R3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 07:49:13

pin 1是通信引脚,而不是数字。我是TX0。我觉得你不应该用它。第二个显示器的引脚14是TX1。它应该又是数字的。试着改变它们:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53252341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档