- PVSM.RU - https://www.pvsm.ru -
Я пришел к программированию в целом, и программированию Arduino в частности, полным нулем, около двух месяцев назад. Сейчас же, по ходу своей текущей деятельности я ощутил необходимость в освоении обработки строк на ардуино. Обычный поход в Google за информацией не обрадовал статьей, где все просто и понятно для чайников написано. И поэтому я здесь для того, чтобы рассказать о том, каким образом был реализован парсинг строк из последовательного порта и какие были встречены на пути подводные камни. Интересующихся прошу под кат.
Итак. Вот примерный алгоритм, которому я следовал:
А алгоритм работы основного тела программы прост:
#define led 13
String input_string = "";
const String Led_off = "switch led off";
const String Led_on = "switch led on";
bool led_running;
void setup() {
Serial.begin(9600);
}
void loop() {
while (Serial.available() > 0) {
char c = Serial.read();
if (c == 'n') {
Serial.print("Input_string is: ");
Serial.println(input_string);
switch ( parse(input_string, Led_off, Led_on) ) {
case 10:
led_running=false;
Serial.println("Switching off is done");
break;
case 11:
led_running=true;
Serial.println("Switching on is done");
break;
case 0:
Serial.println("invalid String");
break;
}
input_string = "";
digitalWrite(led, led_running);
} else {
input_string += c;
}
}
}
byte parse(String input_string, const String Led_off, const String Led_on) {
if (input_string.equals(Led_off) == true) {
return 10;
}
else if (input_string.equals(Led_on) == true) {
return 11;
}
else return 0;
}
Так, я не понял, что за дела? Почему не загорается светодиод? Ах да, как же это я запамятовал, в void setup нужно добавить:
pinMode(led, OUTPUT);
P.S.: Немаловажно установить монитор com порта в Arduino IDE в режим «Новая строка», т.к. в любом другом посылаемая строка не будет сопровождаться символом ее окончания 'n'.
P.P.S.: В холиваре по поводу того, что ардуино нинужна — участвовать не собираюсь, изучая основы программирования и алгоритмизации я ничего дурного не сделал.
P.P.P.S.: Если статья будет принята адекватно, напишу следующую о том, что у меня вышло с улучшением функционала функции парсинга. Ну, с богом!.
Автор: proudmore
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/arduino/103635
Ссылки в тексте:
[1] arduino.ru: http://arduino.ru/Reference
[2] Тип данных char: http://arduino.ru/Reference/Char
[3] Текстовые строки как массив символов: http://arduino.ru/Reference/String
[4] Созданный в версии 0.0.19 объект String: http://arduino.ru/Reference/StringObject
[5] подробное описание: http://arduino.ua/ru/prog/StringObject
[6] equals: http://arduino.ua/ru/prog/StringEquals
[7] Источник: http://geektimes.ru/post/265828/
Нажмите здесь для печати.