// Библиотека для работы с SPI-устройствами #include // Назначаем контакт для защёлки сдвигового регистра constexpr int LATCH_PIN = 10; // Переменная для хранения значений восьми светодиодов в битовом виде byte leds = 0b00000000; void setup() { // Инициализируем шину SPI SPI.begin(); // Инициируем передачу данных по SPI младшим битом вперёд SPI.setBitOrder(LSBFIRST); // Назначаем контакт защёлки сдвигового регистра в режим выхода pinMode(LATCH_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); SPI.transfer(leds); digitalWrite(LATCH_PIN, HIGH); }