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

• Как подключить плату 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 вполне хватает, но недостаточно цифровых выходов, можно просто добавить несколько сдвиговых регистров. Это будет дешевле и компактнее, чем выбор более мощной платы. Однако программный код окажется сложнее, и возможно потребуется больше времени для его отладки.

7.1. Что такое сдвиговый регистр

Сдвиговый регистр - это устройство, которое принимает поток последовательных битов и одновременно выводит их значения на параллельных контактах ввода-вывода. Регистры сдвига часто применяются для управления большим количеством светодиодов, например, семисегментными индикаторами или светодиодными матрицами. Прежде чем обсуждать взаимодействие сдвиговых регистров с Arduino, посмотрим на рис. 7.1, где изображены входы и выходы регистра сдвига. Далее будет показано, как состояние входов влияет на выходы.

Рис. 7.1. Входы и выходы регистра сдвига

Восемь кругов схематично изображают светодиоды, соединенные с восемью выходами сдвигового регистра. Три входа - это линии для подключения сдвигового регистра к плате Arduino.

- 155 -

7.2. Последовательная и параллельная передача данных

Существуют два способа передачи нескольких битов данных. Напомним, что Arduino, как и все микроконтроллеры, представляет собой цифровое устройство, т. е. "понимает" только "0" и "1". Если вы хотите управлять восьмью светодиодами, необходимо передать 8 бит информации. Ранее мы это делали в параллельном режиме с помощью функций digitalWrite() и analogWrite(). В качестве примера параллельной передачи данных, предположим, что нам необходимо включить 8 светодиодов, подключенных к 8 цифровым выходам. При этом все биты будут переданы на цифровые контакты примерно в одно время. В главе 6 была описана последовательная передача данных, при которой за фиксированный интервал времени передается 1 бит данных. Сдвиговые регистры позволяют легко конвертировать последовательные и параллельные методы передачи данных. Эта глава посвящена регистрам последовательно-параллельного сдвига (SIPO), которые называют просто регистрами сдвига. С их помощью можно принимать данные последовательно, а выводить параллельно на выходы регистра. Кроме того, можно каскадировать сдвиговые регистры и управлять множеством цифровых выходов, используя всего три контакта Arduino.