Читаем Программируем Arduino. Профессиональная работа со скетчами полностью

Хост USB на плате Arduino Due

Плата Arduino Due способна действовать как встроенный хост USB. На момент написания этих строк данная возможность рассматривалась командой разработчиков Arduino как экспериментальная. Загляните в официальную документацию Arduino (http://arduino.cc/en/Reference/USBHost), чтобы определить текущее состояние дел в этой области и выяснить, произошли ли изменения в способе ее использования.

Модель Due не имеет полноразмерного разъема USB, к которому можно было бы подключить клавиатуру или мышь. Для подключения таких устройств требуется использовать кабель Micro USB OTG Host Cable (рис. 11.5). На этом снимке к плате Arduino Due подключен адаптер беспроводной клавиатуры, но точно так же можно подключить обычную клавиатуру USB.

Библиотеки поддержки USB в Arduino Due имеют более простой интерфейс, чем библиотека обслуживания хоста USB, и вместо скан-кодов

Рис. 11.5. Arduino Due с подключенным кабелем Micro USB OTG Host Cable и клавиатурой

возвращают коды ASCII нажатых клавиш. Следующий пример демонстрирует взаимодействие с клавиатурой. Он просто выводит в монитор последовательного порта символы, соответствующие нажатым клавишам:

// sketch_11_05_keyboard_due

#include

USBHost usb;

KeyboardController keyboard(usb);

void setup()

{

  Serial.begin(9600);

  Serial.println("Program started");

  delay(200);

}

void loop()

{

  usb.Task();

}

// Эта функция обрабатывает нажатия клавиш

void keyPressed()

{

  char key = keyboard.getKey();

  Serial.write(key);

}

Библиотека KeyboardController вызывает функцию keyPressed в скетче каждый раз, когда происходит нажатие какой-либо клавиши. Аналогично можно перехватывать отпускания клавиш с помощью функции keyReleased. Чтобы определить нажатую клавишу, необходимо вызвать следующие функции объекта keyboard:

• getModifiers — возвращает битовую маску с информацией об удерживаемых нажатыми клавишах-модификаторах (Shift, Ctrl и т.д.). Коды клавиш модификаторов можно найти по адресу http://arduino.cc/en/Reference/GetModifiers;

• getKey — возвращает код ASCII текущей нажатой клавиши;

• getOemKey — возвращает скан-код клавиши.

Взаимодействие с мышью осуществляется так же просто и с применением похожего шаблона. Следующий пример выводит буквы L, R, U или D в зависимости от направления перемещения указателя мыши — влево, вправо, вверх или вниз:

// sketch_11_06_mouse_due

#include

USBHost usb;

MouseController mouse(usb);

void setup()

{

  Serial.begin(9600);

  Serial.println("Program started");

  delay(200);

}

void loop()

{

  usb.Task();

}

// Эта функция обрабатывает перемещения мыши

void mouseMoved()

{

  int x = mouse.getXChange();

  int y = mouse.getYChange();

  if (x > 50) Serial.print("R");

  if (x < -50) Serial.print("L");

  if (y > 50) Serial.print("D");

  if (y < -50) Serial.print("U");

}

Помимо mouseMoved в скетч можно добавить следующие функции для обработки других событий от мыши:

• mouseDragged — это событие генерируется, когда происходит перемещение мыши с нажатой левой кнопкой;

• mousePressed — это событие генерируется, когда происходит нажатие кнопки мыши, и должно сопровождаться вызовом mouse.getButton с аргументом LEFT_BUTTON, RIGHT_BUTTON или MIDDLE_BUTTON для определения нажатой кнопки — возвращает true, если была нажата кнопка, соответствующая аргументу;

• mouseReleased — это событие является парным для mousePressed и генерируется, когда происходит отпускание кнопки.


В заключение

В этой главе мы познакомились с несколькими способами использования Arduino с устройствами USB.

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

12. Программирование сетевых взаимодействий

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


Сетевое оборудование

У вас на выбор есть несколько вариантов подключения Arduino к сети. Можно использовать плату расширения Ethernet с Arduino Uno, или приобрести модель Arduino со встроенным адаптером Ethernet, или раскошелиться и приобрести плату расширения WiFi для подключения к беспроводной сети.


Плата расширения Ethernet

Перейти на страницу:

Похожие книги

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных
Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных