#define SPI_time 10
int latchpin = 10;
int datapin = 11;
int clockpin = 13;
void sendData(byte data){
digitalWrite(latchpin, LOW);
char i; // счетчик для цикла
for (i=0; i<8; i++) { // цикл на 8 бит
delayMicroseconds(SPI_time/2); // формируем половину паузы
if (data & 0x80) digitalWrite(datapin, 1); else digitalWrite(datapin, 0); // выставляем один бит
data<<=1; // двигаем байт
delayMicroseconds(SPI_time/2); // завершаем паузу
digitalWrite(clockpin, 1); // тактовый фронт
delayMicroseconds(SPI_time); // формируем импульс
digitalWrite(clockpin, 0); // тактовый спад
}
digitalWrite(latchpin, HIGH);
}
void setup() {
Serial.begin(9600);
pinMode(latchpin, OUTPUT);
pinMode(datapin, OUTPUT);
pinMode(clockpin, OUTPUT);
delay(500);
}
void loop() {
sendData(255);
delay(1000);
sendData(0);
delay(1000);
for (int i = 0; i < 256; i++) {
sendData(i);
delay(100);
}
for (int i = 255; i > 0; i--) {
sendData(i);
delay(100);
}
}