Member 14841679 Ответов: 1

Как решить эту программную ошибку


/*  Arduino DC Motor Control - PWM| L293d
*/

#define enA 9
#define in1 4
#define in2 5
#define enB 10
#define in3 6
#define in4 7

int motorSpeedA = 0;
int motorSpeedB = 0;

void setup() {
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}
void loop() {
  int 1 button = analogRead(A0);
  int 2 button = analogRead(A1); 
  int 3 button = analogRead(A2); 
  int 4 button = analogRead(A3); // Read value

  // 1,2 button used for forward and backward control
     if (2 button) {
    // Set Motor A backward
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    // Set Motor B backward
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
  }
}
  else if (1 button) {
    // Set Motor A forward
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    // Set Motor B forward
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
  }
  }

  // 3,4 butten used for left and right control
  if (3 button) {
     // Set Motor A forward
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    // Set Motor B stop
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    }
  if (4 button) {
     // Set Motor A stop
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    // Set Motor B forward
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    }
  analogWrite(enA, motorSpeedA); // Send PWM signal to motor A
  analogWrite(enB, motorSpeedB); // Send PWM signal to motor B
}


Что я уже пробовал:

состояние выхода 1
ожидается безусловный-ID в числовой константой

1 Ответов

Рейтинг:
1

Rick York

Эти :

int 1 button = analogRead(A0);
int 2 button = analogRead(A1);
int 3 button = analogRead(A2);
int 4 button = analogRead(A3); // Read value
не являются допустимыми выражениями.

Вы можете сделать массив из четырех целых чисел и сделать что-то вроде этого :
int buttons[4];
buttons[0] = analogRead(A0);
buttons[1] = analogRead(A1);
buttons[2] = analogRead(A2);
buttons[3] = analogRead(A3); // Read value
-редактировать-

Кроме того, как упоминал Фил.о, условные выражения неверны. Они должны быть в форме :
if( buttons[0] )
{
}
else if( buttons[1] )
{
}
То, что вы написали для них, недопустимо в языках C или C++. Убедитесь, что вы понимаете разницу.

Еще одна вещь - обычно состояния кнопок являются двоичными со значениями 1 или 0. Уверены ли вы, что правильно приобретать их с помощью analogRead()? Я вижу, вы используете digitalWrite, есть ли соответствующий digitalRead()?


phil.o

5 б
Вы могли бы сказать ему, чтобы он изменил свои условия в блоках if..else.

Rick York

Да, я не заглядывал так далеко. Первые ошибки были настолько очевидны, что я не стал утруждать себя.