首页 > 解决方案 > 用于控制电机的 Aurdino 编码

问题描述

//Motor A
const int motorpin1  = 6; // Pin  6 of L293
const int motorpin2  = 9;  // Pin  3 of L293

void setup() {
  pinMode(motorpin1, OUTPUT);
  pinMode(motorpin2, OUTPUT);

  digitalWrite(motorpin1, LOW);
  digitalWrite(motorpin2, LOW);
  Serial.begin(9600);
}


  // put your main code here, to run repeatedly:
void loop(){
  if(Serial.available()>0)
  {
    char incomingByte = Serial.read();
    Serial.println(incomingByte);
    if(incomingByte=='a'){
      digitalWrite(motorpin1, LOW);
      digitalWrite(motorpin2, LOW);
      delay(200);
      digitalWrite(motorpin1, LOW);
      digitalWrite(motorpin2, HIGH);

      Serial.println("one way");
    }
    else if(incomingByte=='s'){
      digitalWrite(motorpin1, LOW);
      digitalWrite(motorpin2, LOW);
      delay(200);
      digitalWrite(motorpin1, HIGH);
      digitalWrite(motorpin2, LOW);

      Serial.println("other way");
    }
    else{
      digitalWrite(motorpin1, LOW);
      digitalWrite(motorpin2, LOW);
    }
  }
}

如果我们在串行监视器中输入 a ,电机应该朝一个方向旋转,如果我们输入 s,电机应该朝另一个方向旋转,但它没有发生,电机处于空闲状态,但我得到如下输出:

a
one way


s
other way

硬件连接没有问题。

你能帮我解决这个问题吗?在此先感谢

标签: arduinoarduino-uno

解决方案


逻辑上有一个小错误:

if(incomingByte=='a'){
     digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, HIGH);//changed to high
   delay(10000);
digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, LOW);//changed to low
Serial.println("one way");
   }
   else if(incomingByte=='s'){

digitalWrite(motorpin1, LOW);
digitalWrite(motorpin2, HIGH);//changed to high
delay(2000);
digitalWrite(motorpin1, LOW);//changed to low
digitalWrite(motorpin2, LOW);

推荐阅读