Но курсор мыши перемещается по относительным координатам и передача Mouse.move() нулевого значения соответствует отсутствию движения по этой оси.
Передача положительного значения для оси х будет перемещать курсор мыши вправо, а отрицательного - влево. Чем больше величина, тем дальше будет перемещаться курсор. Таким образом, в функции readJoystick() значения от 0 до 1023 масштабируем к диапазону от -10 до 10.
Для устранения дрейфа предусмотрен небольшой запас в районе нуля, где курсор мыши должен быть неподвижен. Это связано с тем, что во время нахождения рукоятки джойстика в среднем положении фактическое значение может колебаться вокруг 512. Мы должны быть уверены, что при отпускании джойстика курсор мыши не будет двигаться самопроизвольно. Значения х и у передаются функции mouse.move(), что приводит к перемещению курсора на экране. Третий аргумент функции mouse.move() определяет движение колеса прокрутки.
Функция readButton() служит для определения состояния каждой из трех кнопок.
Функция определяет текущее состояние мыши с помощью команды mouse.isPressed() и опрашивает мышь через функции Mouse.press() и Mouse.release().
ПРИМЕЧАНИЕ
Демонстрационный видеоклип эмулятора мыши для управления компьютером с помощью джойстика можно посмотреть на странице http://www.exploringarduino.com/content/ch6.
Резюме
В этой главе вы узнали следующее:
• Как подключить плату Arduino к компьютеру через USB-преобразователь последовательного порта.
- 152 -
• Как осуществляется преобразование USB-интерфейса в последовательный порт на различных платах Arduino.
• Как можно отправлять данные с Arduino в компьютер через USB-интерфейс.
• Как форматировать отправляемые данные с помощью специальных символов.
• Что последовательные данные передаются в виде символа, который можно преобразовать в целые числа различными способами.
• Как отправлять данные в виде списков с разделителями-запятыми и преобразовывать их в команды с помощью встроенных функций.
• Как можно передать данные из Arduino внешнему приложению на языке Processing.
• Что можно отправлять данные из Processing-приложения на периферийные устройства, подключенные к Arduino.
• Что плата Arduino Leonardo может эмулировать клавиатуру и мышь.
Глава 7. Сдвиговые регистры
Список деталей
Для повторения примеров главы вам понадобятся следующие детали:
• плата Arduino Uno;
• USB-кабель А - В (для Uno );
• 8 красных светодиодов;
• 3 желтых светодиода;
• 5 зеленых светодиодов;
• 8 резисторов номиналом 220 Ом;
• сдвиговый регистр SN74HC595N в DIP-корпусе;
• инфракрасный датчик расстояния GP2YOA41 SKOF с кабелем;
• перемычки;
• макетная плата.
Электронные ресурсы к главе
На странице http://www.exploringarduino.com/content/ch7 можно загрузить программный код, видеоуроки и другие материалы для данной главы. Кроме того, листинги примеров можно скачать со страницы www.wiley.com/go/exploringarduino в разделе Downloads.
Что вы узнаете в этой главе
Чем дальше вы продвигаетесь в создании новых устройств на основе Arduino, тем чаще возникает мысль: "Что будет, если закончатся контакты платы Arduino?" Например, в одном из популярных проектов плата Arduino управляет множеством мигающих светодиодов. Осветите свою комнату! Иллюминируйте свой компьютер!
Украсьте светодиодами свою собаку! Последнее, пожалуй, перебор.
Но проблема остается. Как быть, если вы захотите переключать 50 светодиодов (или управлять другими цифровыми выходами), а все контакты ввода-вывода уже
- 154 -
задействованы? Вот тут и пригодятся сдвиговые регистры, позволяющие расширить возможности платы Arduino и отказаться от покупки более дорогого микроконтроллера с дополнительными контактами ввода-вывода. В этой главе вы узнаете, как работать со сдвиговыми регистрами, рассмотрите программное обеспечение и оборудование, необходимые для того, чтобы расширить возможности цифровых выходов платы Arduino. Подробно описанные примеры познакомят вас со сдвиговыми регистрами и помогут разобраться в проектировании устройств с большим количеством цифровых выходов.
В этой главе, как и в большинстве предыдущих, в качестве платформы используем Arduino Uno. Для экспериментов подойдет и любая другая плата Arduino, но выбор всегда должен быть обоснованным и оптимально соответствовать конкретному проекту. Вы спросите, почему бы не взять Arduino с большим количеством контактов, например Mega 2560 или Due? Конечно, это совершенно разумный способ для реализации устройств, где требуется множество контактов. Тем не менее вы, как инженеры, всегда должны помнить при проектировании обо всех нюансах. Когда вычислительной мощности Arduino Uno вполне хватает, но недостаточно цифровых выходов, можно просто добавить несколько сдвиговых регистров. Это будет дешевле и компактнее, чем выбор более мощной платы. Однако программный код окажется сложнее, и возможно потребуется больше времени для его отладки.
Читать дальше