пожалуйста, помогите с моим ардуино

Моя проблема заключается в том, что я запускаю такой код:

char directioN;

void setup() {   
  Serial.begin(9600)   
}

void loop()
{
  if (Serial.available())
  {
    directioN = Serial.read();

    switch (directioN)
    {
      case 'F':
        break;

      case 'B':
        break;

      case 'R':
        break;

      case 'L':
        break;

      default :
        break;
    }

    Serial.print("direction is:");
    Serial.println(directioN);
  }
}

Мой последовательный монитор добавил еще один вход, но второй пуст; здесь это произошло как с char, так и с int.

Но когда я попробовал тот же код в Tinkercad, все сработало нормально.

Так мне действительно нужен новый ATMEGA328 или это можно сделать с помощью программного обеспечения или чего-то еще?

**Я использую Arduino Uno

, 👍0

Обсуждение

что вы установили в Serial Monitor в качестве окончания строки для отправки?, @Juraj


1 ответ


Лучший ответ:

0

Так почему бы просто не проигнорировать это?

if(directionN >= 32){   //проверяем, является ли char читаемым символом ascii
  Serial.print("direction is:");
  Serial.println(directioN);
} 
,

Как я игнорирую. это влияет на то, как выполняется мой код, потому что определенный ввод выполняет определенную функцию, поэтому следующий нулевой или нулевой ввод, о котором я здесь говорю, приводит к завершению требуемой функции, @nour albrmky

@nouralbrmky Как и в опубликованном мной коде, нулевой ввод, вероятно, представляет собой новую строку., @Matej

Все сработало нормально, спасибо. У вас есть идеи, что может вызвать такую вещь, и я буду более благодарен, @nour albrmky

@nouralbrmky Вероятно, это вызвано символом новой строки, который отправляется после текста. Десятичное значение новой строки в таблице ascii меньше 32, поэтому этот код игнорирует его., @Matej