32x8 матрица от Sureelectronics

anriko
Offline
Зарегистрирован: 18.04.2011

Матрицу подключил используя: demo16x24scroll.zip, немного поправил под 32x8 и убрал всё кроме скроллинга. Всё работает отлично, но только с латиницей! Помогите с перекодировкой на кириллицу!

Правленный код для 32x8: demo32x8scroll_only.zip

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Засвети фотки))) Сам заказал себе матрицу от Sureelectronics) Правда чуть больше 32х16 Р7 красно/зеленую - сижу жду её)

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

в архиве есть font2.h вот с этим нужно плясать. Да и еще - есть небольшие заморочки с ARDUINO IDE и русским языком. Там сначала юникод, потом асци кодировки идут переводы. Может лучше сделать такую библиотеку-массив с русскими буквами и пробовать эксперементировать. Как вариант набить русский шрифт красивый) и потом писать перевод с ASCI в масив и т.п. очень надеюсь у вас получится, пока сам не имею этой матрицы для экспериментов

anriko
Offline
Зарегистрирован: 18.04.2011

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Оффтопик: Вах вах вах, жду свою уже не могу. Через ибэй заказывали? Как долго шла посылка?

Как в работе эта тема? Ярко светит? Я хочу сделать большие часы со всякими функциями и анимациями

anriko
Offline
Зарегистрирован: 18.04.2011

Adessit пишет:

в архиве есть font2.h вот с этим нужно плясать. Да и еще - есть небольшие заморочки с ARDUINO IDE и русским языком. Там сначала юникод, потом асци кодировки идут переводы. Может лучше сделать такую библиотеку-массив с русскими буквами и пробовать эксперементировать. Как вариант набить русский шрифт красивый) и потом писать перевод с ASCI в масив и т.п. очень надеюсь у вас получится, пока сам не имею этой матрицы для экспериментов

С этой перекодировкой я уже всю голову сломал... Нашёл как сделать, а прикрутить не получается)

Кто подскажет?

Из LoLShield:

/*
  Font drawing library

  Copyright 2009/2010 Benjamin Sonntag <benjamin@sonntag.fr> http://benjamin.sonntag.fr/
  
  History:
        2011-04-11 - v0.0-cyr with russian-letters support by Ilya Danilov, arduino@idanilov.ru
  	2010-01-01 - V0.0 Initial code at Berlin after 26C3

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place - Suite 330,
  Boston, MA 02111-1307, USA.
*/

#include "Font.h"
#include "Charliplexing.h"
#include <inttypes.h>
#include <avr/pgmspace.h>

PROGMEM prog_uchar letters_71[] = {0x38,0x7C,0xC6,0x82,0x8A,0xCE,0x4E,0x00}; //G
PROGMEM prog_uchar letters_83[] = {0x64,0xE6,0xB2,0x9A,0xDE,0x4C,0x00,0x00}; //S
PROGMEM prog_uchar letters_67[] = {0x38,0x7C,0xC6,0x82,0x82,0xC6,0x44,0x00}; //C
PROGMEM prog_uchar letters_76[] = {0x82,0xFE,0xFE,0x82,0x02,0x06,0x0E,0x00}; //L
PROGMEM prog_uchar letters_89[] = {0xE0,0xF2,0x1E,0x1E,0xF2,0xE0,0x00,0x00}; //Y
PROGMEM prog_uchar letters_82[] = {0x82,0xFE,0xFE,0x98,0x9C,0xF6,0x62,0x00}; //R
PROGMEM prog_uchar letters_79[] = {0x38,0x7C,0xC6,0x82,0xC6,0x7C,0x38,0x00}; //O
PROGMEM prog_uchar letters_33[] = {0x00,0x60,0xFA,0xFA,0x60,0x00,0x00,0x00}; //!
PROGMEM prog_uchar letters_65[] = {0x3E,0x7E,0xC8,0xC8,0x7E,0x3E,0x00,0x00}; //A
PROGMEM prog_uchar letters_87[] = {0xFE,0xFE,0x0C,0x18,0x0C,0xFE,0xFE,0x00}; //W
PROGMEM prog_uchar letters_69[] = {0x82,0xFE,0xFE,0x92,0xBA,0x82,0xC6,0x00}; //E
PROGMEM prog_uchar letters_80[] = {0x82,0xFE,0xFE,0x92,0x90,0xF0,0x60,0x00}; //P
PROGMEM prog_uchar letters_50[] = {0x46,0xCE,0x9A,0x92,0xF6,0x66,0x00,0x00}; //2
PROGMEM prog_uchar letters_49[] = {0x42,0x42,0xFE,0xFE,0x02,0x02,0x00,0x00};//1
PROGMEM prog_uchar letters_74[] = {0x0C,0x0E,0x02,0x82,0xFE,0xFC,0x80,0x00}; //J
PROGMEM prog_uchar letters_68[] = {0x82,0xFE,0xFE,0x82,0xC6,0xFE,0x38,0x00}; //D
PROGMEM prog_uchar letters_90[] = {0xE6,0xCE,0x9A,0xB2,0xE2,0xC6,0x8E,0x00}; //Z
PROGMEM prog_uchar letters_70[] = {0x82,0xFE,0xFE,0x92,0xB8,0x80,0xC0,0x00}; //F
PROGMEM prog_uchar letters_88[] = {0xC6,0xEE,0x38,0x10,0x38,0xEE,0xC6,0x00}; //X
PROGMEM prog_uchar letters_75[] = {0x82,0xFE,0xFE,0x10,0x38,0xEE,0xC6,0x00}; //K
PROGMEM prog_uchar letters_53[] = {0xE4,0xE6,0xA2,0xA2,0xBE,0x9C,0x00,0x00}; //5
PROGMEM prog_uchar letters_48[] = {0x7C,0xFE,0x9A,0xB2,0xFE,0x7C,0x00,0x00}; //0
PROGMEM prog_uchar letters_77[] = {0xFE,0xFE,0x60,0x30,0x60,0xFE,0xFE,0x00}; //M
PROGMEM prog_uchar letters_54[] = {0x3C,0x7E,0xD2,0x92,0x9E,0x0C,0x00,0x00}; //6
PROGMEM prog_uchar letters_39[] = {0x20,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00}; //'
PROGMEM prog_uchar letters_85[] = {0xFE,0xFE,0x02,0x02,0xFE,0xFE,0x00,0x00}; //U
PROGMEM prog_uchar letters_57[] = {0x60,0xF2,0x92,0x96,0xFC,0x78,0x00,0x00}; //9
PROGMEM prog_uchar letters_78[] = {0xFE,0xFE,0x60,0x30,0x18,0xFE,0xFE,0x00}; //N
PROGMEM prog_uchar letters_84[] = {0xC0,0x82,0xFE,0xFE,0x82,0xC0,0x00,0x00}; //T
PROGMEM prog_uchar letters_81[] = {0x78,0xFC,0x84,0x8E,0xFE,0x7A,0x00,0x00}; //Q
PROGMEM prog_uchar letters_51[] = {0x44,0xC6,0x92,0x92,0xFE,0x6C,0x00,0x00}; //3
PROGMEM prog_uchar letters_86[] = {0xF8,0xFC,0x06,0x06,0xFC,0xF8,0x00,0x00}; //V
PROGMEM prog_uchar letters_72[] = {0xFE,0xFE,0x10,0x10,0xFE,0xFE,0x00,0x00}; //H
PROGMEM prog_uchar letters_73[] = {0x00,0x82,0xFE,0xFE,0x82,0x00,0x00,0x00}; //I
PROGMEM prog_uchar letters_44[] = {0x00,0x05,0x07,0x06,0x00,0x00,0x00,0x00}; //,
PROGMEM prog_uchar letters_56[] = {0x6C,0xFE,0x92,0x92,0xFE,0x6C,0x00,0x00}; //8
PROGMEM prog_uchar letters_66[] = {0x82,0xFE,0xFE,0x92,0x92,0xFE,0x6C,0x00}; //B
PROGMEM prog_uchar letters_52[] = {0x18,0x38,0x68,0xC8,0xFE,0xFE,0x08,0x00}; //4
PROGMEM prog_uchar letters_55[] = {0xC0,0xC6,0x8E,0x98,0xF0,0xE0,0x00,0x00}; //7

// russian-only letters

PROGMEM prog_uchar letters_cyr_be[]  = {0x82,0xFE,0xFE,0x92,0x9E,0xCC,0x0,0x0};
PROGMEM prog_uchar letters_cyr_ghe[] = {0x82,0xFE,0xFE,0x82,0x80,0xC0,0x0,0x0};
PROGMEM prog_uchar letters_cyr_de[] = {0x6,0x3C,0x7C,0x84,0xFC,0xFC,0x6,0x0};
PROGMEM prog_uchar letters_cyr_zhe[] = {0xC6,0x6C,0x38,0xFE,0xFE,0x38,0x6C,0xC6};
PROGMEM prog_uchar letters_cyr_i[] = {0xFE,0xFC,0x8,0x10,0xFE,0xFE,0x0,0x0};
PROGMEM prog_uchar letters_cyr_short_i[] = {0x7E,0x7C,0x8,0x90,0x7E,0x7E,0x0,0x0};
PROGMEM prog_uchar letters_cyr_el[] = {0x1E,0x3E,0x60,0xC0,0xFE,0xFE,0x0,0x0};
PROGMEM prog_uchar letters_cyr_pe[] = {0xFE,0xFE,0x80,0x80,0xFE,0xFE,0x0,0x0};
PROGMEM prog_uchar letters_cyr_u[] = {0xE6,0xF6,0x36,0x36,0xFE,0xFC,0x0,0x0};
PROGMEM prog_uchar letters_cyr_ef[] = {0x70,0xF8,0x88,0xFE,0xFE,0x88,0xF8,0x70};
PROGMEM prog_uchar letters_cyr_tse[] = {0xFE,0xFE,0x6,0x6,0xFE,0xFE,0x7,0x0};
PROGMEM prog_uchar letters_cyr_che[] = {0xF0,0xF8,0x18,0x18,0xFE,0xFE,0x0,0x0};
PROGMEM prog_uchar letters_cyr_sha[] = {0xFE,0xFE,0x6,0x3E,0x3E,0x6,0xFE,0xFE};
PROGMEM prog_uchar letters_cyr_shcha[] = {0xFE,0xFE,0x6,0x3E,0x3E,0x6,0xFE,0xFF};
PROGMEM prog_uchar letters_cyr_hard_sign[] = {0x80,0xFE,0xFE,0x22,0x3E,0x1C,0x0,0x0};
PROGMEM prog_uchar letters_cyr_soft_sign[] = {0x0,0xFE,0xFE,0x22,0x3E,0x1C,0x0,0x0};
PROGMEM prog_uchar letters_cyr_yeru[] = {0xFE,0xFE,0x22,0x3E,0x1C,0x0,0xFE,0xFE};
PROGMEM prog_uchar letters_cyr_e[] = {0xC6,0xC6,0xD6,0xD6,0xFE,0x7C,0x0,0x0};
PROGMEM prog_uchar letters_cyr_yu[] = {0xFE,0xFE,0x18,0x7C,0xFE,0x82,0xFE,0x7C};
PROGMEM prog_uchar letters_cyr_ya[] = {0x70,0xFA,0x8E,0x8C,0xFE,0xFE,0x0,0x0};
PROGMEM prog_uchar letters_cyr_io[] = {0x82,0xFE,0xFE,0x92,0xBA,0x82,0xC6,0x0};


PROGMEM const unsigned char* font[] = {  
  letters_33 /*!*/,  
  0, 0, 0,  0,  0,  
  letters_39 /*'*/,  
  0,  0,  0,  0,  
  letters_44 /*,*/,  
  0,  0,  0,  
  letters_48 /*0*/,  letters_49 /*1*/,  letters_50 /*2*/,  letters_51 /*3*/,  letters_52 /*4*/,  
  letters_53 /*5*/,  letters_54 /*6*/,  letters_55 /*7*/,  letters_56 /*8*/,  letters_57 /*9*/,  
  0,  0,  0,  0,  0,  0,  0,  
  letters_65 /*A*/,  letters_66 /*B*/,  letters_67 /*C*/,  letters_68 /*D*/,  letters_69 /*E*/,  
  letters_70 /*F*/,  letters_71 /*G*/,  letters_72 /*H*/,  letters_73 /*I*/,  letters_74 /*J*/,  
  letters_75 /*K*/,  letters_76 /*L*/,  letters_77 /*M*/,  letters_78 /*N*/,  letters_79 /*O*/,  
  letters_80 /*P*/,  letters_81 /*Q*/,  letters_82 /*R*/,  letters_83 /*S*/,  letters_84 /*T*/,  
  letters_85 /*U*/,  letters_86 /*V*/,  letters_87 /*W*/,  letters_88 /*X*/,  letters_89 /*Y*/,  
  letters_90 /*Z*/
};

uint16_t fontMin=33;
uint16_t fontMax=120;

// STRANGE BUG : If I put these array too (low-case fonts) the code don't work, and I don't know why ... (don't forget to put fontMax to 120;)
/*
uint8_t letters_117[] = { 0,4, 0,5, 0,6, 1,7, 2,7, 3,4, 3,5, 3,6, 3,7, 9,9 };
uint8_t letters_104[] = { 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 1,4, 2,4, 3,5, 3,6, 3,7, 9,9 };
uint8_t letters_109[] = { 0,4, 0,5, 0,6, 0,7, 1,4, 2,5, 2,6, 2,7, 3,4, 4,5, 4,6, 4,7, 9,9 };
uint8_t letters_114[] = { 0,4, 0,5, 0,6, 0,7, 1,4, 2,4, 9,9 };
uint8_t letters_108[] = { 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 9,9 };
uint8_t letters_116[] = { 0,2, 1,1, 1,2, 1,3, 1,4, 1,5, 1,6, 1,7, 2,2, 2,7, 3,7, 9,9 };
uint8_t letters_107[] = { 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 1,5, 2,4, 2,6, 3,3, 3,7, 9,9 };
uint8_t letters_118[] = { 0,4, 0,5, 1,6, 2,7, 3,6, 4,4, 4,5, 9,9 };
uint8_t letters_98[] = { 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 1,4, 1,7, 2,4, 2,7, 3,5, 3,6, 9,9 };
uint8_t letters_120[] = { 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 1,5, 2,4, 2,6, 3,3, 3,7, 9,9 };
uint8_t letters_119[] = { 0,4, 0,5, 1,6, 1,7, 2,4, 2,5, 3,6, 3,7, 4,4, 4,5, 9,9 };
uint8_t letters_111[] = { 0,5, 0,6, 1,4, 1,7, 2,4, 2,7, 3,5, 3,6, 9,9 };
uint8_t letters_105[] = { 0,1, 0,3, 0,4, 0,5, 0,6, 0,7, 9,9 };
uint8_t letters_110[] = { 0,4, 0,5, 0,6, 0,7, 1,4, 2,4, 3,5, 3,6, 3,7, 9,9 };
uint8_t letters_113[] = { 0,4, 0,5, 1,3, 1,6, 2,3, 2,6, 3,3, 3,4, 3,5, 3,6, 3,7, 3,8, 9,9 };
uint8_t letters_100[] = { 0,2, 0,3, 1,1, 1,4, 1,7, 2,1, 2,4, 2,7, 3,1, 3,2, 3,3, 3,4, 3,5, 3,6, 9,9 };
uint8_t letters_103[] = { 0,3, 0,4, 0,8, 1,2, 1,5, 1,8, 2,2, 2,5, 2,8, 3,2, 3,3, 3,4, 3,5, 3,6, 3,7, 9,9 };
uint8_t letters_112[] = { 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 1,3, 1,6, 2,3, 2,6, 3,4, 3,5, 9,9 };
uint8_t letters_101[] = { 0,4, 0,5, 0,6, 1,3, 1,5, 1,7, 2,3, 2,5, 2,7, 3,4, 3,5, 3,7, 9,9 };
uint8_t letters_102[] = { 0,5, 1,1, 1,2, 1,3, 1,4, 1,5, 1,6, 1,7, 2,1, 2,5, 3,1, 9,9 };
uint8_t letters_115[] = { 0,3, 0,4, 0,7, 1,3, 1,5, 1,7, 2,3, 2,5, 2,7, 3,3, 3,5, 3,6, 3,7, 9,9 };
uint8_t letters_99[] = { 0,5, 0,6, 1,4, 1,7, 2,4, 2,7, 3,4, 3,7, 9,9 };
uint8_t letters_106[] = { 0,8, 1,2, 1,4, 1,5, 1,6, 1,7, 1,8, 9,9 };
uint8_t letters_97[] = { 0,6, 0,7, 1,3, 1,5, 1,7, 2,3, 2,5, 2,7, 3,4, 3,5, 3,6, 3,7, 9,9 };
*/
//void * font2[] = { 0,  0,  0,  0,  0,  0,  &letters_97 /*a*/,  &letters_98 /*b*/,  &letters_99 /*c*/,  &letters_100 /*d*/,  &letters_101 /*e*/,  &letters_102 /*f*/,  &letters_103 /*g*/,  &letters_104 /*h*/,  &letters_105 /*i*/,  &letters_106 /*j*/,  &letters_107 /*k*/,  &letters_108 /*l*/,  &letters_109 /*m*/,  &letters_110 /*n*/,  &letters_111 /*o*/,  &letters_112 /*p*/,  &letters_113 /*q*/,  &letters_114 /*r*/,  &letters_115 /*s*/,  &letters_116 /*t*/,  &letters_117 /*u*/,  &letters_118 /*v*/,  &letters_119 /*w*/,  &letters_120 /*x*/ };

PROGMEM const unsigned char* font_ru[] = {  
 letters_65 /*A*/, letters_cyr_be /*Б*/, letters_66 /*B*/, letters_cyr_ghe /*Г*/,
 letters_cyr_de /*Д*/, letters_69 /*E*/, letters_cyr_zhe /*Ж*/, letters_51 /*3*/,
 letters_cyr_i /*И*/, letters_cyr_short_i /*Й*/, letters_75 /*K*/, letters_cyr_el /*Л*/,  
 letters_77 /*M*/, letters_72 /*H*/, letters_79 /*O*/, letters_cyr_pe /*П*/, 
 letters_80 /*P*/, letters_67 /*C*/, letters_84 /*T*/, letters_cyr_u /*У*/,
 letters_cyr_ef /*Ф*/, letters_88 /*X*/, letters_cyr_tse /*Ц*/, letters_cyr_che /*Ч*/,
 letters_cyr_sha /*Ш*/, letters_cyr_shcha /*Щ*/, letters_cyr_hard_sign /*Ъ*/, letters_cyr_yeru /*Ы*/,
 letters_cyr_soft_sign /*Ь*/, letters_cyr_e /*Э*/, letters_cyr_yu /*Ю*/, letters_cyr_ya /*Я*/
};

uint16_t utf_hi_char = 0;

/* -----------------------------------------------------------------  */
/** Draws a figure (0-9). You should call it with set=1, 
 * wait a little them call it again with set=0
 * @param figure is the figure [0-9]
 * @param x,y coordinates, 
 * @param set is 1 or 0 to draw or clear it
 */
uint8_t Font::Draw(unsigned char letter,int x,int y,int set) {
  uint16_t maxx=0;
  //uint8_t* character;
  unsigned char* character;

  if (letter==' ') return 3+2; //? пробел = типа ничего не рисуем?!

  if (letter>=0x80) { // UTF-8 handling
    if (letter >= 0xc0) {
      utf_hi_char = letter - 0xd0;
      return 0;
    } else {
      letter &= 0x3f;
      if (!utf_hi_char && (letter==1)) 
        character = letters_cyr_io;
      else
       character = (unsigned char *)pgm_read_word(&(font_ru[letter+(utf_hi_char<<6) - 0x10]));
    }    
  } else {
    if (letter<fontMin || letter>fontMax) 
     return 0;
    else 
     character = (unsigned char *)pgm_read_word(&(font[letter-fontMin]));
  }
/*
  if (letter>90) {
     character = (uint8_t*)font2[letter-90];
  } else {
  }
*/


  int i=0;
  unsigned char point_x,point_y;
  do {
    point_x = pgm_read_byte_near(character+i);
    point_y = pgm_read_byte_near(character+i+1);
    if (point_x == 9) break;
    if (maxx < point_x) maxx = point_x;
    if (point_x+x<13 && point_x+x>=0 && point_y+y<9 && point_y+y>=0) {
      LedSign::Set(point_x+x, point_y+y, set);
    }
    i+=2;
  } while (1);

  return maxx+2;
}


/* -----------------------------------------------------------------  */
/** Draw a figure in the other direction (rotated 90°)
 * You should call it with set=1, 
 * wait a little them call it again with set=0
 * @param figure is the figure [0-9]
 * @param x,y coordinates, 
 * @param set is 1 or 0 to draw or clear it
*/
uint8_t Font::Draw90(uint16_t letter,int x,int y,int set) {
  if (letter<fontMin || letter>fontMax) {
    return 0;
  }
  uint8_t* character = (uint8_t*)font[letter-fontMin];

  int i=0;
  while (character[i]!=9) {
    if (
     character[i  ]+ x <13 && 
     character[i  ]+ x >=0 && 
     character[i+1]+ y <8 && 
     character[i+1]+ y >=0
    ) {
        LedSign::Set(character[i]+x, character[i+1]+y, set);
    } 
    i+=2;
  }

/*
  for(int i=0;i<14;i++) {
      if (figuresData[figure][i][0]==9) break;
      if (
        (5-figuresData[figure][i][1])+x<13 && 
        (5-figuresData[figure][i][1])+x>=0 && 
        figuresData[figure][i][0]+y<8 && 
        figuresData[figure][i][0]+y>=0
       ) {
           LedSign::Set((5-figuresData[figure][i][1])+x,figuresData[figure][i][0]+y,set);
       } 
  }
*/

}

 

anriko
Offline
Зарегистрирован: 18.04.2011

Adessit пишет:

Оффтопик: Вах вах вах, жду свою уже не могу. Через ибэй заказывали? Как долго шла посылка?

Как в работе эта тема? Ярко светит? Я хочу сделать большие часы со всякими функциями и анимациями

Я с сайта Sure'a заказывал... шла пару недель (до Питера)... яркость отличная.. 

Буду просто счастлив когда по русски заговорит)

anriko
Offline
Зарегистрирован: 18.04.2011

Вот отличная программка для рисования шрифтов ...

font.zip

Alexander
Offline
Зарегистрирован: 25.04.2010

Антивирус ничего не нашел, но открывать не стал. Если можно поподробнее, что за программа, так как на сайте на котором хостится пусто.

anriko
Offline
Зарегистрирован: 18.04.2011

Программа чистая 100%.. перезалью на файлообменник через 20 мин

вот скрины:

 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Как раз то что долго искал и не мог найти, спасибо большое anriko. Сейчас испробую. Рисует замечательно, еще и код готовит полностью)))) 

Кстати эти массивы которые срздаёт прога -  проверял у себя, работают?

anriko
Offline
Зарегистрирован: 18.04.2011

Adessit пишет:

Как раз то что долго искал и не мог найти, спасибо большое anriko. Сейчас испробую. Рисует замечательно, еще и код готовит полностью)))) 

Кстати эти массивы которые срздаёт прога -  проверял у себя, работают?

Да... работают на ура)

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Ааа теперь вообще не могу дождаться своей матрицы.

Микросхему реальнрого времени подключали уже? 

anriko
Offline
Зарегистрирован: 18.04.2011

Неа... но вот тут хороший пример:

www.arduino.cc/playground/Main/HT1632C

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Ну так если всё красиво рисуется, русский как я понимаю уже нарисовали. Для тестов можно легко тогда вывести русские буквы. Но не прямым текстом, а выводить номер ячейки массива с определнной буквой. Тоесть для слова Аня вывести три значения последовательно, если зная номера позиции массивов с буквами А, н, и я) 

anriko
Offline
Зарегистрирован: 18.04.2011

В том то и дело .. хочется чтоб красиво было всё) ... я тут прикрутил кое-что (коряво конечно) и не все русские буквы показывает, но это мелочи:

#include "MatrixDisplay.h"
#include "DisplayToolbox.h"
#include "font.h"

#define DEMOTIME 30000  // 30 seconds max on each demo is enough.
#define DISPDELAY 100    // Each "display" lasts this long
#define LONGDELAY 1000  // This delay BETWEEN demos

// Macro to make it the initDisplay function a little easier to understand
#define setMaster(dispNum, CSPin) initDisplay(dispNum,CSPin,true)
#define setSlave(dispNum, CSPin) initDisplay(dispNum,CSPin,false)

// 4 = Number of displays
// Data = 10/
// WR == 11
// True. Do you want a shadow buffer? (A scratch pad)

// Init Matrix
MatrixDisplay disp(4,11,10, true);
// Pass a copy of the display into the toolbox
DisplayToolbox toolbox(&disp);

// Prepare boundaries
uint8_t X_MAX = 0;
uint8_t Y_MAX = 0;

PROGMEM prog_uchar utf_recode[] = 
       { 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,0xa5,0xa6,0x4b,0xa7,
0x4d,0x48,0x4f,0xa8,0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,0xac,0xe2,
0xad,0xae,0x62,0xaf,0xb0,0xb1,0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,
0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe,0x70,0x63,0xbf,0x79,0xe4,0x78,
0xe5,0xc0,0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7
        };   
uint16_t utf_hi_char;

void setup() {
  // Fetch bounds (dynamically work out how large this display is)
  X_MAX = (disp.getDisplayCount() * (disp.getDisplayWidth()-1)+1)+8;
  Y_MAX = disp.getDisplayHeight();

  // Prepare displays
  disp.setMaster(0,4);
 // disp.setSlave(1,5);
 // disp.setSlave(2,6);
 // disp.setSlave(3,7);
     Serial.begin(9600);

}



void loop() {
   demoText(); // Bouncy hello
}
// Text bouncing around
void demoText()
{
  int y=Y_MAX-7;
  int x=32;
  boolean textDir = false;
  boolean textRight = false;
  for (int i=0; i < 128; i++) 
  {
//    if(x>=X_MAX) textRight = false;
//    else if(x<=0) textRight = true;

//    if(textRight) x++;
x--;

    drawString(x,y,"ТЕСТ ");
    disp.syncDisplays(); 

    delay(100);
    disp.clear(); 
  } 
}
/*
 * Copy a character glyph from the myfont data structure to
 * display memory, with its upper left at the given coordinate
 * This is unoptimized and simply uses setPixel() to draw each dot.
 */
void drawChar(uint8_t x, uint8_t y, char c)
{
  uint8_t dots;
  if (c >= 'A' && c <= 'Z' ||
    (c >= 'a' && c <= 'z') ) {
    c &= 0x1F;   // A-Z maps to 1-26
  } 
  else if (c >= '0' && c <= '9') {
    c = (c - '0') + 27;
  } 
  else if (c == ' ') {
    c = 0; // space
  }
  for (char col=0; col<= 7; col++) {
    dots = pgm_read_byte_near(&myfont[c][col]);
    for (char row=0; row <= 7; row++) {
      if (dots & (64>>row))   	     // only 7 rows.
        toolbox.setPixel(x+col, y+row, 1);
      else 
        toolbox.setPixel(x+col, y+row, 0);
    }
  }
}


