Вклучение каналов мультиплексером (CD74HC4067)

Тема в разделе "Arduino & Shields", создана пользователем Maris, 18 ноя 2018.

  1. Maris

    Maris Нерд

    Неужели мультиплексер (CD74HC4067) за раз может включить только один канал?
     
  2. parovoZZ

    parovoZZ Гуру

    Если надо несколько каналов на выход - сдвиговый регистр в помощь.
     
  3. Maris

    Maris Нерд

    По правде говоря все 16...и несколько раз.А регистр типа 74HC595?
     
  4. странно требовать от переключателя большего.

    что регистр типа?
     
  5. Maris

    Maris Нерд

    // сдвиговый регистр в помощь.//

    А регистр типа 74HC595?
     
  6. Maris

    Maris Нерд

    ОК будем пробовать...
     
  7. Вы бы написали четко, что вам надо, а то опять не то может оказаться.
     
  8. Maris

    Maris Нерд

    Всё тоже...;-)...подключить к току мои отдельные(какие то из 60 а может один..а может все) куски железной дороги...с минимальным количеством железа.
     
  9. parovoZZ

    parovoZZ Гуру

    А чего не хочешь как на настоящей жд - передавать по рельсам информацию? И не надо кучи проводов. На каждом локомотиве токовый пульсатор.
     
  10. ostrov

    ostrov Гуру

    595ый регистр на выход, 165ый на вход. Что надо то?
     
  11. Maris

    Maris Нерд

    Конструкты библиотек в цыкле...неполучается.

    Спаял 16 штук 7474HC595 по четире на четире dataPin вихода...всё прекрасно паботает изпользуя <Shift595.h> ..идеально так как хотелось...НО..
    Ненравитса дубовый подход типа...

    #include <Shift595.h>

    #define dataPin0 A0
    #define dataPin1 A3
    #define dataPin2 3
    #define dataPin3 6

    #define latchPin0 A1
    #define latchPin1 A4
    #define latchPin2 4
    #define latchPin3 7

    #define clockPin0 A2
    #define clockPin1 A5
    #define clockPin2 5
    #define clockPin3 8
    #define Sh_R_line 4
    int numOfRegisters[]= {4,4,4,4} ; //здесь цыкл возможен был

    Shift595 Sh_R0(dataPin0, latchPin0, clockPin0, numOfRegisters[0]);
    Shift595 Sh_R1(dataPin1, latchPin1, clockPin1, numOfRegisters[1]);
    Shift595 Sh_R2(dataPin0, latchPin2, clockPin2, numOfRegisters[2]);
    Shift595 Sh_R3(dataPin1, latchPin3, clockPin3, numOfRegisters[3]);

    void Sh_R0_stop_pin(int i){Sh_R0.setRegisterPin(i-1, LOW);Sh_R0.setRegisterPin(i+7, LOW);}
    void Sh_R0_forward(int i){Sh_R0.setRegisterPin(i-1, HIGH);Sh_R0.setRegisterPin(i+7, LOW);}
    void Sh_R0_reverse(int i){Sh_R0.setRegisterPin(i-1, LOW);Sh_R0.setRegisterPin(i+7, HIGH);}

    void Sh_R1_stop_pin(int i){Sh_R1.setRegisterPin(i-1, LOW);Sh_R1.setRegisterPin(i+7, LOW);}
    void Sh_R1_forward(int i){Sh_R1.setRegisterPin(i-1, HIGH);Sh_R1.setRegisterPin(i+7, LOW);}
    void Sh_R1_reverse(int i){Sh_R1.setRegisterPin(i-1, LOW);Sh_R1.setRegisterPin(i+7, HIGH);}

    void Sh_R2_stop_pin(int i){Sh_R2.setRegisterPin(i-1, LOW);Sh_R2.setRegisterPin(i+7, LOW);}
    void Sh_R2_forward(int i){Sh_R2.setRegisterPin(i-1, HIGH);Sh_R2.setRegisterPin(i+7, LOW);}
    void Sh_R2_reverse(int i){Sh_R2.setRegisterPin(i-1, LOW);Sh_R2.setRegisterPin(i+7, HIGH);}

    void Sh_R3_stop_pin(int i){Sh_R0.setRegisterPin(i-1, LOW);Sh_R3.setRegisterPin(i+7, LOW);}
    void Sh_R3_forward(int i){Sh_R0.setRegisterPin(i-1, HIGH);Sh_R3.setRegisterPin(i+7, LOW);}
    void Sh_R3_reverse(int i){Sh_R0.setRegisterPin(i-1, LOW);Sh_R3.setRegisterPin(i+7, HIGH);}


    а дальше только так...

    наверно есть лучще способ?
     
  12. ostrov

    ostrov Гуру

    На каком это языку было?

    А вообще, изучили бы что такое циклы и как они здорово упрощают и уменьшают код!

    И для меня открытие, что существует аж целая библиотека для 595. Есть же shiftOut для тех кто с портами не разобрался Нафиг еще больше городить с простой микросхемой?
     
    Последнее редактирование: 21 ноя 2018
    parovoZZ нравится это.