Описание функций графической библиотеки для LCD-экрана от Nokia 1100

Решил сделать небольшое описание функций библиотеки или моя попытка как-то написать документацию к библиотеке.

Описание функций графической библиотеки для LCD-экрана от Nokia 1100

void nlcd_Init(void);
Инициализация контроллера PCF8814, очистка экрана, инициализация библиотеки.

void nlcd_Clear(void);
Очистка экрана. Очищает экран (и видеобуфер) и устанавливает текущие координаты в нулевые координаты (левый верхний угол).

void nlcd_SendByte(char mode,unsigned char c);
Отправляет байт в контроллер PCF8814. Если передаются данные, то они также сохраняются в видеобуфере.
Параметры:
mode:
— CMD_LCD_MODE — передается команда контроллеру
— DATA_LCD_MODE — передаются данные
с: передаваемый байт

void nlcd_Putc(unsigned char c);
Выводит знак с кодом C в текущее место

void nlcd_Print(char * message);
Выводит строку символов из оперативной памяти, начиная с текущего знакоместа.

void nlcd_PrintF(unsigned char * message);
Выводит строку символов из программной памяти, начиная с текущего знакоместа.

void nlcd_GotoXY(char x,char y);
Устанавливает текущие координаты. Отсчет идет в знакоместах 5×8.
Параметры:
x: 0..15 — координата по оси X
y: 0..7 — координата по оси Y

void nlcd_Inverse(unsigned char mode);
Устанавливает режим инверсии для всего экрана.
Параметры:
mode:
— INV_MODE_ON — инверсия включена
— INV_MODE_OFF — инверсия выключена

void nlcd_Pixel (unsigned char x,unsigned char y, unsigned char pixel_mode);
Выводит пиксель в указанные координаты.
Параметры:
x: 0..95 — координата по оси X
y: 0..64 — координата по оси Y
Отсчет ведется от верхнего левого угла.
pixel_mode:
— PIXEL_ON — пиксель устанавливается
— PIXEL_OFF — пиксель сбрасывается (стирается)
— PIXEL_INV — пиксель инвертируется

void nlcd_Line (unsigned char x1,unsigned char y1, unsigned char x2,unsigned char y2, unsigned char pixel_mode);
Рисует линию. Линия рисуется из точки с координатами x1, y1 в точку с координатами x2,y2.
Параметры:
x1, x2: 0..95
y1,y2: 0..64
pixel_mode: такой же как и в функции nlcd_Pixel.

void nlcd_Circle(unsigned char x, unsigned char y, unsigned char radius, unsigned char fill, unsigned char pixel_mode);
Рисует закрашенную или нет окружность с координатами центра x, y и радиусом radius.
Параметры:
x: 0..95
y: 0..64
fill:
— FILL_ON — заливка выполняется
— FILL_OFF — заливка не выполняется
pixel_mode: такой же как и в функции nlcd_Pixel.

void nlcd_Rect (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char fill, unsigned char pixel_mode);
Рисует прямоугольник. Пары значений x1, y1 и x2, y2 задают координаты противоположных углов по диагонали. Прямоугольник может иметь заливку.
Параметры:
x1, x2: 0..95
y1, y2: 0..64
fill: такой же как и в функции nlcd_Circle
pixel_mode: такой же как и в функции nlcd_Pixel.

 

СКАЧАТЬ

AVR GCC

Файлы графического варианта библиотеки (версия 2.1):

Файлы библиотеки

nokia1100_lcd_lib.h
nokia1100_lcd_lib.c
nokia1100_lcd_font.h

nlcd11100_graph_2.1.zip — эти же файлы в zip-архиве

nokia1100_lib_all_v2.zip — оба варианта библиотеки (текстовый и графический) в zip-архиве. Версии 1.1 и 2.1.

[Свернуть]

CodeVision AVR

Адаптация библиотеки для компилятора CodeVision AVR: ujin, за что ему громаднейшее спасибо!

Файлы библиотеки

nokia1100_lcd_lib.h
nokia1100_lcd_lib.c
nokia1100_lcd_fnt.h

