Официальный сайт компании Arduino по адресу arduino.cc
Не отвечает оператор 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" и повторите тест.
Большое спасибо. Всё заработало!
Причину поняли?
Да. Спасибо.