Сдвиговый регистр 74HC165 или как увеличить количество входов Arduino

74HC165, микросхема стандартной логики, входной сдвиговый регистр, позволяет увеличивать количество цифровых входов микроконтроллера. Регистр преобразует параллельный входной сигнал в последовательный выходной, который в последствии считывается микроконтроллером.

Распиновка микросхемы:

  • 1 нога, PL, Иногда называется SH/LD, При переходе с высокого значения на низкое, регистр захватывает состояние на восьми входных контактов (D0-D7).
  • 2 нога, CP, Тактовый вход, аналогичен SCK в интерфейсе SPI.
  • 11-14, 3-6 ноги, D0-D7, Последовательный вход.
  • 7 нога, «Q7, Инвертированный последовательный выход, MISO.
  • 8 нога, GND, Масса
  • 9 нога, Q7, Последовательный выход, MISO.
  • 10 нога, DS, Последовательный выход, служит для каскадного подключения регистров.
  • 15 нога, «CE, Сlock enable, Включение тактирования.
  • 16 нога, Vcc, Питание.

Подключение к Arduino:

 Видео:

 

Код из видео
const uint8_t data_pin = 11; // 9 pin, Q7 /данные или MISO
const uint8_t shld_pin = 8; // 1 pin, !PL /защелка
const uint8_t clk_pin = 12; // 2 pin, CP /такты или SCK
const uint8_t ce_pin = 9; // 15 pin, !CE / чипселект

void setup() {
  Serial.begin(9600);
  pinMode(shld_pin, OUTPUT);
  pinMode(ce_pin, OUTPUT);
  pinMode(clk_pin, OUTPUT);
  pinMode(data_pin, INPUT); 
    // выключаем регистр
  digitalWrite(clk_pin, HIGH);
  digitalWrite(shld_pin, HIGH);
}

void loop() {
    // Дергаем защелку, чтобы захватить состояние входов
  digitalWrite(shld_pin, LOW);
  delayMicroseconds(5);
  digitalWrite(shld_pin, HIGH);
  delayMicroseconds(5); 
    // это действительно нужно сделать
  pinMode(clk_pin, OUTPUT);
  pinMode(data_pin, INPUT); 
    // считываем байт из регистра
  digitalWrite(ce_pin, LOW);
  uint8_t the_shifted = shiftIn(data_pin, clk_pin, MSBFIRST);
  digitalWrite(ce_pin, HIGH);
    // отправлем в монитор порта
  Serial.print(the_shifted);
  Serial.print(" - ");
  Serial.println(the_shifted, BIN);
  delay(1000);
}