Вот список плат Arduino, снабженных микроконтроллером со встроенным интерфейсом USB:
• Arduino Due ( ее также можно запрограммировать через вспомогательный микроконтроллер);
• LilyPad Arduino USB;
• Arduino Esplora;
• Arduino Leonardo;
• Arduino Micro.
- 124 -
6.5. Платы Arduino с возможностями USB-хоста
Некоторые платы Arduino обладают возможностями USB-хоста, что позволяет подсоединить к ним традиционные USB-устройства (клавиатуры, мыши, телефоны на базе Android). Естественно, для поддержки этих устройств потребуются дополнительные драйверы. Например, нельзя просто так соединить веб-камеру с Arduino Due и сразу же ожидать получения фотографий. Arduino Due поддерживает класс USB Host, что позволяет подключить к USB-порту клавиатуру или мышь. Arduino Mega ADK поддерживает протокол Android Open Accessory Protocol (АОА), что упрощает обмен данными между Arduino и устройством на базе Android. Прежде всего, это нужно для управления вводом-выводом Arduino из приложения, работающего на устройствах на базе Android.
Возможности USB-хоста поддерживают две платы: Arduino Due и Arduino Mega ADK (на основе Mega 2560).
6.6. Опрос Arduino с компьютера
Основная функция, которую обеспечивает последовательный интерфейс, - вывод данных с Arduino в терминал компьютера. В предыдущих главах об этом уже упоминалось. В этом разделе более детально остановимся на данном вопросе и позже рассмотрим примеры приложений, которые отвечают на данные, которые вы отправляете, вместо того, чтобы просто выводить их в терминал. Этот процесс одинаков для всех плат Arduino.
6.6.1. Пример вывода данных
Для вывода данных в терминал существуют три функции:
• Serial.begin (baud_rate);
• Serial.print ( "Message");
• Serial.println ("Message"),
где baud_rate и message- переменные, задаваемые пользователем.
Как вы уже знаете, функция Serial. begin() вызывается один раз в начале программы в setup(), чтобы настроить последовательный порт для связи. После этого можно вызвать функции Serial.print() и serial.println() для передачи данных в последовательный порт. Единственное различие между ними состоит в том, что функция serial.println() добавляет символ перевода в конце строки. Чтобы поэкспериментировать с этими функциями, соберем простую схему, подключив потенциометр к контакту A0 платы Arduino, как показано на рис. 6.6.
После подключения потенциометра загрузите простую программу, приведенную в листинге 6.1, которая выводит показания потенциометра в виде абсолютного значения и в процентах.
Рис. 6.6. Схема подключения потенциометра
Листинг 6.1. Тестовая программа ввода значений потенциомтре в последовательный порт - pot.ino
// Тестовая программа вывода значений потенциометра в последовательный порт
const int POT=0; // Подключение потенциометра к аналоговому входу A0
void setup()
{
Serial.begin(9600); // Инициализация последовательного порта на скорости 9600
}
- 126 -
void loop()
{
int val = analogRead(POT);// Чтение данных с потенциометра
int per = map(val, 0, 1023, 0, 100);// Перевод в процентное значение
Serial.print("Analog Reading: ");
Serial.print(val);// Вывод аналогового значения
Serial.print(" Percentage: ");
Serial.print(per);// Вывод значения в процентах
Serial.println("%");
delay(1000);// Ожидание 1 сек перед получением новых данных
}
6.6.2. Использование специальных символов
Вы также можете передавать различные "специальные" (или управляющие) символы, которые позволяют изменить форматирование последовательных данных при выводе на печать. Управляющий символ начинается с обратного слэша (\), за которым следует символ команды. Есть много специальных символов, но два из них представляют наибольший интерес: табуляция и переход на новую строку. Чтобы вставить символ табуляции, нужно добавить к строке управляющую последовательность \t. Символ перехода на новую строку вставляют, добавляя к строке \n.
Это особенно полезно, если вы хотите перейти на новую строку в начале передаваемой строки, а не в конце, как делает функция serial.println(). Если, по некоторым причинам, вы на самом деле хотите напечатать последовательность символов \n или \t в строке, это можно сделать с помощью последовательностей \\n или \\t, соответственно. Листинг 6.2 представляет собой модификацию листинга 6.1, но с использованием управляющих символов для отображения данных в табличной форме.
Листинг 6.2. Табличная разметка с использованием управляющих символов - pot_tabular.ino
// Табличная разметка с использованием управляющих символов
Читать дальше