Помогите разобраться с 74HC595

chervyachok
chervyachok аватар
Offline
Зарегистрирован: 22.12.2011

 Доброго времени суток.

Начал разбираться с увеличением выходов при помощи микросхемы 74HC595. Для експеримента, спаял по схеме описаной на даном сайте каскадом 3 штуки к которым подключено 16 светодиодов (3 ряда). Возникли следующие вопросы:

1. Сколько можно подключить таких микросхем (нужно 160 выходов)

2. Какое максимальное напряжение можно подавать на Vcc 

3. Как контролировать состояние выходов при помощи пинов MR и OE

и проблемы:

При исполнении следующего (и всех других которые запускал) скетча в момент переключения слегка подмигивают те светодиоды которые не должны.  Заметно ето именно в момент перехода синхронизации latchPin, LOW. Когда вставил туда delay то стало особенно заменто. 

int latchPin = 8;
int dataPin = 11;
int clockPin = 12;
int waitFor = 200;

void setup() {
pinMode (dataPin, OUTPUT);
pinMode (clockPin, OUTPUT);
pinMode (latchPin, OUTPUT);
}
void loop() {
lightLeds (0b00000001, 0b00000001, 0b00000001);
lightLeds (0b00000010, 0b00000010, 0b00000010);
lightLeds (0b00000100, 0b00000100, 0b00000100);
lightLeds (0b00001000, 0b00001000, 0b00001000);
lightLeds (0b00010000, 0b00010000, 0b00010000);
lightLeds (0b00100000, 0b00100000, 0b00100000);
lightLeds (0b01000000, 0b01000000, 0b01000000);
lightLeds (0b10000000, 0b10000000, 0b10000000);
lightLeds (0b01000000, 0b01000000, 0b01000000);
lightLeds (0b00100000, 0b00100000, 0b00100000);
lightLeds (0b00010000, 0b00010000, 0b00010000);
lightLeds (0b00001000, 0b00001000, 0b00001000);
lightLeds (0b00000100, 0b00000100, 0b00000100);
lightLeds (0b00000010, 0b00000010, 0b00000010);
}
void lightLeds (byte third, byte second, byte first) { // третий второй первый ряд
digitalWrite (latchPin, LOW);

delay (waitFor); ----------------------------------------------------------проблема
shiftOut (dataPin, clockPin, LSBFIRST, first );
shiftOut (dataPin, clockPin, LSBFIRST, second);
shiftOut (dataPin, clockPin, LSBFIRST, third );
digitalWrite (latchPin, HIGH);
delay (waitFor);
}

Видел что можно организовать управление при помощи SPI, но пока не разобрался. Может кто подкинет простенький скетч на даной библиотеке.

Вобщем прошу помощи в решении даной проблемы.

whoim
Offline
Зарегистрирован: 03.11.2011

 Какое максимальное напряжение можно подавать на Vcc

5в 50ма вроде, в даташите точнее глянь. В любом случае лучше транзисторо повесить, защитить таксказать.

в момент переключения слегка подмигивают те светодиоды которые не должны

вроде там конденсатор лепится, помоему от этого. Посмотри на примере на этом же сайте.

chervyachok
chervyachok аватар
Offline
Зарегистрирован: 22.12.2011

Разобрался!

Оказываеться подобное поведение происходило по вине блока питания который питал светодиоды (обычная зарядка от нокиа 5в 500ма). Подключив питание к самому ардуино все заработало стабильно. Но  150 светодиодов одновременно ардуино наверное не потянет.

Так что возник вопрос о подборе БП. Какие характеристики должен иметь последний?  

whoim
Offline
Зарегистрирован: 03.11.2011

 Но 150 светодиодов одновременно ардуино наверное не потянет.

вот тут их 512