// Write out an entire string (Null terminated)
void drawString(uint8_t x, uint8_t y, char* c)
{
	for(char i=0; i< strlen(c); i++)
	{
		//drawChar(x, y, c[i]);
                  reRus(x, y, c[i]);
                  
  if (c[i] >= '0' && c[i] <= '9') {
    x+=7;
  } else
x+=4;}

	}


void reRus(uint8_t x, uint8_t y, uint8_t r) {
      uint8_t out_char=r;
          uint8_t character;
  if (r>=0x80) { // UTF-8 handling
    if (r >= 0xc0) {
      utf_hi_char = r - 0xd0;
    } else {
      r &= 0x3f;
      if (!utf_hi_char && (r == 1)) 
        character = 0xa2; // Ё
      else if ((utf_hi_char == 1) && (r == 0x11)) 
        character = 0xb5; // ё
      else 
        character = pgm_read_byte_near(utf_recode + r + (utf_hi_char<<6) - 0x10);
            drawChar(x, y, character);
      }    
  } else drawChar(x+3, y, out_char);

} 

 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Урра!!! Ясегодня получил посылку из китая))) Sure electronix молодцы, посылка шла ровно 2 недели))) Даже не ожидал, отправили авиа почтой оказывается)))

Лапоть огромный такой))) Размером почти лист А4. Фотки будут в моей теме завтра.  32х16 5мм светодиоды красно-зелено-оранжевые.

Ваши примеры не пойдут( у меня всё основано на 4х чипах которые с букевой С,  HT1632C. Но это не проблема уже нашел кучу всего. Ксатати тот последний пример на часы который вы запостили выше, как раз для меня)

anriko
Offline
Зарегистрирован: 18.04.2011

А вся новая линейка на HT1632C.. У меня тоже.. Тоже думаю пару матриц 32х16 заказать)

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Если бы они делали такие панели ргб по хорошей цене им бы просто цены бы не было) Я на своей нашел пару пузырьков воздуха в районе светодиодов, у себя таких не замечали?

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Как успехи с выводом русского? 

vvetalik
Offline
Зарегистрирован: 18.12.2011

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

 

anriko
Offline
Зарегистрирован: 18.04.2011

Проглядел я вопрос, Adessit! ... русский полностью вывел, но медленней строка бежит.. а с монитором так вообще ползёт. Скоро опять вернусь к этой матрице.. на работе решил часы сделать с термометром... да на стену её)

anriko
Offline
Зарегистрирован: 18.04.2011

Рисуем шрифты: Font.zip

fox7812
Offline
Зарегистрирован: 09.04.2012

Всем привет. Получил матрицу 32x16. Если не трудно, не могли бы вы обновить ссылку на программу шрифтов и дать ссылку на самый элементарный пример подключения HT1632C к Arduino UNO. Пока не выходит что то у меня. И еще вопрос насколько сложно спалить матрицу неверным подключением к Arduino, а то я перешел уже на метод ненаучного тыка?

Rimidalw
Offline
Зарегистрирован: 04.04.2012

 Привет всем! Что то тема утихла с матрицами, а авторы пропали). Скажите получилось ли у кого нибудь нормально сделать отображения руского текста в прокрутке.

adrin002
Offline
Зарегистрирован: 07.01.2014

anriko пишет:

Матрицу подключил используя: demo16x24scroll.zip, немного поправил под 32x8 и убрал всё кроме скроллинга. Всё работает отлично, но только с латиницей! Помогите с перекодировкой на кириллицу!

Правленный код для 32x8: demo32x8scroll_only.zip

Перезалейте пожалуйста. У кого есть. 

axill
Offline
Зарегистрирован: 05.09.2011

в этой библиотеке есть русский http://code.google.com/p/ht1632c/wiki/Documentation

правда в КОИ-8

fox7812
Offline
Зарегистрирован: 09.04.2012

Я тупо переписывал код шрифта под русские буквы.

xam_xam
Offline
Зарегистрирован: 11.02.2014

Добрый день! Перезалейте пожалуйст:    demo32x8scroll_only.zip