Проблема с каскадом регистров 74HC595N

Тема в разделе "Arduino & Shields", создана пользователем Almightily, 16 май 2017.

  1. Almightily

    Almightily Нерд

    Добрый день.
    Я использую каскад регистров 74HC595N в количестве пяти штук для управления светодиодами. Подключаю их и строкой :
    Код (C++):
    shiftOut(dataPin, clockPin, MSBFIRST, 0);
    выключаю их. Однако только первые 8 исправно тухнут, а остальные светодиоды светятся как попало, причем всегда в одном и том же порядке. Подскажите что я делаю не так и почему не гаснут все?
     
  2. qwone

    qwone Гик

    Вы прикалываетесь или тупите. Дам задачу проще. У меня 5 светодиодов. Почему когда я выключаю 1, остальные не тухнут.

    Ответ вашей задачи такой
    Код (C++):

    digitalWrite(LanchPin,0);
    for (byte i=0;i<5;++1)shiftOut(dataPin, clockPin, MSBFIRST, 0);
    digitalWrite(LanchPin,1);
     
     
  3. Almightily

    Almightily Нерд

    Мне тоже так казалось, однако это не работает по какой-то причине
    Код (C++):
    digitalWrite(latchPin, LOW);
    for (byte i=0;i<5;i++){
    shiftOut(dataPin, clockPin, MSBFIRST, 0);
    }
    digitalWrite(latchPin, HIGH);
     
  4. qwone

    qwone Гик

    Я предпочитаю использовать это.Пакет https://yadi.sk/d/WaW7iUgj3GPUvp
    Код (C++):
    /*Wire_74HC595.ino
    */

    const int Latch_pin = 3;
    const int CLK_pin  = 4;
    const int Data_pin = 2;
    const int max_device = 4;
    bool stat = 0;
    #include "Out_74HC595.h"
    Out_74HC595 Out(Latch_pin, CLK_pin, Data_pin, max_device);
    #include "Cl_led.h"
    Cl_led led[] = {
      Cl_led(&Out, 0, 1, 0),  // шина-Out,1 горит,1-я 74HC595,D0
      Cl_led(&Out, 0, 1, 1),  // шина-Out,1 горит,1-я 74HC595,D1
      Cl_led(&Out, 0, 1, 2),  // шина-Out,1 горит,1-я 74HC595,D2
      Cl_led(&Out, 0, 1, 3)   // шина-Out,1 горит,1-я 74HC595,D3
    };
    void setup() {
      Out.setup();
      for (byte i = 0; i < 4; i++)  led[i].setup();
      led[0].blink(100);
      led[1].blink(150);
      led[2].blink(500);
      led[3].blink(1000);
    }

    void loop() {
      for (byte i = 0; i < 4; i++)  led[i].loop();
    }