Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Пин подключен к ST_CP входу 74HC595
- const int latchPin = 8;
- // Пин подключен к SH_CP входу 74HC595
- const int clockPin = 12;
- // Пин подключен к DS входу 74HC595
- const int dataPin = 11;
- // указываем пины, к которым подключены слои
- int LayerPin[] = {4,5,6,7};
- boolean mass[16] = {
- 0,0,0,0, // строка 1 (светодиоды 0-2)
- 0,0,0,0, // строка 2 (светодиоды 3-7)
- 0,0,0,0, // строка 3 (светодиоды 8-11)
- 0,0,0,0 // строка 4 (светодиоды 12-15)
- };
- void setup() {
- Serial.begin(9600);
- // устанавливаем режим OUTPUT
- pinMode(latchPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- for(int layer = 0; layer < 4; layer++){
- pinMode(LayerPin[layer], OUTPUT);
- digitalWrite(LayerPin[layer], LOW);
- }
- }
- void loop() {
- // зажигаем слои
- for(int layer = 0; layer < 4; layer++){
- digitalWrite(LayerPin[layer], HIGH);
- }
- unsigned int DATA = 0;
- for(byte pin = 0; pin < 4; pin++) {
- mass[pin] = 1;
- mass[pin+4] = 1;
- mass[pin+8] = 1;
- mass[pin+12] = 1;
- for(byte i=0; i<16; i++){
- if(mass[i]==1) DATA |= 1<<i;
- else DATA &= ~(1<<i);
- }
- for(byte i=0; i<16; i++){
- Serial.print(mass[i]);
- }
- Serial.println(" ");
- Serial.println(DATA);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, (DATA >> 8));
- shiftOut(dataPin, clockPin, MSBFIRST, DATA);
- // "защелкиваем" регистр, чтобы биты появились на выходах регистра
- digitalWrite(latchPin, HIGH);
- delay(1000);
- mass[pin] = 0;
- mass[pin+4] = 0;
- mass[pin+8] = 0;
- mass[pin+12] = 0;
- }
- for(byte pin = 2; pin >= 0; pin--) {
- mass[pin] = 1;
- mass[pin+4] = 1;
- mass[pin+8] = 1;
- mass[pin+12] = 1;
- for(byte i=0; i<16; i++){
- if(mass[i]==1) DATA |= 1<<i;
- else DATA &= ~(1<<i);
- }
- for(byte i=0; i<16; i++){
- Serial.print(mass[i]);
- }
- Serial.println(" ");
- Serial.println(DATA);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, (DATA >> 8));
- shiftOut(dataPin, clockPin, MSBFIRST, DATA);
- // "защелкиваем" регистр, чтобы биты появились на выходах регистра
- digitalWrite(latchPin, HIGH);
- delay(1000);
- mass[pin] = 0;
- mass[pin+4] = 0;
- mass[pin+8] = 0;
- mass[pin+12] = 0;
- }
- for(int layer = 0; layer < 4; layer++){
- digitalWrite(LayerPin[layer], LOW);
- }
- for(int layer = 0; layer < 4; layer++){
- digitalWrite(LayerPin[layer], HIGH);
- for(byte pin = 0; pin < 4; pin++) {
- mass[pin] = 1;
- mass[15-pin] = 1;
- for(byte i=0; i<16; i++){
- if(mass[i]==1) DATA |= 1<<i;
- else DATA &= ~(1<<i);
- }
- for(byte i=0; i<16; i++){
- Serial.print(mass[i]);
- }
- Serial.println(" ");
- Serial.println(DATA);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, (DATA >> 8));
- shiftOut(dataPin, clockPin, MSBFIRST, DATA);
- // "защелкиваем" регистр, чтобы биты появились на выходах регистра
- digitalWrite(latchPin, HIGH);
- delay(100);
- mass[pin] = 0;
- mass[15-pin] = 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement