Например TDA7294

Форум РадиоКот • Просмотр темы - Светодиодная матрица на расширителе портов MCP23017
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 19:44:54

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Светодиодная матрица на расширителе портов MCP23017
СообщениеДобавлено: Пн сен 21, 2020 19:23:08 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Всем привет!
Решил я сделать светодиодную матрицу на MCP23017 и Arduino Pro Mini. Схема:
Изображение
Код (тестовый, написанный в Ардуино ИДЕ):
Спойлер
Код:
#include <Wire.h>
#include "Adafruit_MCP23017.h"

Adafruit_MCP23017 mcp;

int i = 0;
byte A = 0;
byte B = 0;
uint16_t Data;

const byte bitmap[] PROGMEM = {
    0x00,0x0E,0x06,0x0A,0x10,0x20,0x00,0x00                                       

};


void setup() {
    mcp.begin();      // use default address 0

    mcp.pinMode(0, OUTPUT);
    mcp.pinMode(1, OUTPUT);
    mcp.pinMode(2, OUTPUT);
    mcp.pinMode(3, OUTPUT);
    mcp.pinMode(4, OUTPUT);
    mcp.pinMode(5, OUTPUT);
    mcp.pinMode(6, OUTPUT);
    mcp.pinMode(7, OUTPUT);
    mcp.pinMode(8, OUTPUT);
    mcp.pinMode(9, OUTPUT);
    mcp.pinMode(10, OUTPUT);
    mcp.pinMode(11, OUTPUT);
    mcp.pinMode(12, OUTPUT);
    mcp.pinMode(13, OUTPUT);
    mcp.pinMode(14, OUTPUT);
    mcp.pinMode(15, OUTPUT);
}

void loop() {

    A = 1 << i;
    A=~A;
    B = pgm_read_byte(&bitmap[i]);

    Data = A << 8 | B;

    mcp.writeGPIOAB(Data);
   
    i++;
    if (i>7) i = 0;
    delay(1);
}

Что должно получиться:
Изображение
А что получилось:
Изображение Изображение Изображение
"Изображение" как-бы наплывает на пиксели, находящиеся справа. То есть в любом месте можно зажечь светодиод и справа от него так же будет светится еще один светодиод только на много тусклее. И чем выше частота обновления, тем выше яркость этих "двойников". Может кто знает с чем это может быть связано?

P.S. Может есть готовая библиотека для светодиодных матриц на MCP23017?

Добавлено after 18 minutes 50 seconds:
Я сделал предположение что обновление портов A и B MCP23017 делает не одновременно, а с небольшой задержкой. По этому решил сделать некоторое "обнуление" портов:

void loop() {
A = 1 << i;
A=~A;
B = pgm_read_byte(&bitmap[i]);
Data = A << 8 | B;

mcp.writeGPIOAB(0b1111111100000000);
mcp.writeGPIOAB(Data);

i++;
if (i>7) i = 0;
delay(1);
}

Лишние светодиоды перестали гореть, но частота обновления понизилась и яркость упала. Может есть какое-то другое решение данной проблемы?

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Светодиодная матрица на расширителе портов MCP23017
СообщениеДобавлено: Пн сен 21, 2020 19:27:10 
Друг Кота
Аватар пользователя

Карма: 142
Рейтинг сообщений: 5954
Зарегистрирован: Чт авг 09, 2012 01:09:39
Сообщений: 6638
Откуда: Ливны
Рейтинг сообщения: 1
forfrends писал(а):
И чем выше частота обновления, тем выше яркость этих "двойников". Может кто знает с чем это может быть связано?
Известная проблема динамической индикации. Для устранения этого эффекта вводятся защитные интервалы между переключениями строк или столбцов (зависит от реализации динамической индикации). Т.е. открываем строку ==> зажигаем нужные столбцы ==> гасим строку и все столбцы ==> небольшая пауза ==> и только после паузы открываем следующую строку. :)

UPD:

Пока набирал уже и сами догадались. :)

_________________
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Светодиодная матрица на расширителе портов MCP23017
СообщениеДобавлено: Пн сен 21, 2020 19:35:04 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Спасибо! Попробую с библиотекой еще поиграться, чтобы ускорить работу.
Еще раз спасибо

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y