Arduino 脚本问题

Arduino Scripting issue

本文关键字:问题 脚本 Arduino      更新时间:2023-10-16

我目前正在尝试在 Arduino 上制造遥控车并面临以下问题,我无法重置 L298P 电机驱动器(通过钥匙(屏蔽以阻止电机移动(电机 B 端口仅使用一个电机(。

基本上,电机坚持一个方向旋转,并且在操纵杆的位置重置时不会停止。

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

#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);
}*/
}

我认为您在代码中的某处缺少analogWrite(SpeedPin, 0);。 由于SpeedPin似乎是您控制速度的方式,因此您需要为其写入一个零才能停止。