Вывод символов из кодировки Unicode 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вывод символов из кодировки Unicode

Поиск

Вывод текста

Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:

 

HelloWorld.ino

// библиотека для работы с графическими дисплеями

#include <U8g2lib.h>

 

/* пины дисплея:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

|+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E | Vee| A | K |

 

U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,

                       EN, D/I, CS0, CS1, CS2, RESET);

ROTATION: угол поворота дисплея

U8G2_R0: 0 градусов

U8G2_R1: 90 градусов

U8G2_R2: 180 градусов

U8G2_R3: 270 градусов

D0..D7: пины данных

EN: стробирование данных

D/I: команды / данные

CS0-CS2: выбор кристала

RESET: сброс

R/W: чтение / запись (подключайте к земле)

*/

 

// создаём объект для работы с графическим дисплеем

U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,

                     2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);

 

void setup(void)

{

// начало работы с дисплеем

u8g2.begin();

// очищаем память дисплея

u8g2.clearBuffer();

// выбираем шрифт

u8g2.setFont(u8g2_font_ncenB08_tr);

// выводим строку

u8g2.drawStr(0,10,"Hello, World!");

// отсылаем данные на дисплей

u8g2.sendBuffer();

}

 

void loop(void)

{

}

Вывод кириллицы

Для вывода кириллицы используйте соответствующий шрифт.

 

HelloWorldRus.ino

// библиотека для работы с графическими дисплеями

#include <U8g2lib.h>

 

/* пины дисплея:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

|+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E | Vee| A | K |

 

создаём объект для работы с графическим дисплеем

U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,

                       EN, D/I, CS0, CS1, CS2, RESET);

ROTATION: угол поворота дисплея

U8G2_R0: 0 градусов

U8G2_R1: 90 градусов

U8G2_R2: 180 градусов

U8G2_R3: 270 градусов

D0..D7: пины данных

EN: стробирование данных

D/I: команды / данные

CS0-CS2: выбор кристала

RESET: сброс

R/W: чтение / запись (подключайте к земле)

*/

 

U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,

                     2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);

 

void setup(void)

{

// начало работы с дисплеем

u8g2.begin();

// включаем поддержку UTF8

u8g2.enableUTF8Print();

// очищаем память дисплея

u8g2.clearBuffer();

// выбираем шрифт

u8g2.setFont(u8g2_font_4x6_t_cyrillic);

// указываем положение курсора

u8g2.setCursor(0, 5);

// выводим строку на дисплей

u8g2.print("Графический дисплей!");

// выбираем шрифт

u8g2.setFont(u8g2_font_5x8_t_cyrillic);

// указываем положение курсора

u8g2.setCursor(0, 20);

// выводим строку на дисплей

u8g2.print("Разрешение: 128x64");

// выбираем шрифт

u8g2.setFont(u8g2_font_cu12_t_cyrillic);

// указываем положение курсора

u8g2.setCursor(0, 40);

// выводим строку на дисплей

u8g2.print("Русские шрифты");

// выбираем шрифт

u8g2.setFont(u8g2_font_10x20_t_cyrillic);

// указываем положение курсора

u8g2.setCursor(0, 60);

// выводим строку на дисплей

u8g2.print("Амперка DIY");

// отсылаем данные на дисплей

u8g2.sendBuffer();

}

 

void loop(void)

{

}

Вывод геометрических фигур

Методы библиотеки также позволяют выводить геометрические фигуры.

 

GeometricFigures.ino

// библиотека для работы с графическими дисплеями

#include <U8g2lib.h>

 

/* пины дисплея:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

|+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E | Vee| A | K |

 

создаём объект для работы с графическим дисплеем

U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,

                       EN, D/I, CS0, CS1, CS2, RESET);

ROTATION: угол поворота дисплея

U8G2_R0: 0 градусов

U8G2_R1: 90 градусов

U8G2_R2: 180 градусов

U8G2_R3: 270 градусов

D0..D7: пины данных

EN: стробирование данных

D/I: команды / данные

CS0-CS2: выбор кристала

RESET: сброс

R/W: чтение / запись (подключайте к земле)

*/

 

U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,

                        2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);

 

void setup(void)

{

Serial.begin(9600);

// начало работы с дисплеем

u8g2.begin();

// переменные для хранения высоты и ширины дисплея

int width = u8g2.getBufferTileWidth() * 8;

int height = u8g2.getBufferTileHeight() * 8;

// рисуем две диаганали

u8g2.drawLine(0, 0, width - 1, height - 1);

u8g2.drawLine(0, height - 1, width - 1, 0);

// рисуем окружность в центре дисплея и радиусом 30

u8g2.drawCircle(width / 2, height / 2, 30, U8G2_DRAW_ALL);

// рисуем диск (закрашенную окружность) в центре дисплея и радиусом 20

u8g2.drawDisc(width / 2, height / 2, 20, U8G2_DRAW_ALL);

// отсылаем данные на дисплей

u8g2.sendBuffer();

}

 

void loop(void)

{

}

Графический экран позволяет выводить символы из кодировки Юникод

 

DrawUnicode.ino

// библиотека для работы с графическими дисплеями

#include <U8g2lib.h>

 

/* пины дисплея:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

|+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E | Vee| A | K |

 

создаём объект для работы с графическим дисплеем

U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,

                       EN, D/I, CS0, CS1, CS2, RESET);

ROTATION: угол поворота дисплея

U8G2_R0: 0 градусов

U8G2_R1: 90 градусов

U8G2_R2: 180 градусов

U8G2_R3: 270 градусов

D0..D7: пины данных

EN: стробирование данных

D/I: команды / данные

CS0-CS2: выбор кристала

RESET: сброс

R/W: чтение / запись (подключайте к земле)

*/

 

 

U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,

                     2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);

 

// https://github.com/olikraus/u8g2/wiki/u8g2reference#drawutf8

 

void setup(void)

{

Serial.begin(9600);

// начало работы с дисплеем

u8g2.begin();

// выбираем шрифт в кодировке Unicode

u8g2.setFont(u8g2_font_unifont_t_symbols);

// выводим символы из таблицы на дисплей

u8g2.drawUTF8(20, 30, "☀ ☁ ☂ ☃ ☕");

// отсылаем данные на дисплей

u8g2.sendBuffer();

}

 

void loop(void)

{

}

Вывод изображений

Библиотека позволяет выводить на дисплей специально подготовленное растровое графическое изображение в формате .xbm. Для этого воспользуйтесь графическим редактором GIMP. В качестве параметров задаются координаты верхнего левого угла изображения, его размеры и имя массива, в котором хранится закодированное изображение.

DrawBitmap.ino

// библиотека для работы с графическими дисплеями

#include <U8g2lib.h>

 

/* пины дисплея:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

|+5В|Vdd|Vo |DB0|DB1|DB2|DB3|DB4|DB5| DB6| DB7| CS1| CS2| RST| R/W| D/I| E | Vee| A | K |

 

U8G2_KS0108_128X64_F u8g2(ROTATION, D0, D1, D2, D3, D2, D3, D4, D5, D6, D7,

                       EN, D/I, CS0, CS1, CS2, RESET);

ROTATION: угол поворота дисплея

U8G2_R0: 0 градусов

U8G2_R1: 90 градусов

U8G2_R2: 180 градусов

U8G2_R3: 270 градусов

D0..D7: пины данных

EN: стробирование данных

D/I: команды / данные

CS0-CS2: выбор кристала

RESET: сброс

R/W: чтение / запись (подключайте к земле)

*/

 

// размер ширины и высоты изображения

#define matryoshka_width 128

#define matryoshka_height 64

 

// массив изображения

