Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Строки chevron_right String toInt() — преобразование строки в целое число

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().

Как проверить результат

  1. Загрузите скетч на плату.
  2. Откройте монитор порта (Ctrl+Shift+M), установите скорость 9600 и режим окончания строки Newline.
  3. Введите 42 и нажмите «Отправить» — плата ответит 42.
  4. Введите hello — плата ответит 0.
  5. Введите 99abc — плата ответит 99.

Где пригодится

  • Приём команд от компьютера или другого устройства по Serial в текстовом формате.
  • Разбор строк с несколькими числовыми полями (например, "x:120,y:85").
  • Обработка данных от GPS-модулей, GSM-модулей и других устройств, передающих NMEA или AT-команды.

Дополнительные материалы

Больше базовых примеров можно найти в разделе built-in examples.

Подробное описание всех функций языка Arduino доступно в language reference.

Последнее обновление: 27.08.2015, SM