Рубрики
Схемы на Arduino

Как использовать регистр сдвига 74HC595 с Arduino Uno

В плате Arduino Uno у нас есть 20 контактов ввода/вывода, то есть мы можем запрограммировать все эти 20 контактов на работу на ввод или вывод данных. По факту в микроконтроллере ATMEGA328P, являющемся «сердцем» платы, число выводов больше 20, однако часть их была использована для создания платы.

Однако для некоторых задач нам бы хотелось задействовать более чем 20 контактов (выводов). К примеру, если мы хотим спроектировать светодиодный куб 5x5x5, то нам для управления им понадобится 5×5+5=30 контактов. Для этих целей можно использовать последовательно-параллельный преобразователь или регистр сдвига. Регистр сдвига будет получать данные от платы Arduino Uno в последовательной форме и преобразовывать их в 8-битную параллельную форму.

Необходимые компоненты

Плата Arduino Uno
Соединительные провода
Светодиод (8 шт.)
Резистор 220 Ом
Регистр сдвига 74HC595
Макетная плата

Работа схемы и программы

В нашем проекте мы будем передавать 8 бит данных по последовательному каналу регистру сдвига. Регистр сдвига будет принимать эти данные в последовательной форме и хранить эти данные в своей памяти. Состояние памяти сдвигового регистра (то есть его выходы) мы будем показывать с помощью 8 светодиодов, подключённых к его контактам.

Для подключение регистра сдвига к Arduino UNO нам необходимо сделать две вещи:

1. pinMode();
2. shiftOut(dataPin, clockPin, data);

Сначала нам необходимо сконфигурировать любые 3 контакта Arduino UNO для работы на вывод данных. Затем нам нужно подсоединить цифровой контакт (digital pin), контакт времени (clock pin) и запирающий контакт (latch pin) регистра сдвига к этим контактам. После этого необходимо сообщить Arduino к каким ее контактам подключен регистр сдвига. Это делается с помощью команды “shiftOut(dataPin, clockPin, data);”. Данные (data) в этой команде можно задать в двоичном, десятичном или шестнадцатеричном формате. В это поле (data) записывается значение 8 бит данных, которые необходимо передать регистру сдвига.

Схема устройства представлена на следующем рисунке.

Disable latch – эта команда указывает регистру сдвига что ему не нужно показывать значения своих выходов в данный момент.

Мы будем передавать данные 8 раз последовательно, по времени, поэтому необходимо выполнить следующие команды: clock high – data – clock low- и т.д.

Enable latch – эта команда указывает регистру сдвига что ему нужно показать значения своих выходов.

Исходный код программы

Код программы достаточно простой, комментарии поясняют суть отдельных команд.

volatile int i=0;
void setup()
{
pinMode(2, OUTPUT); // конфигурируем контакт 2 на вывод данных
pinMode(1, OUTPUT); // конфигурируем контакт 1 на вывод данных
pinMode(0, OUTPUT); // конфигурируем контакт 0 на вывод данных
}

void loop()
{
for (int i=0;i<255;i++) //если счетчик цикла меньше чем 255
{
digitalWrite(2,HIGH);
shiftOut(0,1,2,i); // передаем 8 бит данных последовательно в каждый момент времени
digitalWrite(2,LOW);
delay(500); // ждем 0.5 секунды
}
}

Видео, демонстрирующее работу схемы

А вот и видео с мигающим кубом на Arduino.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *