max7219 русские буквы

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Reputation: 74
Posts: 1201
Joined: 5 Apr 2013
With us: 6 years 2 months

#1by Дим » 16 Dec 2017, 20:15

phpBB [media]


Для того что бы матрица max7219 могла выводить кириллицу нужно скачать две библиотеки:
1. Adafruit-GFX-Library-master
2. arduino-Max72xxPanel-master

Adafruit-GFX-Library-master.rar
(254.71 KiB) Downloaded 709 times
arduino-Max72xxPanel-master.rar
(44.36 KiB) Downloaded 676 times


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

Code: Select all

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>


int pinCS = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf <a href="<a href="<a href="http://arduino.cc/en/Reference/SPI" rel="nofollow">http://arduino.cc/en/Reference/SPI</a>" rel="nofollow"><a href="http://arduino.cc/en/Reference/SPI" rel="nofollow">http://arduino.cc/en/Reference/SPI</a></a>" title="<a href="<a href="http://arduino.cc/en/Reference/SPI" rel="nofollow">http://arduino.cc/en/Reference/SPI</a>" rel="nofollow"><a href="http://arduino.cc/en/Reference/SPI" rel="nofollow">http://arduino.cc/en/Reference/SPI</a></a>" rel="nofollow"><a href="<a href="http://arduino.cc/en/Reference/SPI" rel="nofollow">http://arduino.cc/en/Reference/SPI</a>" rel="nofollow"><a href="http://arduino.cc/en/Reference/SPI" rel="nofollow">http://arduino.cc/en/Reference/SPI</a></a></a> )
// Uno or Duemilanove DIN 11 (MOSI) CLK 13 (SCK)
int numberOfHorizontalDisplays = 1;
int numberOfVerticalDisplays = 5;

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

String tape = "";
int wait = 100; // In milliseconds

int spacer = 2; // Промежуток между символами (кол-во точек)
int width = 5 + spacer; // The font width is 5 pixels 

/* Recode russian fonts from UTF-8 to Windows-1251 */

String utf8rus(String source)
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };

  k = source.length(); i = 0;
  while (< k) {
    n = source[i]; i++;
    if (>= 0xC0) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (== 0x81) { n = 0xA8; break; }
          if (>= 0x90 && n <= 0xBF) n = n + 0x2F;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (== 0x91) { n = 0xB7; break; }
          if (>= 0x80 && n <= 0x8F) n = n + 0x6F;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}

String Serial_Read() {
  unsigned char c; // переменная для чтения сериал порта
  String Serial_string = ""; // Формируемая из символов строка
  while (Serial.available() > 0) { // Если в сериал порту есть символы
    c = Serial.read(); // Читаем символ
    //Serial.print(c,HEX); Serial.print(" "); Serial.print(c);
    if (== '\n') {  // Если это конец строки
          return Serial_string; // Возвращаем строку 
    }
    if (== 0xB8) c = c - 0x01;  // Коррекция кодов символа под таблицу ???? так как русские символы в таблице сдвинуты относительно стандартной кодировки utf на 1 символ
    if (>= 0xBF && c <= 0xFF) c = c - 0x01;
    Serial_string = Serial_string + String(char(c)); //Добавить символ в строку
  }
  return Serial_string; 
}



void setup() {
  Serial.begin(9600);
  tape = utf8rus("*** Налетай, торопись - покупай живопись! ***");
  matrix.setIntensity(3); //Используйте значение от 0 до 15 для яркости
  matrix.setRotation(matrix.getRotation()+3); //1 - 90  2 - 180   3 - 270

}
void loop() {

  if (Serial.available()){
    tape=Serial_Read();
  } 
  for 
( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) 
       
{
    matrix.fillScreen(LOW);

    int letter = i / width; // номер символа выводимого на матрицу 
    
    int x 
= (matrix.width() - 1) - i % width;  
    int y 
= (matrix.height() - 8) / 2; // центрировать текст по вертикали

    while ( x + width - spacer >= 0 && letter >= 0 ) {
      if ( letter < tape.length() ) {
        matrix.drawChar(x, y, tape[letter], HIGH, LOW,1);
      }
      letter--;
      x -= width;
    }
    matrix.write(); // Отправить растровое изображение для отображения
    delay(wait);
  }
}
i love you mxIni Mysql

! ! !


Александр
Avatar
Александр

Цвет светодиодов Синий

#2by Александр » 27 May 2018, 10:19

Добрый день.
Использовал этот скетч, все работает! Но возникла проблема.
При замене матрицы красного цвета на матрицу синего, они светятся сплошником и текст не выводится. В чем может быть проблема? Матрицы внешне одинаковые с лицевой и оборотной стороны.
Эту матрицу пытаюсь подключить : https://ru.aliexpress.com/item/LED-8x8-commone-5/ ... g0s.9042311.0.0.274233edDDHgGx

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Reputation: 74
Posts: 1201
Joined: 5 Apr 2013
With us: 6 years 2 months

#3by Дим » 27 May 2018, 11:07

Точно не знаю, но возможно у них различия катод/анод. Поищи информацию о характеристиках обоих матриц.
i love you mxIni Mysql

Arduino
Ефрейтор
Ефрейтор
Avatar
Arduino
Ефрейтор
Ефрейтор
Reputation: 8
Posts: 25
Joined: 19 Apr 2017
With us: 2 years 2 months

#4by Arduino » 29 May 2018, 11:35

Или попробовать развернуть матрицу вверх ногами

Александр
Avatar
Александр

#5by Александр » 30 May 2018, 14:02

Дим wrote:Точно не знаю, но возможно у них различия катод/анод. Поищи информацию о характеристиках обоих матриц.
ДА, скорее всего катод/анод перевернуты. т.к. внешне дорожки одинаковые под смолой.
Характеристики 1088AS (красные) нашел, а вот по HELC 1388APB (синии) вообще ничего нету.
Переворачивать и отзеркаливать и вобщем методом тыка ничего не получилось.

Alexis_777
Avatar
Alexis_777
Reputation: 0
Posts: 1
Joined: 2 Nov 2018
With us: 7 months 23 days

#6by Alexis_777 » 2 Nov 2018, 19:37

Смоделировал устройство в Proteus.
скриншот
При отправке через порт сообщение выводит какие-то кракозябры.
Пробовал отправлять через монитор порта в Arduino IDE и других терминалах результат один и тот же.
Что это может быть?


  • Similar Topics
    Replies
    Views
    Last post

Return to “Программирование”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest