Всем привет! Работаю с модулем на 16 реле, в Arduino IDE определяется, скетчи загружаются. Но не могу разобраться с управлением сдвиговыми регистрами. Из описания товара с алиэкспресс выбрал пины подключения, но результата нет. По умолчанию был загружен скетч с последовательным переключением реле. Может быть кто-то с этим модулем сталкивался и знает что я делаю не так. Заранее спасибо!
``` #define LATCH_PIN 12 #define CLOCK_PIN 13 #define DATA_PIN 14 #define OE_PIN 5 void HC595Init() { pinMode(DATA_PIN, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); pinMode(LATCH_PIN, OUTPUT); pinMode(OE_PIN, OUTPUT); digitalWrite(OE_PIN, HIGH); digitalWrite(DATA_PIN, LOW); digitalWrite(CLOCK_PIN, LOW); digitalWrite(LATCH_PIN, LOW); } void setup() { HC595Init(); // put your setup code here, to run once: } void loop() { byte byteToSend = 0; //Создаем пустой байт B00000000 for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита byteToSend = 0; // Обнуляем байт при каждом проходе bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д. digitalWrite(LATCH_PIN, LOW); // Открыли регистр shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, byteToSend); // передаем последовательно на dataPin - в первом регистре значение B01001100 shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита digitalWrite(LATCH_PIN, HIGH); /// Закрываем регистр тем самым передаем значение на выводы delay(150); } byteToSend = 0; // Обнуляем байт при каждом проходе digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита digitalWrite(LATCH_PIN, HIGH); delay(150); for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита byteToSend = 0; // Обнуляем байт при каждом проходе bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д. digitalWrite(LATCH_PIN, LOW); // Открыли регистр shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, byteToSend); // передаем последовательно на dataPin - в первом регистре значение B01001100 shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита digitalWrite(LATCH_PIN, HIGH); /// Закрываем регистр тем самым передаем значение на выводы delay(150); } byteToSend = 0; // Обнуляем байт при каждом проходе digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита digitalWrite(LATCH_PIN, HIGH); delay(150); // Включение всех светодиодов } ```

