COM порт

stupiddev
Offline
Зарегистрирован: 26.11.2019

Привет всем. Пишу здесь первый раз поэтому если что не так, скажите - я исправлюсь:)
В общем проблема такая, есть вот такой код:

const int ledPin = 13;
int num = 0;
char sym;
String menu = "";

void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  while (Serial.available()) {
  menu = Serial.readString();
  Serial.println(menu);
  int len = menu.length();
  while (num < len) {
       sym = menu.charAt(num);
       Serial.println(sym);
       if (sym == 'h' || sym == 'H'){
        delay(3000);
        digitalWrite(ledPin, HIGH);
        delay(500);
        digitalWrite(ledPin, LOW);
        delay(500);
        digitalWrite(ledPin, HIGH);
        delay(500);
        digitalWrite(ledPin, LOW);
        delay(500);
        digitalWrite(ledPin, HIGH);
        delay(500);
        digitalWrite(ledPin, LOW);
        delay(500);
        digitalWrite(ledPin, HIGH);
        delay(500);
        digitalWrite(ledPin, LOW);
        } else if (sym == 'E' || sym == 'e'){
          delay(3000);
          digitalWrite(ledPin, HIGH);
          delay(500);
          digitalWrite(ledPin, LOW);
          } else if (sym == 'L' || sym == 'l'){
            delay(3000);
            digitalWrite(ledPin, HIGH);
            delay(500);
            digitalWrite(ledPin, LOW);
            delay(500);
            digitalWrite(ledPin, HIGH);
            delay(1100);
            digitalWrite(ledPin, LOW);
            delay(500);
            digitalWrite(ledPin, HIGH);
            delay(500);
            digitalWrite(ledPin, LOW);
            delay(500);
            digitalWrite(ledPin, HIGH);
            delay(500);
            digitalWrite(ledPin, LOW);
            } else if (sym == 'O' || sym == 'o'){
              delay(3000);
              digitalWrite(ledPin, HIGH);
              delay(1100);
              digitalWrite(ledPin, LOW);
              delay(500);
              digitalWrite(ledPin, HIGH);
              delay(1100);
              digitalWrite(ledPin, LOW);
              delay(500);
              digitalWrite(ledPin, HIGH);
              delay(1100);
              digitalWrite(ledPin, LOW);
              }
       num++;
  }
  menu = "";
  Serial.flush();
  break;
  }
}

При первом вводе текста, он его считывает и светодиод мигает, всё работает как нужно. После того как светодиод промигал, я хочу ввести ещё слово, но второй раз уже ничего не работает. Подскажите в чем ошибка, что исправить.

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

У Вас "num" нигде не обнуляется.

stupiddev
Offline
Зарегистрирован: 26.11.2019

Огромное спасибо Вам, со вчерашнего дня бьюсь головой, никак не мог исправить. Дело в том, что с ардуино и С++ знаком мало, я по большей части на питоне пишу, поэтому делаю глупые ошибки:)