// Назначаем контакты для связи с выходным сдвиговым регистром constexpr int LATCH_PIN = 10; constexpr int DATA_PIN = 11; constexpr int CLOCK_PIN = 13; // Переменная для хранения значений восьми светодиодов в битовом виде byte leds = 0b00000000; void setup() { // Настраиваем пины для связи с выходным сдвиговым регистром в режим выхода pinMode(LATCH_PIN, OUTPUT); pinMode(DATA_PIN, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); } void loop() { // Последовательно зажигаем светодиоды через сдвиговый регистр for (int i = 0; i < 8; i++) { bitWrite(leds, i, HIGH); sendData(); delay(100); } // Последовательно гасим светодиоды через сдвиговый регистр for (int i = 0; i < 8; i++) { bitWrite(leds, i, LOW); sendData(); delay(100); } } // Функция для переди байта в сдвиговый регистр // через программный SPI начиная с младшего бита void sendData() { digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, leds); digitalWrite(LATCH_PIN, HIGH); }