Не отвечает оператор if.
- Войдите на сайт для отправки комментариев
Сб, 06/04/2019 - 13:51
Добрый день! У меня тут возникла проблема: когда я хочу запустить отдельные участки программы с помощью подачи команд через Serial, то просто не отвечают эти самые куски программы. Всё эти части начинаются с оператора if (в коде я выделил с какого места не работает). Для проверки, что получается на выходе из Serial я вставил пункт вывода, что получается на выходе. Выводит именно то, что я ввожу. Помогите решить проблему.
void loop() {
if (t==0){
check();
}
while(Serial.available()>0){ //Процедура приёма команд
char c = Serial.read();
s += c;
delay(3);
}
if (s != ""){
Serial.println(s);
} //не работает после этой строки
if (s=="x"){
s="";
Serial.println("Введите координаты X");
delay(5000);
x = Serial.parseInt();
if(x>300){
x=0;
Serial.println("Ошибка: недопустимое значение!");
}
if(x<0){
x=0;
Serial.println("Ошибка: недопустимое значение!");
}
s="X: ";
s+=x;
Serial.println(s+"мм");
}
if (s=="y"){
s="";
Serial.println("Введите координаты Y");
delay(5000);
if (y>300){
y=0;
Serial.println("Ошибка: недопустимое значение!");
}
if (y<0){
y=0;
Serial.println("Ошибка: недопустимое значение!");
}
y = Serial.parseInt();
s="Y: ";
s += y;
Serial.println(s+"мм");
}
if (s=="go"){
Serial.println("Starting...");
if (x>x1){
xr=x-x1;
x1=x;
digitalWrite(PIN_DIR1, LOW);
}
if (x<x1) {
xr=x1-x;
x1=x;
digitalWrite(PIN_DIR1, HIGH);
}
if (y>y1) {
yr=y-y1;
y1=y;
digitalWrite(PIN_DIR2, HIGH);
digitalWrite(PIN_DIR3, HIGH);
}
if (y<y1) {
yr=y1-y;
y1=y;
digitalWrite(PIN_DIR2, LOW);
digitalWrite(PIN_DIR3, LOW);
}
int rx=xr/xn;
int ry=yr/yn;
Serial.println(rx);
Serial.println(ry);
for (t=0;t < rx;t++) {
digitalWrite(PIN_STEP1, HIGH);
delay(SPEED);
digitalWrite(PIN_STEP1, LOW);
delay(SPEED);
}
for (t=0; t<ry; t++){
digitalWrite(PIN_STEP2, HIGH);
digitalWrite(PIN_STEP3, HIGH);
delay(SPEED);
digitalWrite(PIN_STEP2, LOW);
digitalWrite(PIN_STEP3, LOW);
delay(SPEED);
}
Serial.println("Платформа на месте");
}
s="";
}
В правом нижнем углу Serial Monitor выберите "No newline" и повторите тест.
Большое спасибо. Всё заработало!
Причину поняли?
Да. Спасибо.