Сдвиговый регистр 74hc595 ардуино. Входы выходы ардуино.

Сдвиговый регистр 74hc595 ардуино. Входы выходы ардуино.

Сдвиговый регистр 74hc595 позволяет добавить Ардуино 8 выходных пинов. Подключив несколько сдвиговых регистров вы можете добавить неограниченное число выходных пинов в Ардуино. В видео рассмотрен принцип работы Сдвигового регистра 74hc595, его схема подключения. Описание встроенной функции в Ардуино shiftOut. Микросхема  74hc595 является выходным сдвиговым регистром при последовательном поступлении бит. 

На картинке не фейк. Вы правда можете сделать хоть 100 выходов.
При работе с микроконтроллерами Ардуино часто не хватает свободных пинов. Их всего-то штук 20. Это  зависит от модели.
Если вам надо подключить на выход много устройств, а вы упёрлись в нехватку пинов, то не спешите покупать дорогостоящую Мегу. 
Сегодня я расскажу как можно просто и дёшево расширить возможности своей Ардуино.
Чтобы сделать дополнительные выходы нужно всего лишь добавить микросхему - 74hc595
74HC595 — это восьмиразрядный сдвиговый регистр с последовательным вводом, последовательным или параллельным выводом информации, с триггером-защелкой и тремя состояниями на выходе.
Звучит страшно, но на самом деле всё просто. Подключаем к Ардуино 3 вывода, а на выходе получаем 8.

Это говорит о том, что с помощью одного сдвигового регистра вы можете добавить 8 выходов и управлять 8 устройствами, используя всего 3 вывода микроконтроллера.
 А соединив несколько регистров, вы можете вообще забыть про нехватку пинов. И вся прелесть таких регистров в том, что вы совсем не потеряете в скорости обмена, так как эта микросхема работает на частотах до 100 мГц, а это значительно больше, чем может выдать микроконтроллер.

Один такой сдвиговый регистр на 74hc595 добавляет 8 выходов, два 16 выходов, 3 - 24 выхода и так далее.
А задействованы будут  всего всё те же 3 пина микроконтроллера. 

В одном из  следующих видео я покажу как можно увеличить количество входов с помощью подобного регистра. Как это сделать вы можете посмотреть в этом видео. Правда оно немного старое и я скоро его пересниму. Но это видео не потеряло актуальности. 

Давайте посмотрим как выглядит сдвигового регистра на 74hc595. В разных даташитах он обозначается по разному. Поэтому я приведу 2 варианта.  

Это микросхема с 16 выводами по 8 с каждой стороны.
8(GND)  и 16(VCC) соответственно это земля и питание. 
Напряжение питания от 2 до 6 вольт. Так что она спокойно работает и  3 вольтовой логикой, например ESP8266. Если вам будет интересно, то я могу снять видео о подключении регистра к ESP8266.
Так же надо  10 вывод подключить к + питания, а 13 притянуть к земле.
Вывод 13  используется для включения/отключения выходов. Подав на него 5 вольт мы можем отключить выводы Q0-Q7. При этом значение, записанное в память регистра никуда не пропадёт. Это можно использовать для отключения светодиодного индикатора. Мы этим заниматься не будем, поэтому сразу подключаем к земле.
Тоже и с 10 выводом. отвечающим за Reset, только его надо подключить к питанию. Reset очищает память регистра, при подаче низкого уровня сигнала, т.е. логического нуля.
11  Вывод – это Вход тактовых импульсов. А при подаче 5 В происходит сдвиг битов влево, освобождая место для нового значения которые поступают на вход 14 вывода регистра.
12 вывод это Синхронизация, но все называют её защёлка. И она нужна для выгрузки данных из временной памяти. При приёме данных защёлка должна находиться в Низком состоянии. А для вывода значений должна быть переключена в Высокий уровень. То есть 0 и 1. Этим мы даём указание регистру установить  цифровые выходы регистра в нужное состояние.
14 вывод это вход последовательных данных (DATA).  принимает значение для выбранного бита. При получении высокого уровня, записывает в память единицу, а при получении низкого уровня сигнала, записывается 0.

