Почему скетчи не работают на led-матрице 1088AS?

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

Стал разбираться с такой матрицей 8х8.

Подключаю провода согласно схемам, устанавливаю библиотеку, заливаю скетч, ошибок нет, но в результате какая-то мешанина: всё мигает вразнобой.

Пробовал, например, реализовать это, это, какие-то видео-уроки с Ютуба...

В общем, непонятно, как заставить её нормально работать.

sadman41
Offline
Зарегистрирован: 19.10.2016

И что вы хотите от обчества - выезда на дом?

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

А, извините, только сейчас нашел: "Здесь помогают тем, кто пытается что-то сделать сам, имеет самописный скетч". Простите за беспокойство.

bwn
Offline
Зарегистрирован: 25.08.2014

rinatoptimus пишет:

А, извините, только сейчас нашел: "Здесь помогают тем, кто пытается что-то сделать сам, имеет самописный скетч". Простите за беспокойство.

Там про самописный есть уточнение. А еще есть про создание темы, какая информация требуется. Лазать по ссылкам и разбираться никто не будет. И ИМХО, начните с зажигания одного пикселя.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

rinatoptimus пишет:
как заставить её нормально работать.
"Добрым словом и пистолетом".

kalapanga
Offline
Зарегистрирован: 23.10.2016

rinatoptimus пишет:

В общем, непонятно, как заставить её нормально работать.

Правильно подключить и написать правильный скетч. Раз не работает как надо, значит какое-то из условий не соблюдено. Или оба. Что тут ещё можно подсказать не видя ни подключения ни скетча? Я собрал по схеме из этой ссылки - не аргумент. Нет никакой гарантии, что схему повторили правильно, что в скетче какую-нибудь строчку не потеряли. 

Из области гадания на кофейной гуще - скорее всего цоколёвку матрицы попутали. Прозвоните все выводы сами ещё раз и убедитесь, что можете программно зажигать нужный диод. По одному.

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

"скорее всего цоколёвку матрицы попутали" - вот уже зацепка, спасибо! Ваш ответ и есть то, что я хотел услышать: ряд причин, по которым моогла возникнуть проблема. Теперь круг сузился, буду копать. Вообще, мне было интересно, подходят ли скетчи для разных 8х8 лед-матриц или для каждой из этих разновидностей должен быть свой скетч? Например, скетч написанный для матрицы 1088BS, не подходит для матрицы 1088AS и так далее.

Ну раз скетчи для них одинаково рабочие, значит, причина описана вами выше. ОК. 

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

Я и хочу зажечь один пиксель, но все, что я нахожу - это скролл текста, анимации. 

Тут на форуме нашел код, немного его исправил:

#define TEST { \
     {0, 0, 1, 0, 0, 0, 0, 0} \
 } 

byte cols[8] = {2, 3, 4, 5, 6, 7, 8, 9};        
byte rows[8] = {13, 12, 11, 10, A2, A3, A4, A5};
bool mem[8][8] = TEST;

void setup()
{
  for(int i = 0; i < 8; i++) pinMode(cols[i], OUTPUT);
}

void loop()
{
  Display();
}

void Display() 
{
   static byte row;
   for (byte col = 0; col < 8; col++) digitalWrite(cols[col], mem[row][col]);  
   pinMode(rows[row], 1);
   delayMicroseconds(10);
   pinMode(rows[row], 0);
   row++;
   if(row == 8) row = 0;
}

В итоге горят 6 диодов в предпоследней колонке. Я ожидал, что загорится один третий диод вверху.

bwn
Offline
Зарегистрирован: 25.08.2014

rinatoptimus пишет:

Вообще, мне было интересно, подходят ли скетчи для разных 8х8 лед-матриц или для каждой из этих разновидностей должен быть свой скетч? Например, скетч написанный для матрицы 1088BS, не подходит для матрицы 1088AS и так далее.

Ну раз скетчи для них одинаково рабочие, значит, причина описана вами выше. ОК. 

Для BS придется писать с инверсией. Делал здесь на MAX7219.

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

У меня, к счастью, вариант 1088AS, но буду знать, спасибо.

bwn
Offline
Зарегистрирован: 25.08.2014

digitalWrite(4,HIGH);
digitalWrite(11,LOW);
Подключение не смотрел, возможно наоборот.
Не ищите ничего, пишите сами. Сперва научитесь зажигать по одному, а потом переходите к динамике. ИМХО
В сетапе инициировали колонки, а кто будет инициировать ряды?

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

Чтобы зажечь диод в третьей колонке, в массив cols занес пины 9, 8, 7 - именно к ним подключены первая, вторая и третья колонки матрицы. В массив rows занес пины 13, 12, 11 - к этим пинам подключены первые три ряда матрицы.



byte cols[3] = {13, 3, 4};        
byte rows[3] = {9, 14, 8};
 
void setup(){
  for(int i = 0; i < 3; i++) pinMode(cols[i], OUTPUT); 
  for(int i = 0; i < 3; i++) pinMode(rows[i], OUTPUT);
}
 
void loop(){
  digitalWrite(4,HIGH);
  //digitalWrite(11,LOW);
}

В результате горят 4 диода в предпоследней колонке.

 

 

bwn
Offline
Зарегистрирован: 25.08.2014

Чтобы погасить все колонки у вас на выходе всех управляющих пинов (для колонок) должен быть HIGH, погасить все ряды на всех управляющих пинах (для рядов) LOW.
Для выбора колонки подаем LOW, для выбора диодов из ряда подаем HIGH. 
Для динамической индикации - на одной колонке в один момент времени LOW, на остальных HIGH. На рядах - HIGH для требуемых диодов, остальные LOW. Если на других колонках окажется LOW, будет светиться ряд диодов.
В ссылках не рылся, как подключены к МК, просто к пинам с резистором или есть ключи? Если напрямую к пинам, рискуете остаться без МК.

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

К микроконтроллеру подключил без резисторов по этой схеме: 

Почему здесь резисторы только для нижнего ряда используются?

 

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

rinatoptimus пишет:
К микроконтроллеру подключил без резисторов по этой схеме:
Почему здесь резисторы только для нижнего ряда используются?

Похоже из этой оперы https://www.youtube.com/watch?v=ZRRlw3WkMB0

bwn
Offline
Зарегистрирован: 25.08.2014

rinatoptimus пишет:

Почему здесь резисторы только для нижнего ряда используются?

Либо схема у вас другая, либо в скетче фигня. По этой логике резисторы должны быть либо на колонках, либо на рядах (умнее). У вас как-то вразнобой. 
Максимальная нагрузка на пин <40мА., на чип <200мА. Соответственно на один ряд, ток не более 5мА.

vk007
Offline
Зарегистрирован: 16.06.2015

rinatoptimus пишет:

К микроконтроллеру подключил без резисторов по этой схеме:

Никогда не подключайте светодиоды без резисторов. В данном случае рискуете микроконтроллером. При источнике тока помощнее микроконтроллера - рискуете светодиодом.

rinatoptimus
Offline
Зарегистрирован: 25.01.2019

Хорошо. Схему подключения взял из урока, не сам создавал. Буду знать.

bwn
Offline
Зарегистрирован: 25.08.2014

Резисторы >820Ом. Подключаем к 9,14,8,12,1,7,2,5 выводу на матрице. В МК, как фантазия подсказывает, обычно чтобы провода удобнее тянуть. Начально инициируете их как LOW, это будут ряды. Подключаете колонку с 16 или 13 вывода (все из распиновки поста 11), тоже инициируете как LOW. Теперь подачей HIGH на линиях рядов можете подключать по одному или несколько диодов в ряду. Это для статики.