String toInt() — преобразование строки в целое число
Разбираем функцию toInt() для класса String в Arduino: как преобразовать строку в целое число и что происходит при нечисловых символах.
Функция toInt() позволяет преобразовать объект типа String в целое число (int). Это полезно, когда данные приходят по последовательному порту в текстовом виде, а обрабатывать их нужно как числа.
В этом уроке плата читает строку из Serial до символа новой строки, затем пытается преобразовать её в число с помощью toInt(). Результат отправляется обратно в монитор порта. Попробуйте отправить строку с нечисловыми символами — это наглядно покажет, как функция ведёт себя в нестандартных ситуациях.
Необходимое оборудование
Схема подключения
Дополнительные компоненты для этого примера не нужны. Достаточно подключить плату к компьютеру через USB и открыть монитор порта в Arduino IDE.

Плата Arduino UNO подключена к компьютеру напрямую через USB — никаких внешних компонентов не требуется.
Как это работает
toInt() разбирает строку слева направо и читает цифры до тех пор, пока не встретит нецифровой символ. Если строка начинается с нецифрового символа (например, с буквы), функция сразу вернёт 0. Знак минуса в начале строки обрабатывается корректно — отрицательные числа распознаются правильно.
Примеры поведения:
"123"→123"-45"→-45"12abc"→12(читает до первой нецифры)"abc"→0""→0
Код
Типичные ошибки
- Нет символа новой строки. Если в настройках монитора порта выбрано
No line ending, строка никогда не завершится иreadStringUntil('\n')будет ждать вечно. УстановитеNewlineилиBoth NL & CR. - Ожидание числа, получение нуля. Если
toInt()возвращает0там, где вы не ожидали, выведите исходную строку черезSerial.println()перед преобразованием — скорее всего, в ней есть лишние пробелы или непечатаемые символы. - Переполнение типа
int. На платах AVR (Uno, Nano)intзанимает 2 байта и хранит значения от −32768 до 32767. Если число больше, используйтеtoLong().
Как проверить результат
- Загрузите скетч на плату.
- Откройте монитор порта (Ctrl+Shift+M), установите скорость
9600и режим окончания строкиNewline. - Введите
42и нажмите «Отправить» — плата ответит42. - Введите
hello— плата ответит0. - Введите
99abc— плата ответит99.
Где пригодится
- Приём команд от компьютера или другого устройства по Serial в текстовом формате.
- Разбор строк с несколькими числовыми полями (например,
"x:120,y:85"). - Обработка данных от GPS-модулей, GSM-модулей и других устройств, передающих NMEA или AT-команды.
Дополнительные материалы
Больше базовых примеров можно найти в разделе built-in examples.
Подробное описание всех функций языка Arduino доступно в language reference.
Последнее обновление: 27.08.2015, SM