#1 2018-04-02 15:49:50

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

индикатор Ws16 5 В MAX7219 8x8

Вот такое чудо прислали китайцы с AliExpress:
HTB1dyXjSXXXXXX5XpXXq6xXFXXXe.jpg
HTB1ONpqSXXXXXbbXXXXq6xXFXXXF.jpg
HTB10ORgSXXXXXbAXpXXq6xXFXXXY.jpg
В маркировке они пишут так:

Ws16 5 В MAX7219 8x8 матричный светодиодный MCU Управление Дисплей Micro Управление; 4 в 1 модуль + 5 P линии для Arduino Raspberry Pi

Бренд:WQScosea

Контакты (справа на картинке), в описании названы так (так же подписаны на плате):

VCC  5 В
GND  GND
Din  p2.2
Cs  p2.1
CLK  P2.0

Помогите определиться догадками: что там за интерфейс (стандарт) к этому чуду? каким способом его подключать?

Дальше я уже как-то сам совладаю...  big_smile

Неактивний

#2 2018-04-02 15:55:09

cncserge
Учасник
З Полтава
Зареєстрований: 2018-01-03
Повідомлень: 37

Re: индикатор Ws16 5 В MAX7219 8x8

https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf

Неактивний

#3 2018-04-02 16:11:23

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: индикатор Ws16 5 В MAX7219 8x8

cncserge пише:

https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf

Спасибо, гляну.
Нашёл вот аналогичную траблу и её решение в другом месте - 8×8 LED Matrix MAX7219 - неправильное исполнение элементарного кода:

/* Создаём объект класса LedControl
 * Используем пины 12, 11, 10 на плате Arduino в качестве SPI интерфейса
 * для драйвера MAX7219
 * 
 * Подключаем устройства согласно таблице:
 * Arduino[Pin 12] <-> Display Module MAX7219 [DIN]
 * Arduino[Pin 11] <-> Display Module MAX7219 [CLK]
 * Arduino[Pin 10] <-> Display Module MAX7219 [LOAD/CS]   
 * 
 * Прототип создания объекта класса LedControl:
 * LedControl(int dataPin, int clkPin, int csPin, int numDevices);
 * где:
 *      int dataPin    - пин 12 на плате Arduino 
 *      int clkPin     - пин 11 на плате Arduino
 *      int csPin      - пин 10 на плате Arduino
 *      int numDevices - количество устройств на шине SPI      
 */
 
/* Для начала подключим библиотеку */
#include "LedControl.h"

/* Создаём объект класса LedControl для 5-ти устройств */
LedControl LC = LedControl(12, 11, 10, 1); 

void setup() 
{
  /*
   * Выводим устройство с адресом равным 0 из 
   * энергосберегающего режима
   */
  LC.shutdown(0, false);
    
  /* Устанавливаем интесивность свечения
   * для устройства с адресом равным 0
   * на средний уровень 
   */
    LC.setIntensity(0, 8);
    
  /* и очищаем дисплей с адресом равным 0*/
  LC.clearDisplay(0);
}

void loop() 
{
  LC.setLed(0, 2, 7, true);
  delay(500);
  LC.setLed(0, 2, 7, false);
  delay(500);
}

Там же, в комментариях, необходимо и достаточно smile расписано подключение индикатора к Arduino.

И решение там оглашённой проблемы:

причина оказалась в питании. Заработало только после подключения 12 вольт к vin-порту.

Остання редакція Olej (2018-04-02 16:12:44)

Неактивний

#4 2018-04-02 17:12:48

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: индикатор Ws16 5 В MAX7219 8x8

cncserge пише:

https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf

MAX7219/MAX7221
Serially Interfaced, 8-Digit LED Display Drivers

datasheet детальнейший и много проясняет ... но:
- они описывают 8 цифровой индикатор - у меня 4 цифровой, под той же маркировкой MAX7219
- они описывают (не)совместимость MAX7219 / MAX7221 так:

The MAX7219 and MAX7221 are identical except for two parameters: the MAX7221 segment drivers are slew-rate limited to reduce electromagnetic interference (EMI), and its serial interface is fully SPI compatible.

И если MAX7219 "почти совместим" с SPI, или "совместим но не совсем", то в чём?
- datasheet описывает детальнейшим образом чипы, распиновку этих чипов, электрический и климатические параметры ... но недостаточно описан обмен с управляющим устройством ... по крайней мере, недостаточно для понимания.

Остаётся надежда на библиотеку LedControl, что она сделает поддержку и все времянки как надо!

Неактивний

#5 2018-04-02 17:34:24

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: индикатор Ws16 5 В MAX7219 8x8

