#define MR 3
#define SHCP 4
#define STCP 5
#define OE 6
#define DS 7
void setup() {
pinMode( MR, OUTPUT );
pinMode( SHCP, OUTPUT );
pinMode( STCP, OUTPUT );
pinMode( OE, OUTPUT );
pinMode( DS, OUTPUT );
// обнулення зсувного регістру
digitalWrite(MR, LOW);
digitalWrite(MR, HIGH);
digitalWrite(DS, 1); // сигнал
// захоплюємо 1 біт
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
// переносимо у регістр збереження
digitalWrite(STCP, HIGH);
digitalWrite(STCP, LOW);
// показуємо на пінах що є в регістрі збереження
digitalWrite(OE, LOW);
delay(1000);
// захоплюємо 1 біт
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
// переносимо у регістр збереження
digitalWrite(STCP, HIGH);
digitalWrite(STCP, LOW);
delay(1000);
digitalWrite(DS, 0); // сигнал
// захоплюємо 1 біт
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
// переносимо у регістр збереження
digitalWrite(STCP, HIGH);
digitalWrite(STCP, LOW);
delay(1500);
set595( B11111111 );
delay(1500);
set595( B10101010 );
delay(1500);
set595( 136 );
delay(1500);
set595( 170 );
}
/*
1 00000001
2 00000010
3 00000011
4 00000100
5 00000101
6 00000110
7 00000111
255 11111111
*/
void set595( byte data ) {
// обнулення зсувного регістру
//digitalWrite(MR, LOW);
//digitalWrite(MR, HIGH);
// завантажити число у регістр збереження 595
for (int i=0; i<8; i++) {
if ( data >= B10000000 ) digitalWrite(DS, 1);
else digitalWrite(DS, 0);
// захоплюємо 1 біт
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
// переносимо у регістр збереження
digitalWrite(STCP, HIGH);
digitalWrite(STCP, LOW);
data = data << 1;
}
}
void loop() {
// put your main code here, to run repeatedly:
}