Сдвиговый регистр 74HC165 или как увеличить количество входов Arduino
ฝัง
- เผยแพร่เมื่อ 12 ธ.ค. 2017
- Входной сдвиговый регистр 74HC165 преобразует параллельный вход в последовательный. Позволяет увеличивать количество цифровых входов микроконтроллера
🐾Купить модуль CJMCU-165 на али: alii.pub/69vejr
Десяток 74HC165 в DIP - alii.pub/69vekc
🐾тестовая версия arduinolab.pw/index.php/2018/0...
🐾доп инфа learn.sparkfun.com/tutorials/...
🐾поддержать канал материально.
www.donationalerts.ru/r/arduin... - วิทยาศาสตร์และเทคโนโลยี
чувак, ты лучший. Я тонну информации перерыл по подключению этого регистра, а ты за 2 минуты объяснил больше и понтяней.
При использовании данного скетча некорректно читается крайний бит.
Чтобы это исправить нужно перед защелкиванием добавить строчку :
digitalWrite(clk_pin, HIGH);
Спасибо добрый человек!
Ох это бы видео мне 3 года назад, когда пианино на 2 октавы собирал :) но сам разобрался тогда
Про 74HC165 интересно
у вас на сайте про этот регистр, есть опечатки:
"11-14, 3-6 ноги, D0-D7, Последовательный вход" .-- параллельный
"10 нога, DS, Последовательный выход,.." -- вход
спасибо за видео ,а как на неё подключить 4 энкодера?
всем хорошего настроения, а как мне на эту микруху подсоединить 3 энкодера ?заранее спс
Сделайте пожалуйста видео как подключить через один 74hc164 или 74hc595 к семисегментному индикатору 4 разряда и что бы можно было вывести значение допустим с таходатчика через Ардуино
th-cam.com/video/9mpydTBuWts/w-d-xo.html
th-cam.com/video/XKsj-MCv4Is/w-d-xo.html
У меня имеется код (ниже). Помогите мне пожалуйста вывести значения из таходатчика, а то как я уже только не пробовал ковырять код но все равно ничего не получалось.
Это код для 74hc164
int clockPin = 6;
int dataPin = 7;
// Пины разрядов цифер
int pins_numbers[4] = {2, 3, 4, 5};
// Биты для отображения цифер от 0-9
byte numbers_array[12] = {
B11000000, B11011011, B10000110, B10010010, // 0 1 2 3
B10011001, B10110000, B10100000, B11011010, // 4 5 6 7
B10000000, B10010000, B10111111, B01100011 // 8 9 - о
};
void setup() {
//устанавливаем режим OUTPUT
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
for(int i; i
Если в устройстве дофига узлов и дофига кода то матричную клавиатуру лучше не подключать, ибо может пропустить нажатие кнопки, через этот регистр подключаю джамперы и дип переключатели для настройки, очень удобно.
Вообще можно подключать все что дает длительный логический сигнал, иначе получение данных с регистра придется получать очень часто, и на основные задачи времени мало останется.
Спасибо за отличное видео!!! А можно видео с примером как например с помощью єтого регистра подключить каливиатуру 4*3 ?
Простым и нормальным способом-никак... Эта микросхема не для динамического сканирования..
как так выходит, что все схемы изображают младшим битом A (11 нога) а по факту младший бит берется с последней ноги H.
то есть все схемы говорят нам, что начало в А- ABCDEFGH, но если подаем на А высокий уровень то получаем 00000010=2
при подключении HABCDEFG - все становится на свои месте, и даже на видео тут видно что при замыкании первого контакта изменяется второй бит а не первый. по даташиту начало в А.но по факту начало с H. это какие то китайские микросхемы или как?
Наверное уже несвоевременно, но все же: чтобы все работало корректно нужно перед чтением сдвигового регистра выставить clk_pin в высокое состояние! и все будет работать по даташиту, а по вашему методу потеряется старший разряд.
@@user-sg9ds9dn3h подключил 2шт. CLK - CLK, SH/LD - SH/LDLD, SI-SO. И почему то не читает младший бит во втором.
Не стало понятнее. Как именно увеличивает количество портов? Для прерываний эти пины потом можно использовать?
а где там написано про порт ?
th-cam.com/video/R-vSFEieVTA/w-d-xo.html
А я пользуюсь 74HC597.
Что-то в этот раз слишком сложно, для меня.
но всё равно -ЛАЙК
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);
}
//это действительно надо делать
зачем нужно так делать?
Недавно попробовал сделать джойстик на этой микросхеме )
vk-book.ru/sdvigovyj-registr-74hc165-i-adruino-dobavlenie-pinov/