MAKC, думал тут думал, а ведь все очень просто получается с кодом управления через SPI.. что то типа
на ошибки проверил, а вот как работает к сожалению пока не могу... так что тебе карты в руки... но по логике должно все работать....Код:#include <SPI.h> unsigned long LastByteTime, t; uint8_t data; void setup() { Serial.begin(115200); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV16); // 1 МГц //DDRB |= _BV(PORTB5); // Enable output for LED //PORTB &= ~_BV(PORTB5); // LED off //PORTB |= _BV(PORTB5); // LED on }//setup() void loop() { // for(;;){ t= millis(); if ((data = Serial.read()) >= 0) { LastByteTime = t; //if (data == 255){delay(1);continue;} //подождем 1мс для след кадра if (data == 255){delay(1);return;} //подождем 1мс для след кадра else{ while(!(SPSR & _BV(SPIF))); SPDR = data; } }else{ //гасим подсветку если нет потока более 10 сек if((t - LastByteTime) > 10000) { for(char i=0; i<255; i++) { SPDR = 0;while(!(SPSR & _BV(SPIF))); } delay(1); // подождем 1мс LastByteTime = t; // Reset counter } } // }//for }




Ответить с цитированием
