Вопрос по сдвиговому регистру 74HC595

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Timoshenko Mitya, 24 мар 2015.

  1. Всем привет, хочу управлять 8-ю светодиодами через сдвиговый регистр. Такой вопрос: как при изменении чего-либо, например при срабатывании датчика, зажечь только определенный светодиод, а остальные оставить незатронутыми? ну т.е. управлять какими либо определенными, но не менять состояния других? Использую вот этот код:
    Код (Text):
    //Пин SH_CP
    int SH_CP = 4;
    //Пин ST_CP
    int ST_CP = 3;
    //Пин DS
    int DS = 2;
    void setup() {
    // Настраиваем выходы SH_CP, ST_CP, DS
    pinMode(SH_CP, OUTPUT);
    pinMode(ST_CP, OUTPUT);
    pinMode(DS, OUTPUT);
    }
    void loop() {
    for (int i = 0; i < 256; i++) {
    // Инициализируем начало приема данных
    digitalWrite(ST_CP, LOW);
    // Последовательная передача данных на пин DS
    shiftOut(DS, SH_CP, MSBFIRST, i);
    // Инициализируем окончание передачи данных.
    // Регистр подаст напряжение на указанные выходы
    digitalWrite(ST_CP, HIGH);
    // Задержка 0.5 секунды
    delay(500);
    }
    }
     
    Последнее редактирование: 24 мар 2015
  2. Вся проблема заключается в том, что я заранее не знаю состояния каждого светодиода и определяю зажечь или погасить его из функции "if"
    Код (Text):
    / Загорится первый светодиод
    shiftOut(DS, SH_CP, MSBFIRST, 0b10000000);
    // Загорятся 2, 4, 6, 8 светодиоды
    shiftOut(DS, SH_CP, MSBFIRST, 0b01010101);
    // Загорится первый светодиод - порядок передачи битов обратный
    shiftOut(DS, SH_CP, MSBLAST, 0b00000001);
     
  3.  
    Виталий и vvr нравится это.
  4. vvr

    vvr Инженерище

    Возьму на вооружение:)
     
  5. Большое спасибо:) Очень помогли;)