nokia1100_lcd_lib_cvavr.zip — эти же файлы в zip-архиве

[Свернуть]

Еще одна адаптация первого варианта библиотеки для CodeVision от ujin

Readme от ujin

в папку INC кидаем хидеры
в папку lib помещаем файл с расширением lib.

незабываем, если не заработает в реале, файл либ открываем блокнотом и редактируем задержки..+ естесвенно в хидере nokia.h
производим настройку пинов порта под каторый используете лсд.

[Свернуть]
Файлы библиотеки

nokia_lcd_lib.h
nokia_lcd_fnt.h

nokia_lcd.lib
nokia_lcd_cvavr2.zip — эти же файлы в zip-архиве

[Свернуть]

Arduino

Библиотеку на платформу Ардуино портировал igorok107, за что ему громаднейшее спасибо!

Файлы библиотеки

PCF8814-master.zip — версия библиотеки с графическими функциями (аналог версий 2.x). Так же доступно на GitHub.

PCF8814_light-master.zip — версия библиотеки без графических функций (аналог версий 1.x). Так же доступно на GitHub.

[Свернуть]

Дополнительно

VSM-модели экранов Nokia для Proteus

symbol generate.zip — генератор символов шрифта для библиотеки
image_generate.zip — генератор картинок для библиотеки

[Свернуть]

