Последовательная отправка странных данных
Вопрос
Итак, я делаю эскиз, который берет двузначное число из USB-порта, проверяет состояние контакта, соответствующего этому номеру, а затем включает/выключает этот контакт.
По какой-то причине, когда я отправляю 13 через последовательный монитор Arduino, я получаю обратно это сообщение:
Pin number is greater than 14, details:
490
51
541
Это означает, что IDE отправляет странные числа или Arduino неправильно их обрабатывает.Кто-нибудь из вас видит проблему в том, почему это не работает правильно?
Решение
Если вы войдете в ASCII символы «1», затем «3», затем Serial.read()
вернет 49 и 51.Это потому, что в ASCII таблица символов «1» и «3» представлена числами 49 и 51 соответственно.Если вы хотите найти число, которое набрал пользователь, вам нужно преобразовать его из ASCII.
Я не очень знаком с языком Arduino, но если предположить, что он похож на C, вы сможете найти необходимые изменения. Здесь.
Я переписал программу по-другому, что может быть яснее Читать.
«0», используемый в источнике, — это просто еще один способ сказать «число, используемое для представления символа «0»», как и 48.В C-подобных языках '0' == 48
, '1' == 49
, и т.д. и т.п.