реле управления с использованием 74hc595 (сдвиг) - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу использовать 7h4c595 (8 IO) для управления 8 реле.

Я пытался использовать 0b00000000 , все работает нормально.

но я не знаю , как объединить переключает значения в этот вид двоичных файлов .

почти 0 знаний об этом.извините

Я знаю, что приведенный ниже код неверен , но он работает.

проблема : q0 74hc595 управляет 2-м реле, а не1-й.

и q1 управляет третьим реле.

Это должно быть похоже на q0-> 1st, q1-> 2nd и т. Д.

извините за беспокойство.

enter image description here

[код]

uint8_t switch0=0;// 0 = off
uint8_t switch1=1;// 1 = on
etc...
uint8_t switch7=1;//1-7 on

setup(){
    etc...
}
loop(){
    if(digitalWrite(btn1)==HIGH){
        switch0=1;//on
        switch1=0;//off
        etc...//1-7 off
    }
    //unit8_t sw=0b10000000; //turn 1st relay on when btn1 pressed
    uint8_t sw={switch0,switch1,....,switch7};
    for(int i=0;i<8;i++){
        digitalWrite(latchPin, LOW);
        shiftOut(dataPin, clockPin, MSBFIRST, i);   
        digitalWrite(latchPin, HIGH);
    }
}

1 Ответ

0 голосов
/ 05 декабря 2018

Я бы пошел аналогичным образом, как выводы определены в avr / io.h

constexpr uint8_t RELAY0 = 0;
constexpr uint8_t RELAY1 = 1;
// ...
constexpr uint8_t RELAY7 = 7;


loop() {
  uint8_t data = (switch0 << RELAY0) | (switch1 << RELAY1) | /* ... |*/ (switch7 << RELAY7);

  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, data);   
  digitalWrite(latchPin, HIGH);

  delay(200); // or more
}

Или вы можете использовать один байт (uint8_t) для хранения всех переключателей одновременно.В качестве бонуса вы можете отправить его через shiftOut напрямую.

uint8_t allSwitches = 0; // all relays disabled 

// turning relay x on (somewhere inside of function):
allSwitches |= _BV(x); // where x is number between 0 and 7 including

// turning relay x off:
allSwitches &= ~_BV(x);

// but you can set some of them and reset others in single step:
allSwitches = _BV(0) | _BV(5) | _BV(7);  // turns on relay 0, 5 and 7, rest will be turned off
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...