Arduino светодиодный куб 3x3x3 очень тускло горят светодиоды

divisionby0
Offline
Зарегистрирован: 14.12.2013

Здравствуйте
Сделал кубик по уроку http://randomnerdtutorials.com/arduino-led-cube-3x3x3/
Но во время работы светодиоды горят очень тускло, причем, чем больше их горит на одном уровне (из 3х по высоте), тем тускнее они.
Подозреваю что где-то не хватает мощности.
Подскажите, как можно это исправить.
Светодиоды сигнальные, маркировки, к сожалению не знаю
Все остальные детали подобраны как в уроке.
Прилагаю схему http://randomnerdtutorials.com/wp-content/uploads/2013/08/Schematics-Led...

и несколько фото

http://divisionby0.org/arduino/ledcube_3x3x3/DSCN8383.JPG

http://divisionby0.org/arduino/ledcube_3x3x3/DSCN8388.JPG

http://divisionby0.org/arduino/ledcube_3x3x3/DSCN8390.JPG

вот видео

http://www.youtube.com/watch?v=OqE9HZyKbcE

 

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Неверно припаяли транзисторы. 2N3904 и 2N2222 имеют распиновку ЭБК в то время как BC547 КБЭ.

 

divisionby0
Offline
Зарегистрирован: 14.12.2013

Перепаял, но все равно тускло.

вот фото как теперь спаяно.

http://divisionby0.org/arduino/ledcube_3x3x3/1/DSCN8398.JPG

http://divisionby0.org/arduino/ledcube_3x3x3/1/DSCN8400.JPG

я не понимаю для чего от ардуино выходы (13, 12, 11) на транзисторы идут провода через сопротивления по 22 кило-ома ?

maksim
Offline
Зарегистрирован: 12.02.2012

На фото транзисторы впаяны неверно. 
Резисторы нужны что бы ограничить ток базы ,но так как у PN2222 напряжение эмиттер-база 5 вольт эти резисторы не нужны.

divisionby0
Offline
Зарегистрирован: 14.12.2013

Спасибо за помощь

Я перепаял транзисторы, а также избавился от резисторов, которые были перед базой

http://divisionby0.org/arduino/ledcube_3x3x3/DSCN8402.JPG

Стало ярче, но все же, когда на одном уровне (снизу вверх) зажигаются все диоды их яркос примерно вполовину меньше чем яркост когода они горят по-одному.

Также, если включить все 27 диодов у них яркость примерно 30 процентов от полной и они быстро быстро помаргивают.

 вот видео http://www.youtube.com/watch?v=zZG5sJ2TsBs&feature=youtu.be

 

Подскажите, в чем может быть причина ?

maksim
Offline
Зарегистрирован: 12.02.2012

Мерцане вызвано низкой или нестабильной частотой индикации (покажите код). Яркость же может меняться по причине просадки напряжения на транзисторах, на проводе на землю, нехватка питания в целом ,ну и тоже теоретически из-за программного недочета.

divisionby0
Offline
Зарегистрирован: 14.12.2013

Код я скачал там же в уроке, уж очень у него замудрено, как по мне...

Я ардуинку-то купил неделю назад, а писал долго на ActionScript и немного на Java. Так что пока его код использовал.

http://divisionby0.org/arduino/ledcube_3x3x3/code/LedCube.cpp

http://divisionby0.org/arduino/ledcube_3x3x3/code/LedCube.h

http://divisionby0.org/arduino/ledcube_3x3x3/code/newfix.h

Также это может быть важно, для земли (черный провод) я использовал проводок от блока питания для чего уже не помню.

 

P.S. Да, втупую написал

#define SIZE 3
#define COLS (SIZE*SIZE)

byte levelPins[SIZE] = {11,12,13};
byte colPins[COLS] = {2,3,4,5,6,7,8,9,10};

byte j;
byte k;

void setup ()
{
    Serial.begin(9600);
    
    // configure level pins and finish allocation for buffer
    for (byte i = 0; i < sizeof(levelPins); i++)
    {
        pinMode(levelPins[i], OUTPUT);
    }
    
    // configure column pins
    for (byte i = 0; i < sizeof(colPins); i++)
    {
        pinMode(colPins[i], OUTPUT);
    }  
}

void loop ()
{
  for(j = 0; j < sizeof(levelPins); j ++ )
  {
    for(k = 0; k < sizeof(colPins); k ++ )
    {
      digitalWrite(levelPins[j],1);
      digitalWrite(colPins[k],1);
    }
  }
  
  delay(300);
  
  for(j = 0; j < sizeof(levelPins); j ++ )
  {
    for(k = 0; k < sizeof(colPins); k ++ )
    {
      digitalWrite(levelPins[j],0);
      digitalWrite(colPins[k],0);
    }
  }
  delay(300);
}

горит ярко

Спасибо еще раз за подсказки :)