static const unsigned char matryoshka_bits[] U8X8_PROGMEM = {

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x03, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xe0,

0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xc0, 0xe7, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0x00, 0x0f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x01,

0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xc0, 0xc1, 0x03, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0x0f, 0x0e, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf9, 0x1f,

0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xc0, 0xff, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,

0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,

0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,

0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,

0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x7f, 0x38, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x1f,

0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xf0, 0x83, 0x0f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x02, 0x7f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x80,

0x7f, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xf8, 0x1f, 0xc0, 0x7f, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xc0, 0xff, 0x00, 0xc0, 0x03,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x82,

0xff, 0x00, 0x60, 0x06, 0x07, 0xc7, 0x3f, 0x3c, 0xfc, 0x30, 0x0c, 0x1f,

0x00, 0xfc, 0x0f, 0x87, 0xff, 0x00, 0x60, 0x06, 0x07, 0xc7, 0x3f, 0x7e,

0xfc, 0x31, 0x86, 0x39, 0x00, 0xfc, 0xc7, 0x1f, 0xff, 0x00, 0x60, 0x06,

0x8f, 0xc7, 0x30, 0x66, 0xcc, 0x33, 0x83, 0x30, 0x00, 0xfc, 0xe7, 0x3f,

0xff, 0x00, 0x30, 0x0c, 0x8f, 0xc7, 0x30, 0xc3, 0x8c, 0x33, 0x03, 0x30,

0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x30, 0x0c, 0x8b, 0xc6, 0x30, 0xc3,

0x0c, 0xb3, 0x01, 0x30, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x30, 0x0c,

0x8b, 0xc6, 0x30, 0xff, 0x0c, 0xf3, 0x81, 0x3f, 0x00, 0xfc, 0xff, 0xff,

0xff, 0x00, 0xf0, 0x0f, 0xdb, 0xc6, 0x30, 0x03, 0x0c, 0xf3, 0xc1, 0x31,

0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x38, 0x1c, 0xdb, 0xc6, 0x30, 0x03,

0x0c, 0x33, 0xc3, 0x30, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x18, 0x18,

0x73, 0xc6, 0x30, 0x07, 0x8c, 0x33, 0xc6, 0x30, 0x00, 0xfc, 0xff, 0xff,

0xff, 0x00, 0x18, 0x18, 0x73, 0xc6, 0x30, 0xc6, 0xfc, 0x31, 0xc6, 0x31,

0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x18, 0x18, 0x23, 0xc6, 0x30, 0xfc,

0xfc, 0x30, 0x8c, 0x3f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff,

0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,

0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x0c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,

0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,

0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00 };

 

// создаём объект для работы с графическим дисплеем

U8G2_KS0108_128X64_F u8g2(U8G2_R0, 13, 12, 11, 10, 9, 8, 7, 6,

                     2, 3, 5, 4, U8X8_PIN_NONE, U8X8_PIN_NONE);

 

// переменная для хранения цвета изображения

bool color = false;

 

void setup(void)

{

// начало работы с дисплеем

u8g2.begin();

}

 

void loop(void)

{

// очищаем память дисплея

u8g2.clearBuffer();

// устанавливаем цвет рисования

u8g2.setDrawColor(color);

// выводим изображение на дисплей

u8g2.drawXBMP(0, 0, matryoshka_width, matryoshka_height, matryoshka_bits);

// отсылаем данные на дисплей

u8g2.sendBuffer();

// ждём 3 секунды

delay(3000);

// инвертируем цвет

color = !color;

}

Библиотека openGLCD

Для графического дисплея MT-12864J существует более старая библиотека openGLCD. В эту библиотеку входят примеры игры Rocket и Life, которые мы использовали в видеообзоре.

Характеристики

§ Напряжение питания: 3,3—5 В

§ Максимальный ток потребления: 4 мА

§ Потребляемый ток подсветки: 64 мА

§ Разрешения: 128×64

§ Габариты: 75×58×9 мм

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 87; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.006 с.)