Вливайтесь в обсуждение

  62 комментария

  • спасибо за столь хорошо описанную библиотеку!

  • Уважаемый автор, а для cvavr у Вас не завалялось библиотеки?

    • К сожалению, у меня с CVAVR не сложилось… 🙁
      Но я думаю эту либу можно переделать для CVAVR с минимальными изменениями.

  • И еще вопрос, с экраном Nokia 3310 работать будет?

    • Нет, с 3310 работать не будет. Там немного другой контроллер экрана и другая система команд.

  • ув. Chiper, выложите пожалуйста сюда рабочий для компиляции проект под среду AVRStudio (у меня версия 4.19), никак не получается скомпилировать свой проект…

    • А в чем у вас возникает проблема?

      • появляется единственная ошибка:
        Interrupts/Exception caught (code = 0xc00000fd, addr = 0x4227d3)
        и HEX файл не генерится..
        Я взял ваши библиотеки и собрал из них проект с расширением APS, названия хедеров брал те же, в окне «AVR-GCC» файл nokia1100_lcd_lib.c создавал в Other Files, хедеры — в Header Files.
        Как бы мне сюда выложить свой APS проект, может посмотрите почему не компилирует?

        • Шлите архив мне на почту. Попробую помочь.

          •  какой ваш емаил-то?

            • xsidmail [гаф-гаф] почтагугла.com

              [задумчиво]… надо бы сделать возможность пользователям добавлять файлы на сайт…[/задумчиво]

              • отослал, как всё получится вышлите мне проект тоже на емаил,
                спасибо большое!

              • Вечером посмотрю. Где бы еще Студию 4.19 взять…

              • Так и не получил письма. Может в спам улетело? У меня нигде его нет.

              • Все, нашел. Действительно в спам попало… Хз почему так гугл подумал…

        • Вы просто файл nokia1110_lcd_lib.c в проекте добавили не в ту секцию. Надо его добавлять в Source Files, а вы его добавили в Other Files.

          • ага, я ещё вчера так додумался сделать — всё заработало. 🙂
            В протеусе по крайней мере работает норм..соберу на макетке, отпишусь, спасибо за помощь!

  • Chiper, скажите пожалуйста,  можно ли инвертировать не весь экран, а строку?
    Спасибо

    • В библиотеке в том виде котором она сейчас, нельзя (я думал про это, но потом отказался). Существует 2 решения:

      — переписать процедуру вывода символа, введя, к примеру, дополнительный параметр, который будет задавать режим вывода, как в процедуре nlcd_Pixel
      — не переделывать библиотеку, а там где нужна инверсия строки, сначало вывесли текст, а потом поверх нарисовать закрашенный прямоугольник с параметром pixel_mode — PIXEL_INV

      Как поступить — решать вам. Результат будет одинаков.

      • Если получится попробую добавить еще одну функцию вывода, а если нет-буду рисовать прямоугольники:)

        • Та а че думать то… Процедура вывода символа может выглядеть примерно так:

          //******************************************************************************
          // Вывод символа на LCD-экран NOKIA 1100 в текущее место
          //  c: код символа
          void nlcd_Putc(unsigned char c, unsigned char pixel_mode)
          {
          	unsigned char datas;
          	
          	if (c>127) c=c-64; 	// Переносим символы кирилицы в кодировке CP1251 в начало второй
          						// половины таблицы ASCII (начиная с кода 0x80)
          	
          	for ( unsigned char i = 0; i < 5; i++ )
          	{
          		datas = pgm_read_byte(&(nlcd_Font[c-32][i]));
          		switch(pixel_mode)
          		{
          			case PIXEL_INV:
          				datas=datas xor $FF;			// Инвертируем выводимый байт
          				break;
          		}
          		nlcd_SendByte(DATA_LCD_MODE,datas);
              }
          	nlcd_SendByte(DATA_LCD_MODE,0x00); // Зазор между символами по горизонтали в 1 пиксель
          }
          

          Естественно, надо в остальной библиотеке поменять вызовы на этот вариант, с указанием pixel_mode.

          • Вылезает ошибка

             In file included from test.c:6:c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c: In function ‘nlcd_Putc’:c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c:173: error: expected ‘;’ before ‘xor’c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c:173: error: stray ‘$’ in program

            • Замени xor на символ ^.

              •  [code] In file included from test.c:6:
                c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c: In function ‘nlcd_Putc’:
                c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c:173: error: stray ‘$’ in program
                c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c:173: error: ‘FF’ undeclared (first use in this function)
                c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c:173: error: (Each undeclared identifier is reported only once
                c:/winavr-20100110/lib/gcc/../../avr/include/avr/nokia1100_lcd_lib_graph.c:173: error: for each function it appears in.)[/code]

            • еще $FF надо заменить на 0xFF. Блин, запарился с разными стандартами написания шестнадцатеричных чисел…

  • Александр

    10 лет назад

    Подскажите совсем начинающему, как перейти на кодировку UTF8?
    Работаю под Linux.
    Или, если не трудно, сделайте соответствующую библиотеку.

  • Виталий

    10 лет назад

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

    • То, что отзеркалено — смотри процедуру инициализации, в ней все дело. Там и задается режим работы.

  • Виталий

    10 лет назад

    Спасибо разобрался. Еще хотел спросить, как свои символы выводить ? Если можно пример кода какого либо не стандартного символа.

    • Генерируете символ с помощью программы http://digitalchip.ru/uploads/proj_files/nokia1100_v2/symbol%20generate.zip и выводите его. Посмотрите как выводится символ в файле nokia1100_lcd_lib.c, изображение которого берется из nokia1100_lcd_font.h. Процедура void nlcd_Putc(unsigned char c), а в ней цикл:
      for ( unsigned char i = 0; i < 5; i++ ) nlcd_SendByte(DATA_LCD_MODE,pgm_read_byte(&(nlcd_Font[c-32][i])));

      • Виталий

        10 лет назад

        Не совсем понял, в програмирование только вникаю, начал с ардуины. Сгенерировал 5 чисел в HEX, куда их вставить, и в стоке Lcd.Putc(unsigned char c); что такое С ? Запутался в 3 березах. А сайту форум нужен наверное, для таких как я со своими вопросами.

        • Что то типа примера:
          //Гдето вне процедуры main()
          const unsigned char mySym[5] PROGMEM ={0x022, 0x33, 0x44, 0x55, 0x66}; // Твои сгенерированные HEX

          ...

          //Процедура вывода твоих сгенерированных символов
          nlcd_GotoXY(1,1);
          for ( unsigned char i = 0; i < 5; i++ ) nlcd_SendByte(DATA_LCD_MODE,pgm_read_byte(&(mySym[i])));

          Как-то так...

          • А сайту форум нужен наверное, для таких как я со своими вопросами.

            Я думал уже об этом, но пока на сайте не такая уж большая активность, что б делать форум. А смысла в «мертвом» форуме нет. Хотя я о форуме уже задумывался…

          • Виталий

            10 лет назад

            Сделал вот так
            #include <PCF8814.h> 
             
            PCF8814 Lcd(13,11,10,9); // LCD sets SPI SCLK: 7 pin, SDA: 8 pin, CS: 9 pin. RESET: 6 pin
            const unsigned char mySym[5] PROGMEM ={0xFF, 0xF9, 0xF9, 0xFF, 0x3C};
            char i;
            void setup() { 
              Lcd.Init();
            }
             
            void loop() {
              Lcd.Clear();
              Lcd.GotoXY(1,1);
              for ( unsigned char i = 0; i < 5; i++ );
              Lcd.SendByte(DATA_LCD_MODE,pgm_read_byte(&(mySym[i])));
              delay (2000);
            }
            выводит одну строку из символа, что не так ?
            Но по идее можно же это все заменить срочкой
            Lcd.Putc(unsigned char c);
            только как не пойму.

  • Виталий

    10 лет назад

    Еще бы узнать как вывести содержимое переменной на дисплей , если там например трехзначное число ?

    • Ну… Тут уж каждый использует те методы, которые ему больше подходят. Кто-то использует библиотечные функции printf, sprintf, snprintf и fprintf, кто-то пишет свои функции. Все зависит от задачи и требований к ресурсам и скорости работы.

      Вот пример функции преобразования целочисленного числа в строку:

      char* itoa(int value, char* result, int base)
      {
          // check that the base if valid
          if (base < 2 || base > 36) { *result = '\0'; return result; }
         
          char* ptr = result, *ptr1 = result, tmp_char;
          int tmp_value;
         
          do{
              tmp_value = value;
              value /= base;
              *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];
          } while ( value );
         
          // Apply negative sign
          if (tmp_value < 0) *ptr++ = '-';
          *ptr-- = '\0';
          while(ptr1 < ptr){
              tmp_char = *ptr;
              *ptr--= *ptr1;
              *ptr1++ = tmp_char;
          }
          return result;
      }
  • Скачал библиотеку для среды ардуино, так и не понял какие куда пины втыкать для Arduino Mega 2560 R3 кто говорит что пины переназначены кто говорит что их нужно переназначить. Мучаюсь третий день.
    Дисплей от Nokia 1112, подскажите какие пины куда втыкать.

    • По умолчанию, библиотека работает на аппаратном SPI, соответственно и сигналы подключаются к линиям SPI. Можно в файле PCF8814.h включить софтовый режим, для этого необходимо раскомментировать строку: #define SOFT_SPI
      Инициализация осуществляется строчкой: PCF8814 Lcd(13,11,10,6); в которой и задаются пины для подключения. // LCD sets SPI SCLK: 13 pin, SDA: 11 pin, CS: 10 pin. RESET: 9 pin

  • День или вечер добрый. Достался мне тут дисплейчик от нокии 1280(он же 1202). Как я понял этот дисплейчик работает на контроллере STE2007. Ваша библиотека корректно будет работать с этим дисплеем или надо будет переделывать? Прошу прощения если вопрос покажется вам банальным.

  • Товарищи! Как впилить библиотеку без граф интерфейса в codevision?
    сломал всю голову уже!

  • Раскомментировал #define FULL_CHARSET
    на lcd nokia 1202 отображается две английские буквы вместо одной русской буквы.
    в чем проблема?
    nlcd_GotoXY(0,0);
    nlcd_Print(«А»);
    дисплей выводит PP

  • DJ_URAN — с библиотекой есть примерчик как фтыкать эту библу а также описаны основные моменты чтоб заработало всё….
    Vov- может проблема с русской кодировкой в среде в которой вы пишите программу?

  • здравствуйте опять же с разрешения ув тов чипера, могу выложить адаптированную графическую библиотеку под кодвижен,конечно же если всё это актуально.(сам на 100 не уверен но кодвижен всё компилирует без сообщений об ошибках.тестово проверил работу в проте — при прогоне программы текст выводился «зеркально» в функции инициализации экранчика есть закоменченые команды отзеркаливания по х и у, при раскоменте дисплейчик стал выводить техт как положено, добавлю это всё только в проте как на реальном экранчике пока нет возможности проверить.Если нада то приложу и примерчик для прота,так же о чем упоминал чипер,что библиотека требовательна к озу мк и компилиться будет не на все мк ,условно компилятор кодвижена сожрал и показал расход в 1374 байтов из них 780 это видеоозу для лцд.то есть на мегу8 проект компилируется с выводом ошибки о нехватки озу.

  • Серга

    9 лет назад

    подкиньте пожалуйста текстовое меню
    хочется устройство сделать с меню ,а времени и ума катострофически мало на меню.
    Буду очень признателен!.

    • видел на хабре статью с исходниками…название статьи «Реализация многоуровневого меню для Arduino с дисплеем»

  • Серый

    7 лет назад

    а где версия 1.1 (только текст) ?

  • русский{
    -хорошо, это я скачал 2.2 библиотеку графических функций и copilar и записать Arduino не показывает мне ничего, ни один из примеров не является книжный магазин за другой книжный магазин, чтобы Arduino записанные в моменты моменты Это показывает мне, какой пример должен был писать на экране, и помещается на работу с другой библиотекой; правда заключается в том, что я хочу использовать эту библиотеку функций очень хорошо сделаны, и хотелось бы, чтобы помочь мне в этой проблеме.

    -Спасибо.
    }

    English{
    -Good, it turns out that I downloaded the library 2.2 of the graphic functions and copying and recording in the arduino does not show me anything, none of the examples that the library has, after I record another library to the Arduino, for moments of instants me Shows what the examples had to write on the screen, and set to work with the other library; The truth is that I want to use this library its functions are very well done and I would love to help me in this inconvenience.

    -Thank you.
    }

    Español Latino{
    -buenas, resulta que he descargado la librería 2.2 la de las funciones gráficas y al copilar y grabar en el arduino no me muestra nada, ninguno de los ejemplos que tiene la librería, luego de que grabo otra librería al arduino, por momentos de instantes me muestra lo que los ejemplo tenia que escribir en la pantalla, y se coloca en marcha a trabajar con la otra librería; la verdad es que quiero usar esta librería sus funciones están muy bien hechas y me encantaría que me ayudaran en este inconveniente.

    -gracias.
    }

  • Cyberdemon

    7 лет назад

    разобрался уже

  • Это не библиотека а недоделанное гамницо с которым не возможно работать. Ошибка на ошибке. Заибался их исправлять и в этоге нихера не добился.

    • govnocoder

      7 лет назад

      оба варианта библиотеки (текстовая и графическая) работают, проверил лично. Проект в AVR студии компилируется без ошибок. Все функции библиотек не проверял, но в тех которыми пользовался ошибок не заметил.
      Единственное, что при использовании функций вывода текста нужно делать явное приведение типов, чтоб компилятор не надоедал предупреждениями. Также переменные видеобуфера и координат почему-то были обьявлены в заголовочном файле, и как результат еще одно предупреждение компилятора. Однако работает и так.
      СПАСИБО автору за труд.

      • govnocoder

        7 лет назад

        не отходя от кассы сам себя поправлю насчет видеобуфера, потому что ступил: где же ему еще быть обьявленным как не в заголовочном файле, чтобы к нему был ручной доступ …. Я его в тексте программы ни разу не упомянул, не нужен мне он был пока что, вот компилятор и выдал предупреждение про обьявленную но не использованную переменную 🙂 Так что все ОК

      • Спасибо за поддержку.

  • Алексей

    6 лет назад

    данная библиотека для Ардуино не первая ни вторая, к сожалению, не заработала на экране от нокии 1110i. Как ни старался.

  • Алескей

    5 лет назад

    Фух …. подключил все таки эту библиотеку к экрану 1110i только после того как за комментировал в библиотеке в разделе void PCF8814::Init(void) такие строки :

    //SendByte(CMD_LCD_MODE,0xE2); // *** SOFTWARE RESET
    ./SendByte(CMD_LCD_MODE,0x3A); // *** Use internal oscillator
    //SendByte(CMD_LCD_MODE,0xEF); // *** FRAME FREQUENCY:
    //SendByte(CMD_LCD_MODE,0x04); // *** 80Hz
    //SendByte(CMD_LCD_MODE,0xD0); // *** 1:65 divider
    //SendByte(CMD_LCD_MODE,0xEB); // Включить температурную компенсацию
    //SendByte(CMD_LCD_MODE,0x20); // Запись в регистр Vop

    после этоого инициализация прошла успешно.

    ЗЫ: не получается выводить переменные почему-то. Может кто подскажет?
    int counter = 10;
    Lcd.Print(counter);

    выводит какие-то крякозябры весто «10»

  • Алескей

    5 лет назад

    Фух спустя месяц я подключил всетаки экран от nokia 1110i. Дисплей инициализировался только после того как закоментировал в библиотеке в разделе void PCF8814::Init(void) { вот такие строки

    //SendByte(CMD_LCD_MODE,0xE2); // *** SOFTWARE RESET
    //SendByte(CMD_LCD_MODE,0x3A); // *** Use internal oscillator
    //SendByte(CMD_LCD_MODE,0xEF); // *** FRAME FREQUENCY:
    //SendByte(CMD_LCD_MODE,0x04); // *** 80Hz
    //SendByte(CMD_LCD_MODE,0xD0); // *** 1:65 divider
    //SendByte(CMD_LCD_MODE,0xEB); // Включить температурную компенсацию
    //SendByte(CMD_LCD_MODE,0x20); // Запись в регистр Vop

    теперь не получается выводить переменные почему-то, может кто подскажет.
    int counter = 10;
    Lcd.GotoXY(10,6);
    Lcd.Print(counter);

    выводит кракозябры и все.

    • Для экономии места в библиотеке нет функций для перевода значений переменных в текстовый вид. Lcd.Print выводит только строку символов.
      Если вам надо выводить переменные, то добавьте в ваш проект соответствующие функции для перевода значений переменных в строку.

      Вот, например функция для перевода целых (integer) в строку:

      char* itoa(int value, char* result, int base)
      {
      	// check that the base if valid
      	if (base < 2 || base > 36) { *result = '\0'; return result; }
       
      	char* ptr = result, *ptr1 = result, tmp_char;
      	int tmp_value;
       
      	do{
      		tmp_value = value;
      		value /= base;
      		*ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];
      	} while ( value );
       
      	// Apply negative sign
      	if (tmp_value < 0) *ptr++ = '-';
      	*ptr-- = '\0';
      	while(ptr1 < ptr){
      		tmp_char = *ptr;
      		*ptr--= *ptr1;
      		*ptr1++ = tmp_char;
      	}
      	return result;
      }

      Использовать можно как-то так:

      int a = 57;
      char* result;
       
      result = itoa(a, result, 10)
       
      Lcd.GotoXY(10,6);
      Lcd.Print(result);

Добавить комментарий

Отправляя комментарий, вы автоматически принимаете правила комментирования на сайте.

Правила комментирования на сайте:

  1. Не следует писать исключительно заглавными буквами. Это дурной тон.
  2. Запрещены комментарии не относящиеся к тематике сайта и самой статье.
  3. Запрещены реплики оскорбляющие других участников проекта. Давайте будем взаимовежливы.
  4. Запрещены нецензурные слова, идиоматические выражения, призывы к межнациональной и межконфессиональной розни.
  5. Запрещено обсуждение наркотических веществ и способов их применения.
  6. Запрещены комментарии с призывами к нарушению действующего законодательства РФ (Уголовного и Административного кодекса).
  7. Запрещены ссылки на сторонние ресурсы без согласования с владельцем сайта.
  8. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова.

Следует учитывать следующее - все комментарии проверяются на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удален, а Ваш IP-адрес будет добавлен в черный список без предупреждения!

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