Как управлять светодиодной матрицей при помощи ардуино?

Zets
Offline
Зарегистрирован: 20.04.2014

Привет!

Хочу сделать светодиодную матрицу 16х32. Управление по SPI. Для этого предполагаю 2 сдвиговых регистра 74HC595 на аноды (16 строк) и 4 на катоды ( 32 столбца). Работает понятно со стробоскопическим эффектом.

В связи с этим два вопроса: 1 не будет ли тормозить вся схема через SPI при последовательном подключении регистров с частотой обновления скажем 2-3 мс на регистр (учитываются только катодные регистры, т.е. цикл около 10 мс) и 2 посоветуйте библиотеку символов, чтобы самому не набирать. Может можно из LiquidCrystal можно как то выковырять?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

посмотрите в сторону max7219

про spi: если spi хардварный, можно не ждать окончания передачи, делать что то пока передается, а когда закончилась передача отправить следующий байт

Zets
Offline
Зарегистрирован: 20.04.2014

jeka_tm пишет:

посмотрите в сторону max7219

про spi: если spi хардварный, можно не ждать окончания передачи, делать что то пока передается, а когда закончилась передача отправить следующий байт

У меня десяток регистров лежит, не хотелось еще что то покупать. Так можно и с дешифратором схему конечно сделать.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну тогда не 2 сдвиговых регистра а 6 получается

про усиление по току надеюсь знаете

Zets
Offline
Зарегистрирован: 20.04.2014

jeka_tm пишет:

ну тогда не 2 сдвиговых регистра а 6 получается

про усиление по току надеюсь знаете

6 регистров всего или только на анод?

Да. Пока только думаю с какой стороны ключи ставить, или с обоих?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

8 каналов на регистр. по горизонтали получается нужно 4 по вертикали 2. достаточно только по вертикали

Zets
Offline
Зарегистрирован: 20.04.2014

Набросал в proteus схему.

8х8 работало, а вот 16х16 уже нет. Если удаляю диоды то регистры начинают моргать как надо.

Оставшиеся 16 столбцов пока не стал дорисовывать..

Где могут быть ошибки?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не должно быть по идее такого. либо модель корявая, либо ошибка в коде

Zets
Offline
Зарегистрирован: 20.04.2014

jeka_tm пишет:

не должно быть по идее такого. либо модель корявая, либо ошибка в коде

Код простенький

01#include <SPI.h>  //подключаем библиотеку SPI
02enum { reg = 9 }; //выбираем линию SS регистра на 9-м пине Arduino
03 
04void setup(){
05  SPI.begin();    //инициализируем SPI
06  pinMode(reg, OUTPUT); //инициализируем пин SS
07}
08 
09int time = 500; //время задержки между фрэймами
10 
11 
12void loop(){
13  digitalWrite(reg, LOW);  //начинаем передачу
14  SPI.transfer(0x00);      //передаем 1-й байт на анод т.е. вторые 8 строк
15  SPI.transfer(0x01);      //передаем 2-й байт на анод т.е. первые 8 строк
16  SPI.transfer(0x00);      //передаем 3-й байт на катод т.е. нижняя половина
17  SPI.transfer(0x01);      //передаем 4-й байт на катод т.е. верхняя половина
18  digitalWrite(reg, HIGH); //заканчиваем передачу
19  delay(time);             //пауза
20   
21  digitalWrite(reg, LOW);
22  SPI.transfer(0x00);
23  SPI.transfer(0x80);
24  SPI.transfer(0x00);
25  SPI.transfer(0x01);
26  digitalWrite(reg, HIGH);
27  delay(time);
28 
29  digitalWrite(reg, LOW);
30  SPI.transfer(0x00);
31  SPI.transfer(0x01);
32  SPI.transfer(0x80);
33  SPI.transfer(0x00);
34  digitalWrite(reg, HIGH);
35  delay(time);
36   
37  digitalWrite(reg, LOW);
38  SPI.transfer(0x80);
39  SPI.transfer(0x00);
40  SPI.transfer(0x80);
41  SPI.transfer(0x00);
42  digitalWrite(reg, HIGH);
43  delay(time);
44}

Файл proteus

https://yadi.sk/d/dr_cAKj3V3Syo

Coolerr
Offline
Зарегистрирован: 30.06.2014

Simulino корявая фигня. В Протеус 8 встроенная поддержка Ардуин. И симуляция без тормозов.

Zets
Offline
Зарегистрирован: 20.04.2014

Решил проблему применением стандартных светодиодных матриц вместо отдельных диодов.

Zets
Offline
Зарегистрирован: 20.04.2014

В продолжение темы хочу сказать, что потестить в proteus отображение со стробоскопическим эффектом не получилось)

Т.е. можно посмотреть работоспособность схемы зажигая по одному (ну или рядами) и все.

Гриша
Offline
Зарегистрирован: 27.04.2014

Zets пишет:

...Для этого предполагаю 2 сдвиговых регистра 74HC595 на аноды (16 строк) и 4 на катоды ( 32 столбца)...

А не жирновато для регистра 16 диодов на ногу? Если реализовывать в железе там не все так просто (ИМХО)... мах 35мА на ногу. Если сопроты поставить для защиты, то при разной нагрузке будет разная яркость, при динамическом отображении лучше сразу об этом позаботиться...