У меня возникают проблемы с программированием линейного следящего робота (с двигателями и с использованием Arduino Uno) и с помощью оператора switch для объявления различных движений для двигателей.
До сих пор у меня есть:Необъявленная область действия (заявление о переключении в Arduino)
void loop() {
int sensorValueright = analogRead(A0);
int sensorValuecentre = analogRead(A1);
int sensorValueleft = analogRead(A2);
switch (direction1) {
case "right":
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 60); //Motor A at quarter speed
digitalWrite(13, HIGH); //Establishes forward direction of Channel B
digitalWrite(8, LOW); //Disengage the Brake for Channel B
analogWrite(11, 125); //Motor B at half speed
delay(1000);
break;
case "centre":
digitalWrite(12, HIGH); //Forward A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 100); //Motor A = Motor B speed
digitalWrite(13, HIGH); //Forward B
digitalWrite(8, LOW); //Disengage the Brake for Channel B
analogWrite(11, 100); //Motor A = Motor B speed
delay(500);
break;
case "left":
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 125); //Motor A at Half Speed
digitalWrite(13, HIGH); //Establishes forward direction of Channel B
digitalWrite(8, LOW); //Disengage the Brake for Channel B
analogWrite(11, 60); //Motor B at Quarter Speed
delay(1000);
break;
}
if (sensorValuecentre < 1){
direction1 == "centre"
}
else if (sensorValueright < 1){
direction1 == "right"
}
else if (sensorValueleft < 1){
direction1 == "left"
}
else{
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 50); //Motor A at low speed
digitalWrite(13, HIGH); //Establishes forward direction of Channel B
digitalWrite(8, LOW); //Disengage the Brake for Channel B
analogWrite(11, 50); //Motor B at low speed
delay(500);
}
delay(1);
}
Но я получаю следующее сообщение об ошибке при компиляции:
line_tracker_test_switch.ino: In function 'void loop()':
line_tracker_test_switch.ino:20:9: error: 'direction1' was not declared in this scope
line_tracker_test_switch.ino:60:3: error: expected ';' before '}' token
line_tracker_test_switch.ino:64:3: error: expected ';' before '}' token
line_tracker_test_switch.ino:68:3: error: expected ';' before '}' token
Error compiling.
Любая помощь будет принята с благодарностью!
Я не вижу декларации направления1. Вы? – bmargulies
Прочтите ошибку - 'direction1' не объявлен, и вы не показали, как/где он объявлен! – John3136
Кроме того, 'direction1 ==" right "' не делает то, что вы думаете. –