Как Char разделить в массив по знаку в Arduino?

Для разделения символа типа Char в массив по определенному знаку в программе на Arduino можно использовать функции из библиотеки String или функции работы со строками, такие как strtok() или strchr().

Обратите внимание, что Char массив в Arduino представляет собой массив символов типа Char, а не строку типа String, которая имеет дополнительные функции для работы со строками. Поэтому, если вы хотите разделить Char массив по определенному знаку, вам потребуется использовать другие функции и алгоритмы.

Одним из способов разделения Char массива на подстроки по определенному знаку является использование функции strtok(). Функция strtok() разделяет строку на подстроки, используя указанный разделитель.

Вот пример, как использовать функцию strtok() для разделения Char массива по определенному знаку:

char input[] = "Hello,World";
char *token = strtok(input, ",");
while(token != NULL) {
  Serial.println(token);
  token = strtok(NULL, ",");
}

В этом примере, мы используем функцию strtok() для разделения строки "Hello,World" на две подстроки, используя разделитель ",". Функция strtok() вернет указатель на первую подстроку и заменит разделитель в строке нулевым символом. Затем, вызов функции strtok(NULL, ",") вернет следующую подстроку, а NULL означает, что функция должна продолжить работу с предыдущей строкой.

Вы можете использовать этот метод для разделения Char массива на подстроки по любому другому знаку или последовательности символов, указав его вместо ",".

Если вы хотите использовать функции из библиотеки String, то можете преобразовать Char массив в объект String и использовать функцию split(), которая разделяет строку на подстроки по указанному разделителю.

Вот пример, как это можно сделать:

char input[] = "Hello,World";
String str(input);
String delim = ",";
int count = str.length() - str.replace(delim, "").length() + 1;
String substr[count];
for (int i = 0; i < count; i++) {
  int pos = str.indexOf(delim);
  if (pos == -1){
    substr[i] = str;
  } else {
    substr[i] = str.substring(0, pos);
    str = str.substring(pos + delim.length());
  }
  Serial.println(substr[i]);
}

В этом примере мы создаем объект String из Char массива, затем используем функцию replace() для удаления всех разделителей из строки и вычисляем количество подстрок. Затем, мы создаем массив String для хранения каждой подстроки.
Затем, мы используем цикл для разделения строки на подстроки: находим позицию разделителя с помощью функции indexOf(), и если разделитель найден, то получаем подстроку с помощью функции substring() и изменяем значение исходной строки для продолжения разделения следующей подстроки. Если разделитель не найден, то весь остаток строки становится последней подстрокой.
И, наконец, мы выводим каждую подстроку в монитор порта с помощью функции println().

Учтите, что функции из библиотеки String могут занимать больше памяти, чем функции работы со строками, такие как strtok(). Поэтому, если у вас ограниченные ресурсы памяти, лучше использовать функцию strtok().