Выбрать главу

• Как создавать звуки произвольной частоты и длительности с помощью функции tone().

• Что язык программирования Arduino поддерживает массивы, что удобно для перебора последовательностей данных.

• Что громкость можно регулировать потенциометром, соединенным последовательно с динамиком.

Глава 6. USB и последовательный интерфейс

Список деталей

Для повторения примеров главы вам понадобятся следующие детали:

• плата Arduino Uno;

• плата Arduino Leonardo;

• USB-кабель А - В (для Uno );

• USB-кабель А - микро В (для Leonardo );

• светодиод;

• RGB-светодиод с общим катодом;

• резистор номиналом 150 Ом;

• 3 резистора номиналом 220 Ом;

• 2 резистора номиналом 10 кОм;

• кнопка;

• фоторезистор;

• датчик температуры ТМР36;

• двух.координатный джойстик (Spark.Fun, Parallax или Adafruit);

• перемычки;

• провода;

• макетная плата;

• потенциометр.

Электронные ресурсы к главе

На странице http://www.exploringarduino.com/content/ch6 можно загрузить программный код, видеоуроки и другие материалы для данной главы. Кроме того, листинги примеров можно скачать со страницы www.wiley.com/go/exploringarduino в разделе Downloads.

- 119 -

Что вы узнаете в этой главе

Обычно для загрузки программ из компьютера в микроконтроллер нужны внешние аппаратные средства, такие как программатор AVR ISP MKII. Замечательная особенность любой платы Arduino - возможность запрограммировать ее через USB-интерфейс. Это позволяет программировать Arduino без специального программатора. В плату Arduino уже встроен программатор, что дает возможность напрямую подключаться к интегрированному универсальному синхронно/асинхронному приемопередатчику ATmega (USART). Через этот интерфейс можно обмениваться данными между Arduino и компьютером или между Arduino и другими устройствами, поддерживающими протокол (включая другие платы Arduino).

В этой главе рассматривается все, что вам необходимо знать о подсоединении Arduino к компьютеру через USB и передаче данных между ними. У различных плат Arduino разные возможности последовательного соединения, и мы рассмотрим проекты с каждым из них, чтобы ознакомившись со всеми, затем использовать их максимально эффективно. Обратите внимание, что в списке деталей в начале главы указано несколько плат Arduino. В зависимости от типа платы вы можете решить, какие разделы главы читать, какие примеры выбрать для выполнения и какие из перечисленных деталей понадобятся.

6.1. Реализация последовательного интерфейса в Arduino

Как уже упоминалось во введении к данной главе, в разных платах Arduino последовательный интерфейс выполнен по-разному. Различия есть как в аппаратной, так и в программной реализации: неодинаковы типы микросхем преобразователей и перечень поддерживаемых функций. Сначала мы рассмотрим различия аппаратных интерфейсов на платах Arduino.

ПРИМЕЧАНИЕ

Чтобы узнать больше о последовательном интерфейсе, посмотрите видеоурок на странице http://www.jeremyblum.com/2011 /02/07/arduino-tutorial-6-serial-communicationand-processing/[9] или на сайте издательства Wiley.

Для начала необходимо понять разницу между последовательным портом и USB.

Если вы молоды, то наверное даже не сталкивались с последовательным портом (или RS-232), т. к. его давно уже вытеснил USB-интерфейс. Внешний вид стандартного последовательного порта изображен на рис. 6.1.

Фирменные платы Arduino снабжены последовательным портом и подключаются к компьютеру с помощью 9-контактного разъема. В настоящее время еще можно встретить компьютеры, оснащенные такими портами, хотя давно существуют адаптеры от RS232 к USB. У микроконтроллера ATmega328, который установлен на

- 120 -

плате Arduino Uno, есть один аппаратный последовательный порт. Он соединен с контактами Тх (передача) и Rx (прием), к которым можно получить доступ на цифровых выводах 0 и 1. Как мы узнали в главе 1, плата Arduino снабжена загрузчиком, который позволяет программировать ее по последовательному интерфейсу.

Это как раз те выводы, которые "мультиплексированы" (т. е. выполняют более одной функции), они используются и как линии приема-передачи кабеля USB. Но последовательный порт и USB-интерфейс несовместимы. В Arduino эта проблема решается двумя способами. Первый - применение дополнительной микросхемыпреобразователя (так сделано на платах Arduino Uno). Второй способ- использование микроконтроллера, имеющего встроенный USB-интерфейс (например, микроконтроллер 32U4 в Arduino Leonardo ).

Рис. 6.1. Последовательный порт

6.2. Платы Arduino с внутренним или внешним преобразователем FTDI

вернуться

9

На русском: http://wiki.amperka.ru/видеоуроки:6-serial-и-processing.