Применение сдвигового регистра CD74HC595

OOM
Offline
Зарегистрирован: 07.01.2017

Прошу помощи. В интернете много информации по использованию регистра 74Hc595 как увеличителя портов, но там используются примеры для управления бегущими огоньками на светодиодах, а мне нужно, что бы при нажатии на кнопку срабатывал определенный выход регистра и зажигал светодиод, наример кнопка1 зажигает светодиод 1, кнопка2 зажигает светодиод 2 и т.д. Планирую использовать каскад из 3 или 4 регистров. Как все это реализовать. Заранее благодарен.

Logik
Offline
Зарегистрирован: 05.08.2014

Предлагаю выкинуть 74Hc595 и ардуино, Кнопки подключить к соответствующим светодиодам, резисторы не забыть.

ПС. Благодарить не надо, помощ безвозмездна.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

OOM пишет:

Как все это реализовать.

Скачать и почитать даташит, разобраться как он работает. Там всё написано и показано на картинках с графиками. Ну и статей в интернете достаточно. И да, для вашей задачи он не совсем подходит. Это 8-битный последовательно-параллельный сдвиговый регистр. То есть, чтобы он выставил что-то на выходах - на один вход надо последовательно загнать восемь значений подряд (байт), потом защёлкнуть (latch) и все эти восемь значений появяться одновременно на всех восьми выходах. 

bizzon
Offline
Зарегистрирован: 29.03.2016

Кнопок подключать столько же планируете , сколько и выходов у регистров в сумме будет?

OOM
Offline
Зарегистрирован: 07.01.2017

Да, кнопок будет столько же (около 70 шт), планирую сделать пиропульт, использую Мегу, но все равно портов выхода не хватает.

OOM
Offline
Зарегистрирован: 07.01.2017

Статьи в инете рассказывают как сделать бугущие огоньки, но мне это не надо. Если этот регистр не подходит, что тогда можно использовать. Мне нужно, что бы как минимум 70 кнопок.

bizzon
Offline
Зарегистрирован: 29.03.2016

Я так понял, фейерверки запускать? Либо вручную, либо по программе? В принципе, и 595 регистров достаточно. А вот 70 кнопок опросить - матричную клавиатуру будете мастерить?

OOM
Offline
Зарегистрирован: 07.01.2017

Нет, просто кнопка. С матричной клавиатурой для меня это темный лес.

OOM
Offline
Зарегистрирован: 07.01.2017

Вот нашарил код.

[code]
int dataPin = 11;      // pin 14 on the 74HC595
int latchPin = 8;      // pin 12 on the 74HC595
int clockPin = 12;      // pin 11 on the 74HC595
int Btn1 = 5;
int Btn2 = 6;
int Btn3 = 7;
 
int pin1 = 0;
int pin2 = 0;
int pin3 = 0;
int pin4 = 0;
int pin5 = 0;
int pin6 = 0;
int pin7 = 0;
int pin8 = 0;
 
void setup()
{
  pinMode(dataPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(Btn1, INPUT_PULLUP);
  pinMode(Btn2, INPUT_PULLUP);
  pinMode(Btn3, INPUT_PULLUP);
}
 
void loop() {
 
  {
    if (digitalRead(Btn1) == HIGH) {
      pin1 = (HIGH);
      pin2 = (HIGH);
      pin3 = (HIGH);
    }
    else {
      pin1 = (LOW);
      pin2 = (LOW);
      pin3 = (LOW);
    }
 
    if (digitalRead(Btn2) == HIGH) {
      pin4 = (HIGH);
      pin5 = (HIGH);
      pin6 = (HIGH);
    }
    else {
      pin4 = (LOW);
      pin5 = (LOW);
      pin6 = (LOW);
    }
 
    if (digitalRead(Btn3) == HIGH) {
      pin7 = (HIGH);
      pin8 = (HIGH);
    }
    else {
      pin7 = (LOW);
      pin8 = (LOW);
    }
  }
 
  {
    digitalWrite(clockPin, LOW);
    digitalWrite(dataPin, pin1);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
 
    digitalWrite(dataPin, pin2);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
 
    digitalWrite(dataPin, pin3);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
 
    digitalWrite(dataPin, pin4);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
 
    digitalWrite(dataPin, pin5);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
 
    digitalWrite(dataPin, pin6);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
 
    digitalWrite(dataPin, pin7);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
 
    digitalWrite(dataPin, pin8);
    digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);
    digitalWrite(clockPin, HIGH);
 
  }
}
 
Код получится громоздским если подключить еще три регистра.
У кого будут какие мысли, что бы его сделать как то более компактным.

 

bizzon
Offline
Зарегистрирован: 29.03.2016

Ну полюбому столько портов у Меги нет. Либо делать матричную клавиатуру 7Х10 -зто 17 портов (напрямую к Меге), либо подключать кнопки через мультиплексоры -  около 10 портов (будут просто кнопки на массу или на плюс).

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

strarbit
Offline
Зарегистрирован: 12.06.2016

OOM, есть то, что  Вы хотите  на регистрах с перламутровыми пуговицами.

Могу продать, дорого webserpantin_gmail.com

OOM
Offline
Зарегистрирован: 07.01.2017

Спасибо за ссылку очень интересная информация. У меня по задумке что-то среднее между двумя предложенными вариантами. 8 каналаов по радио использую МР3328 и МР3330 и 60 проводная.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Logik прав однако. Взять 70 кнопок и подключить к ним как и положено 70 светодиодов или чего там с запалом через реле или пищалки какие.. и тыкай себе ни хачу .. только зачем тут ардуино, да ещё и мега? :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Посмотрите, может, это разрешит Ваши проблемы: https://ru.aliexpress.com/item/Promotion-5-Pcs-4-Latching-Type-Green-LED...

Кнопки с фиксацией и светодиодной подсветкой.

Я при их помощи вместо пар регистров 165/595 обошелся только 165 регистрами.