首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Arduino脚本问题

Arduino脚本问题
EN

Stack Overflow用户
提问于 2017-07-14 01:57:04
回答 1查看 32关注 0票数 1

我目前正在尝试在Arduino上制造一辆RC汽车,并面临以下问题,其中我无法重置L298P电机驱动器(由凯斯)屏蔽以阻止电机移动(仅在电机B端口使用一个电机)。

基本上,马达坚持一个方向旋转,当操纵杆的位置复位时不会停止。

这是我正在使用的当前代码。(也包括我可悲的试验)。

代码语言:javascript
运行
复制
#include <Servo.h>
Servo myservo;

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 5, 6, 7, 8);

int JoyStick_X = 0; //Analog
int JoyStick_Y = 1; //Analog
int JoyStick_Z = 1; //Digital

int SpeedPin = 11;
int Direction = 13;

void setup(void) {
  myservo.attach(9);

  lcd.begin(16, 2);
  lcd.clear();

  pinMode(JoyStick_Z, INPUT_PULLUP);

  pinMode(Direction, OUTPUT);


  Serial.begin(9600);
}

void loop(void) {
  int x, y, z;
  x = analogRead(JoyStick_X);
  y = analogRead(JoyStick_Y);
  z = digitalRead(JoyStick_Z);

  lcd.setCursor(0, 0);
  lcd.print("Car Status");

  lcd.setCursor(0, 1);
  lcd.print("Spd:");
  lcd.print(x);
  /* if (z == 0) {
     lcd.print("High");
    }
    else if (z == 0 && x < 250) {
     lcd.print("RHgh");
    }
    else if (x > 510 && x < 530) {
     lcd.print("No  ");
    }
    else if (x > 530 && x < 730) {
     lcd.print("Low ");
    }
    else if (x > 730) {
     lcd.print("Med ");
    }
    else if (x < 510 && x > 250) {
     lcd.print("RLow");
    }
    else if (x < 250) {
     lcd.print("RMed");
    }*/

  lcd.print(" ");
  lcd.setCursor(10, 1);
  lcd.print("Trn:");

  if (y < 500) {
    lcd.print("L ");
  }
  else if (525 > y && y > 500) {
    lcd.print("-");
  }
  else if (y > 525) {
    lcd.print("R ");
  }

  lcd.setCursor(11, 0);
  lcd.print("Bst:");
  if (z == 0) {
    lcd.print("Y");
  }
  else {
    lcd.print("N");
  }

  myservo.write(40 + y * 8.7890625 / 100);

    if (x > 530) {
      digitalWrite(Direction, HIGH);
    }
    else if (x < 510) {
      digitalWrite(Direction, LOW);
    }
    if (x > 510 && x < 530) {
      digitalWrite(0, 0);
    }


  //int speed = ((0.520408 * x ) - 275.816326 );

  analogWrite(SpeedPin, 255);

  /*int value = 255;
    digitalWrite(M1,LOW);

    analogWrite(E1, value);*/


/*var n;
  switch (n)
  {
    case 1:
      digitalWrite(Direction, HIGH);
      break;
    case 2:
      digitalWrite(Direction, LOW);
      break;
    default:
      digitalWrite(0, 0);
  }*/
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-14 02:57:15

我认为您在代码中的某个地方遗漏了analogWrite(SpeedPin, 0);。由于SpeedPin似乎是您控制速度的方式,因此您需要向它写入一个0才能停止。

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

https://stackoverflow.com/questions/45087904

复制
相关文章

相似问题

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