Как работают эти 3 вывода.
Если на 14 единица и на 11 единица – то в память записывается 1
Если на 14 ноль, а на 11 единица – то в память записывается 0
Так мы записываем 8 бит информации. Но на выводах регистра ещё ничего нет. Пока всё хранится во внутренней памяти.
Это всё должно происходить при низком состоянии Защёлки.
digitalWrite(latchPin, LOW);                  // Защёлка для приёма
shiftOut(dataPin, clockPin, LSBFIRST, 0b1010101001);  // побитовый сдвиг
digitalWrite(latchPin, HIGH);                 // Защёлка передача

Для вывода информации наружу, надо подать на Защёлку высокий уровень. Теперь все нули и единицы находятся на выводах Q0 - Q7 микросхемы. И если выходе 1, то светодиод загорится.

Если у вас подключено больше 1 регистра, то надо записать ещё по одной строчке на каждый регистр.
digitalWrite(latchPin, LOW);                  // Защёлка для приёма
shiftOut(dataPin, clockPin, LSBFIRST, 0b1000000000);  // побитовый сдвиг
shiftOut(dataPin, clockPin, LSBFIRST, 0b0000000001);  // побитовый сдвиг
digitalWrite(latchPin, HIGH);                 // Защёлка передача

Сначала загружаются первые 8 бит. Затем загружаются вторая порция битов, продвигая предыдущие вперёд.
В этом примере загорится 1 и последний светодиод. То есть 1 и 16 светодиод.

Выводы Q0 - Q7 — это выходы регистра. Для сегодняшних примеров я подключил к каждому из них по светодиоду, что бы видеть как это всё будет работать. Так как я использую 2 регистра, то я подключил 16 светодиодов.
Не забываем, что светодиоды надо подключать через токоограничивающий резистор от 150 Ом.

9 выход отвечает за последовательное соединения таких же регистров. Его надо подключить к выводу 14 другого регистра.
А 11 и 12 выводы на обоих микросхемах надо соединить с аналогичными.

Принцип работы сдвигового регистра очень прост. 
Регистр получает 1 байт информации, то есть 8 бит. По одному биту на каждый выход микросхемы. 
Биты могут быть нулями или единицами. Соответственно если вы передали на один из выводов 0, то и на выходе тоже будет ноль. Например, для включения светодиода вам надо передать 1.

Например, передав 00001111 вы получите 4 выхода в состоянии низкого уровня, а другие 4 будут с высоким уровнем.
На выходы можно подключать не только светодиоды, но и, например реле и управлять ими программно или с помощью внешних кнопок.

Скетч.
Для своих примеров я использовал встроенную в Ардуино функцию shiftOut
Её формат такой.
shiftOut (dataPin, clockPin, bitOrder, value)

  • Первый параметр (dataPin) - это пин микроконтроллера, который соединен с 14 выводом сдвигового регистра.
  • Второй параметр (clockPin) - это пин микроконтроллера, который соединен с 11 выводом  сдвигового регистра.
  • Третий параметр (bitOrder) устанавливает направление чтения битов – слева направо (MSBFIRST) или справа налево (LSBFIRST).
  • И последний, четвёртый параметр (value) – это сами биты переданные из Ардуино.

Схема подключения.
Я покажу схему подклюяения двух регитров, а вы можете подключать любое количество. 
Объяснять я здесь ничего небуду. Вроде и так всё понятно. Если что не понятно, то спрашивайте.

На этом я заканчиваю ещё одно видео про работу с Ардуино. Надеюсь, что вам было всё понятно и интересно.  Если это так, то вы можете отблагодарить меня поставив лайки написав комментарий под этим видео.
Буду ждать. И до встречи в новых видео. У меня ещё много интересного.
 


Примеры использования сдвиговых регистров
Сдвиговый регистр 74hc595 ардуино. Входы выходы ардуино.
Как подключить сдвиговый регистр 74HC595 и управлять 16 реле с телефона
Входы и выходы на ардуино. Пример подключения сдвиговых регистров 74hc595 и 74hc165.
Сдвиговый регистр 74hc165 ардуино. Входы ардуино
Расширение возможностей Arduino с помощью сдвиговых регистров 74HC165 и 74HC595

Скетчи