Это особенно полезно, если вы хотите перейти на новую строку в начале передаваемой строки, а не в конце, как делает функция serial.println(). Если, по некоторым причинам, вы на самом деле хотите напечатать последовательность символов \n или \t в строке, это можно сделать с помощью последовательностей \\n или \\t, соответственно. Листинг 6.2 представляет собой модификацию листинга 6.1, но с использованием управляющих символов для отображения данных в табличной форме.
Листинг 6.2. Табличная разметка с использованием управляющих символов - pot_tabular.ino
// Табличная разметка с использованием управляющих символов
const int POT=0; // Подключение потенциометра к аналоговому входу A0
void setup()
{
Serial.begin(9600); // Инициализация последовательного порта на скорости 9600
}
void loop()
{
Serial.println("\nAnalog Pin\tRaw Value\tPercentage");
Serial.println("------------------------------------------");
- 127 -
for (int i = 0; i < 10; i++)
{
int val = analogRead(POT);//Чтение данных потенциометра
int per = map(val, 0, 1023, 0, 100);//Перевод в процентное значение
Serial.print("AO\t\t");
Serial.print(val);//Вывод аналогового значения
Serial.print("\t\t");
Serial.print(per);//Вывод процентного значения
Serial.println ( "%");
delay(1000);
//Ожидание 1 сек перед получением новых данных
}
}
При повороте движка потенциометра данные, выдаваемые в последовательный порт, должны выглядеть примерно так, как на рис. 6.7.
Рис. 6. 7. Скриншот терминала последовательного порта с данными в виде таблицы
Функции Serial.print() и Serial.println() позволяют вывести данные в конкретном формате. Есть опции для представления данных в различных форматах, включая шестнадцатеричный, восьмеричной и двоичный. По умолчанию принят деся
- 128 -
тичный формат ASCII. У функций Serial.print() и Serial.println() есть дополнительный второй параметр, который определяет формат выводимых данных.
В табл. 6.1 приведены примеры вывода одинаковых данных (число 23) в различных форматах и их отображения в мониторе последовательного порта.
Таблица 6.1. Тип последовательных данных
Формат | Код | Отображение данных |
Decimal | Serial.println(23); | 23 |
Hexadecimal | Serial.println(23,HEX); | 17 |
Octal | Serial.println(23,0CT); | 27 |
Binary | Serial.println(23,BIN); | 00010111 |
Что хорошего в общении с Arduino, если разговор идет только в одном направлении? Теперь, когда мы разобрались, как Arduino посьшает данные на компьютер, давайте попробуем это сделать. Вы, наверное, заметили, что в окне монитора последовательного порта Arduino IDE сверху есть поле ввода текста, а снизу - раскрывающееся меню (рис. 6.8).
Рис. 6.8. Скриншот терминала последовательного порта с полем ввода текста и выбранной опцией конца строки в раскрывающемся меню
Во-первых, убедитесь, что в раскрывающемся списке выбран пункт Newline. Опция в выпадающем меню определяет, что добавляется к вашим командам при отправке их в Arduino. Примеры в следующих разделах предполагают, что вы выбрали пункт Newline, который только добавляет \n в конец ваших данных, посьшаемых из поля ввода текста в верхней части окна монитора последовательного порта.
- 129 -
В отличие от некоторых других терминальных программ, монитор последовательного порта Arduino IDE при нажатии клавиши
Запустив монитор последовательного порта Arduino IDE, вы можете вручную отправлять команды в Arduino. Далее рассмотрим, как отправлять последовательности символов и как создать простой графический интерфейс для отправки команд.
У последовательного порта Arduino есть буфер. Другими словами, вы можете отправить несколько байт данных сразу, и Arduino поставит их в очередь и обработает их в том порядке, как задумано в вашей программе. Скорость передачи данных не особенно критична, а вот отправка слишком большого объема данных может вызвать переполнение буфера и потерю информации.
Проще всего заставить плату Arduino реагировать на все, что передано. Для этого плата Arduino должна запоминать, а затем выводить каждый полученный символ.
Чтобы сделать это, потреб ую тся две новые функции:
• Serial.available() - возвращает число символов (или байтов), которые на даый момент сохранены во входном последовательном буфере Arduino. Каждый раз, когда это число отлично от нуля, символ считывается и отправляется обратно на компьютер;
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии