Преобразование последовательных показаний в целые числа в Arduino: подробное руководство

Последовательная связь играет решающую роль в проектах Arduino, позволяя микроконтроллеру обмениваться данными с внешними устройствами, такими как датчики, дисплеи и компьютеры. Часто данные, полученные через последовательный порт, необходимо преобразовать из строкового формата по умолчанию в числовые значения, например целые числа. В этой статье блога мы рассмотрим несколько методов преобразования последовательных показаний в целые числа в Arduino, сопровождаемые примерами кода. Независимо от того, являетесь ли вы новичком или опытным энтузиастом Arduino, это руководство предоставит вам ряд методов эффективной обработки последовательных данных.

Методы преобразования последовательных показаний в целые числа:

  1. parseInt():
    Один из самых простых способов преобразования последовательных показаний в целые числа — использование функции parseInt(). Эта функция анализирует входящие последовательные данные до тех пор, пока не найдет нецифровой символ и не вернет проанализированное целочисленное значение. Вот пример фрагмента кода:
void setup() {
  Serial.begin(9600);
}
void loop() {
  if (Serial.available()) {
    int value = Serial.parseInt();
    // Use the parsed integer value
    // ...
  }
}
  1. toInt():
    Функция toInt()— еще один удобный метод преобразования последовательных данных в целые числа. Это функция-член класса Arduino String, которую можно использовать, когда вам нужен больший контроль над процессом анализа строки. Вот пример:
void setup() {
  Serial.begin(9600);
}
void loop() {
  if (Serial.available()) {
    String data = Serial.readString();
    int value = data.toInt();
    // Use the converted integer value
    // ...
  }
}
  1. atoi():
    Функция atoi() — это стандартная функция C/C++, преобразующая строку в целое число. Его также можно использовать в эскизах Arduino для преобразования последовательных данных в целые числа. Вот пример:
void setup() {
  Serial.begin(9600);
}
void loop() {
  if (Serial.available()) {
    char buffer[32]; // Allocate a buffer for the incoming string
    Serial.readBytesUntil('\n', buffer, sizeof(buffer));
    int value = atoi(buffer);
    // Use the converted integer value
    // ...
  }
}
  1. Пользовательский синтаксический анализ.
    Если ваши последовательные данные имеют определенный формат, который отличается от простых целых чисел, вам может потребоваться реализовать собственную логику синтаксического анализа. Этот подход предполагает извлечение соответствующих числовых символов из полученной строки и преобразование их в целое число с использованием таких методов, как манипуляция символами или регулярные выражения. Вот упрощенный пример, в котором предполагается, что входящие данные содержат только цифры:
void setup() {
  Serial.begin(9600);
}
void loop() {
  if (Serial.available()) {
    String data = Serial.readString();
    int value = 0;
    for (int i = 0; i < data.length(); i++) {
      char digit = data.charAt(i);
      value = value * 10 + (digit - '0');
    }
// Use the converted integer value
    // ...
  }
}

Преобразование последовательных показаний в целые числа — обычная задача в проектах Arduino. В этой статье мы рассмотрели несколько методов достижения этой цели, в том числе использование встроенных функций, таких как parseInt()и toInt(), а также реализацию собственной логики синтаксического анализа. Используя эти методы, вы можете эффективно обрабатывать последовательные данные и открывать широкий спектр возможностей в ваших приложениях Arduino.