Вот ещё интересная (мне) информация ... мне она достаточная, для того чтобы писать .ino : MAX7219, MAX7221 — драйвер для светодиодной индикации.
Подумал, что кому-то это тоже может показаться полезным.

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

У MAX7219 интерфейс Serial 3-Wire.

Формат данных посылаемых в MAX7219 (MAX7221) показан в таблице 2. Данные отсылаются по 16 бит, старшим битом вперед.

Таблица 2.
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
ADRES D11-D8
DATA D7-D0
В битах D15…D12 полезной информации не передается. Лично я в этих битах передаю ноль.
В поле ADRES указывается, что необходимо сделать.

Если в ADRES передается значение 1…8 (0001…1000), то это выбор знакоместа. В поле DATA в этом случае передается информация о сегментах выбранного знакоместа. Если DATA равна 0 (00000000), то сегменты не светятся. Если DATA равна 255 (11111111), то светятся все сегменты выбранного знакоместа, включая точку. В режиме декодирования DATA несет иную информацию, подробности см. в Datasheet на MAX7219/7221.
Если в ADRES передается значение 9…15 (1001…1111), то это указание выполнить некоторую служебную инструкцию, см. Таблицу 3.
... тут много интересного, но посмотрите по URL ...

Важно!:

Для нормальной работы микросхемы её необходимо инициализировать после подачи питания. Инициализация подразумевает некоторую последовательность команд, после которой микросхема начинает нормально работать и реагировать на команды и данные. Без инициализации микросхема ничего высвечивать не будет, но, тем не менее, при этом микросхема спокойно переходит в режим TEST (ADRES = 0x0F) и зажигает все сегменты одновременно.

Для инициализации необходимо выполнить:
ADRES = 0x0F, DATA = 0x00 – Тест индикатора выключен
ADRES = 0x0С, DATA = 0x01 – Выйти из сна
ADRES = 0x0B, DATA = 0x07 – Кол-во задействованных символов — 8 символов
ADRES = 0x09, DATA = 0x00 – Дешифраторы отключены
ADRES = 0x0A, DATA = 0x0F – Интенсивность свечения (яркость) максимальна
После этого на дисплее будут всякие крякозяблы – сегменты, светящиеся случайным образом.

Это необходимо учесть и после инициализации выполнить очистку дисплея, например, записать во все знакоместа символ 0 (ноль) или погасить все сегменты, например, используя ADRES = 0x01…0x08, DATA =0x00.

Вот теперь этого достаточно.

P.S. Важно!:

При выборе кол-ва отображаемых символов (ADRES = 0x0B) менее четырех, предварительно необходимо уменьшить яркость (ADRES = 0x0A), иначе есть вероятность повредить микросхему и/или светодиоды в индикаторе.

Остання редакція Olej (2018-04-02 18:03:27)

Неактивний

#6 2018-04-02 17:38:49

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: индикатор Ws16 5 В MAX7219 8x8

Olej пише:

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

Вот это важно!
Потому как китайские друзья выслали мне вослед ещё индикатор с тем же драйвером MAX7219, но с установленными 2-мя 8-сегментными индикаторами типа 3641AH, вот такими:
led_3641ah_med.jpg

Неактивний

#7 2018-04-02 18:14:53

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: индикатор Ws16 5 В MAX7219 8x8

Вот теперь всё становится на свои места (с пользовательской точки зрения, не влезая в детали того, как оно там устроено на уровне электроники):
- MAX7219 - это не индикатор (хотя они продают под таким названием именно индикаторы ... в переводе с китайского на волапюк hmm ), MAX7219 - это плата аппаратного драйвера индикаторов 2-х разных типов, которые могут монтироваться на такую плату: 7-сегментный цифровой или 8х8 светодиодов LED панели;
- у MAX7219 протокольно интерфейс Serial 3-Wire... это такой "недоношенный SPI";
- аппаратно под протокол используются 3 линии (пина) MAX7219: Din, Cs, CLK + 2 пина питания VCC 5В и GND;
- в Arduino IDE этот "недоношенный SPI" поддерживается библиотекой LedControl, которая и обеспечивает протокольный обмен;

Неактивний

#8 2018-04-02 18:29:31

Olej
Учасник
З Харьков
Зареєстрований: 2018-03-08
Повідомлень: 234

Re: индикатор Ws16 5 В MAX7219 8x8

Olej пише:

Нашёл вот аналогичную траблу и её решение в другом месте - 8×8 LED Matrix MAX7219 - неправильное исполнение элементарного кода:

Ещё полезное обсуждение в тему - о формировании цифр на 7-сегментном индикаторе: Вывод информации на 4 разрядный 7сегментный индикатор - здесь + предыдущих 3 страницы форумного обсуждения ... можно полезное извлечь.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму