Сдвиговый регистр и светодиоды с общим катодом

Lictor
Offline
Зарегистрирован: 01.10.2015

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

Собрал схему индикатора, на макетке все работало хорошо. Но вот когда собрал на печатке начались проблемы.

Вырезка с печатки (в коде присутствуют еще сдвиговые регистры SH, DS и т.п, они на схеме не указаны, здесь указан регистр обозначаемый DS2, SH2):

Код:

const byte ST = A3; //ST_CP 74HC595 //индикатор таймер и ввод
const byte SH = A4; //SH_CP  74HC595
const byte DS = A2; //DS 74HC595

const byte ST2 = A0; //ST_CP 74HC595 //светодиоды
const byte SH2 = A1; //SH_CP  74HC595
const byte DS2 = A6; //DS 74HC595

byte Zifry[11] = {B00100000,                      //значения от 0 до 9, +ВЫКЛ для индикатора
                  B01101011, B00010010, B01000010,
                  B01001001, B01000100, B00000100,
                  B01100010, B00000000, B01000000,
                  B01111111
                 };

byte svd[6] = {B01010101, B10010101, B10100101, B10101001, B10101010, B00000000 }; //состояние светодиодов

void setup() {
  // Serial.begin(9600);

  pinMode(ST, OUTPUT);  //выходы для управления 74НС595 - таймер и ввод
  pinMode(SH, OUTPUT);
  pinMode(DS, OUTPUT);

  pinMode(ST2, OUTPUT);  //выходы для управления 74НС595 - светодиоды
  pinMode(SH2, OUTPUT);
  pinMode(DS2, OUTPUT);


  digitalWrite(ST2, LOW); //начало передачи  //тушим светодиоды
  shiftOut(DS2, SH2, LSBFIRST, B00000000);
  digitalWrite(ST2, HIGH); //передача окончена

      digitalWrite(ST, LOW); //начало передачи
      shiftOut(DS, SH, LSBFIRST, B00000000);  //3 разряд
      shiftOut(DS, SH, LSBFIRST, B00000000);  //1 разряд
      shiftOut(DS, SH, LSBFIRST, B00000000);  //2 разряд
      digitalWrite(ST, HIGH); //передача окончена
}

void loop() {
   
}

 

распиновка для кода:

Проблема в том, что если в строке 

  shiftOut(DS2, SH2, LSBFIRST, B00000000);

поставить в В00000000 хоть 1 единицу, то загораются сразу все светодиоды. Хотя на макетке таких проблем не было, загорались только те, которые было нужно. Прошиваю контроллер с помощью второй ардуино. 

В чем может быть проблема?

Lictor
Offline
Зарегистрирован: 01.10.2015

P.S. плату прозвонил дважды, регистр не перегревал. Канифоль и т.п. смыл и высушил.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Питание развел, как украл. Повесь хотя бы по конденсатору 0.1 мкФ на мегу ноги 4 и 5, и на регистр ноги 8 и 16.

Lictor
Offline
Зарегистрирован: 01.10.2015

Andy пишет:

Питание развел, как украл. Повесь хотя бы по конденсатору 0.1 мкФ на мегу ноги 4 и 5, и на регистр ноги 8 и 16.

 

Стер лишнее на рисунке, по питанию кондер стоит и на входе, и на выходе со стабилизатора. На микросхему напаял керамику 0,1мкФ, дополнительно напаял электролит к стабилизатору напряжения, не помогло. 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Вывод А6 не может быть выходом.

Lictor
Offline
Зарегистрирован: 01.10.2015

Ну да, действительно. Но мы ж блин не ищем легких путей. Благодарю. На другом пине работает.