Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229

STM32F103C8T6 и дисплей ST7735

02.09.2022, 13:07. Показов 3325. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вывожу график на дисплей, размер окна графика 140х50 = 7000 точек. Сам дисплей 160х128 точек. Сначала - подложку, затем оси, курсоры в виде вертикальных линий, которые постоянно изменяют своё положение, точки графика в виде квадратиков и сам график, соединяющий точки. Точек не более 16. В общей сложности количество выводимых точек, помимо подложки, составляет не более 5% от всего окна. Перерисовывать приходиться не менее 4 раз в секунду. Всё работает даже при большей частоте вывода (10 Гц), но при перерисовке происходит раздражающее мигание. Попробовал другие более скоростные варианты программ вывода, но ничего принципиально не изменилось.
Тогда решил попробовать вариант создания массива результирующей картинки uint16_t img[7000] с тем, чтобы окно, выделенное под график, заполнять не последовательно разными объектами, а одной картинкой. Но такой объём памяти не устраивает Keil, понятно, что ресурсов STM32F103C8T6 не хватает.
Сейчас обдумываю вариант без перерисовки фона, но каждый объект проходить два раза. Сначала с цветом фона с целью замазать рассматриваемый объект, а затем с нужным цветом и текущим его расположением.
Знатоки, что можете посоветовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2022, 13:07
Ответы с готовыми решениями:

ST7735 + STM32
Доброго времени суток :) Помогите,пожалуйста, разобраться с datasheet контроллера ST7735 (дисплей 1.44 tft 128x128) Посмотрел у других...

STM32F4Discovery + дисплейчик ST7735
Привет всем. Попал тут ко мне дисплейчик - http://www.ebay.com/itm/1-8-TFT-LCD-mod ... 1277wt_934 Нашёл проект уважаемого ВитГа -...

STM32F103 + ST7735 + STemWin
Всем здравия. Подскажите пожалуйста с чего начать подключать STemWin? Мануал помогает как-то плохо (пока). Готовый пример на дисковери...

35
Windows must die
672 / 851 / 103
Регистрация: 23.11.2021
Сообщений: 5,006
Записей в блоге: 17
02.09.2022, 13:53
Цитата Сообщение от Юрий_48 Посмотреть сообщение
Сам дисплей 160х128 точек
160×128=20480 бит, т.е. всего-то 2560 байт. В чем проблема?
Если нужен цвет, то можно поступить, как в старых спектрумах и иже с ними: использовать спрайтовую графику. Т.е. квадрат 8×8 пикселей будет кодироваться 8 байтами на bg/fg и двумя байтами цвета. Итого - 10 байт на 256 пикселей, т.е. для вашего цветного дисплея понадобится 3200 байт буфера в ОЗУ, для чего с лихвой хватит (+USB) даже STM32F103C4T6.
Правда, понадобится еще промежуточный буфер, байт на 512, в котором будет формироваться очередной кусок для передачи по SPI посредством DMA в конечном автомате. И все будет отлично работать. И быстро, кстати!

В общем, главное - правильный подход.

Добавлено через 2 минуты
Цитата Сообщение от Юрий_48 Посмотреть сообщение
такой объём памяти не устраивает Keil
Цитата Сообщение от Юрий_48 Посмотреть сообщение
7000
Что-то я не понял: это как так получается? У STM32F103C8T6 аж 20кБ оперативки. И выделить буфер в 7000 байт - это же ни о чем просто!

В общем, налицо в корне неверный подход.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
02.09.2022, 14:51
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Что-то я не понял: это как так получается? У STM32F103C8T6 аж 20кБ оперативки. И выделить буфер в 7000 байт - это же ни о чем просто!
У него зачем-то uint16_t. То есть 14000 байт.
Цитата Сообщение от Юрий_48 Посмотреть сообщение
Знатоки, что можете посоветовать?
Например, генерацию в реальном времени. "Дубовый" способ: при выводе каждого пикселя проверяете все объекты (точки, линии, маркеры) и смотрите попадает ли он во что-нибудь из этого. Если попадает, передаете цвет объекта, если нет - цвет фона. Как проверить попадание точки (x,y) в точку графика (x,y), маркер (x) или линию (x1,y1 - x2,y2) разберетесь сами, это простейшая геометрия.
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229
02.09.2022, 16:49  [ТС]
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Что-то я не понял: это как так получается? У STM32F103C8T6 аж 20кБ оперативки. И выделить буфер в 7000 байт - это же ни о чем просто!
Да, не 7000 байт, а 7000 элементов массива (размер массива) по 2 байта в элементе (16 ти битная раскладка цвета). Итого 14000 байт. Тут призадумаешся.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Например, генерацию в реальном времени. "Дубовый" способ: при выводе каждого пикселя проверяете все объекты (точки, линии, маркеры) и смотрите попадает ли он во что-нибудь из этого. Если попадает, передаете цвет объекта, если нет - цвет фона. Как проверить попадание точки (x,y) в точку графика (x,y), маркер (x) или линию (x1,y1 - x2,y2) разберетесь сами, это простейшая геометрия.
Тоже рассматривал этот вариант - обегать все пиксели, для каждого пикселя обегать все объекты, для кажтого объекта обегать его точки до первой совпадающей. Что то мне внутренний голос подсказывает - "Да ну его нафиг."
Пока прихожу к мысли: "А не скатится ли до 8 ми байтовой раскладке цвета". При этом получается, что можно иметь набор из 256 шестнадцатибитных цветов. То есь иметь ещё 256-ти элементный массивчик, в каждом элементе которго забит 16-ти битный цвет.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
02.09.2022, 17:16
Цитата Сообщение от Юрий_48 Посмотреть сообщение
Тоже рассматривал этот вариант - обегать все пиксели, для каждого пикселя обегать все объекты, для кажтого объекта обегать его точки до первой совпадающей. Что то мне внутренний голос подсказывает - "Да ну его нафиг."
Напрасно. Это не так долго, как кажется на первый взгляд. Тем более что у вас объектов всего ничего, да плюс их расположение заранее известно. Тут можно здорово оптимизировать.
А ведь можно не попиксельно считать, а по столбцам или строкам. Тогда один столбец передаете, а второй в это время считаете.
Цитата Сообщение от Юрий_48 Посмотреть сообщение
Пока прихожу к мысли: "А не скатится ли до 8 ми байтовой раскладке цвета".
Это всего вдвое лучше по памяти.
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229
02.09.2022, 17:49  [ТС]
Цитата Сообщение от Юрий_48 Посмотреть сообщение
Сейчас обдумываю вариант без перерисовки фона, но каждый объект проходить два раза. Сначала с цветом фона с целью замазать рассматриваемый объект, а затем с нужным цветом и текущим его расположением.
А что никто не прокомментировал этот вариант? Совсем не к чёмный? А мне сдаётся - не такой уж и плохой.
0
Windows must die
672 / 851 / 103
Регистрация: 23.11.2021
Сообщений: 5,006
Записей в блоге: 17
02.09.2022, 17:59
Цитата Сообщение от Юрий_48 Посмотреть сообщение
16 ти битная раскладка цвета
Это уж вообще извращение. Даже 8 бит на цвет - извращение, шестибитного за глаза хватит.
Цитата Сообщение от Юрий_48 Посмотреть сообщение
То есь иметь ещё 256-ти элементный массивчик, в каждом элементе которго забит 16-ти битный цвет.
Во, если с индексированным цветом работать, можно сделать массив из 16 цветов, тогда цвет любого пикселя придется кодировать всего четырьмя битами!
Но таки лучше использовать спрайты.
Цитата Сообщение от Юрий_48 Посмотреть сообщение
А что никто не прокомментировал этот вариант?
Потому что в данном случае нельзя будет использовать DMA для пересылки данных (ведь придется конкретные пиксели изменять), а это сильно затормозит работу. Скажем, передали три-четыре пикселя и отправили обратно в суперлуп выполнение, на следующем входе в обработчик КА отправили еще три-четыре пикселя. А с DMA за один проход можно отправлять спокойно по килобайту и больше (смотря сколько ОЗУ можете себе позволить под буфер). В случае двойной буферизации получается, что пока DMA передает один буфер, МК заполняет следующий, исходя из внутреннего представления в памяти буфера экрана.
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229
02.09.2022, 18:21  [ТС]
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Потому что в данном случае нельзя будет использовать DMA для пересылки данных (ведь придется конкретные пиксели изменять), а это сильно затормозит работу. Скажем, передали три-четыре пикселя и отправили обратно в суперлуп выполнение, на следующем входе в обработчик КА отправили еще три-четыре пикселя. А с DMA за один проход можно отправлять спокойно по килобайту и больше (смотря сколько ОЗУ можете себе позволить под буфер). В случае двойной буферизации получается, что пока DMA передает один буфер, МК заполняет следующий, исходя из внутреннего представления в памяти буфера экрана.
Имелось ввиду, что сначала происходит замазывание по всем объектам, а потом по ним же проходится с новым положением и штатными цветами.
Да, для этого дисплея есть только три варианта кодирования цвета 12, 16 и 18 бит. Так, что о желании передачи одним байтом цвета я погорячился.
0
Windows must die
672 / 851 / 103
Регистрация: 23.11.2021
Сообщений: 5,006
Записей в блоге: 17
02.09.2022, 18:27
Да передавать хоть 32бита цвета, я про внутреннее хранение оконного буфера.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
02.09.2022, 21:53
7000 байт? У вас массив 16 бит значит 65535х7000=458 745 000 бит. Ну и как такой массив уберется.

Добавлено через 2 минуты
Видео карты для пк и придумали что бы разгрузить ЦП.
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229
02.09.2022, 22:59  [ТС]
Цитата Сообщение от VladimirU Посмотреть сообщение
7000 байт? У вас массив 16 бит значит 65535х7000=458 745 000 бит. Ну и как такой массив уберется.
Совершенно не понял к чему это.
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Да передавать хоть 32бита цвета, я про внутреннее хранение оконного буфера.
Да это я о своей мысли, что в дисплей можно передавать цвет 8-ми битной кодировкой
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
06.09.2022, 19:59
Юрий_48, как успехи с работой над дисплеем? Вы библиотеку с гигхаб используете? Хочу тоже переходить на дисплей серии ST77xx.
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229
06.09.2022, 21:12  [ТС]
Цитата Сообщение от VladimirU Посмотреть сообщение
Юрий_48, как успехи с работой над дисплеем? Вы библиотеку с гигхаб используете? Хочу тоже переходить на дисплей серии ST77xx.
Спасибо за интерес, даже как то тронут. Пошёл по варианту, предложенному Eddy_Em в посте 7, и сразу прошёл его с полжительным результатом даже без DMA. Сейчас работаю с 8-ми битным масивом (по 4 бита на индекс цвета), состоящим из 3500 элементов. 5200 элементов тоже проглатывается.

Добавлено через 8 минут
Библиотеку с гигхаб не использую, даже не помню залезал ли я туда. С моим дисплеем проблемы с инициализацией. Нормально запускается процентов 70. Иначе приходиться перестартовывать иногда и не один раз. Проблемой пока серьёзно не занимался, единственное поигрался с задержками, но результатов положительных нет.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
06.09.2022, 21:15
Передумал юзать ST77xx выбрал для себя ILI9341 на него больше инфы и примеров в HAL. А то как то знакосентизирующего дисплея уже не хватает. Но мне для вывода текста в основном.
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 907
Записей в блоге: 16
07.09.2022, 08:08
Цитата Сообщение от Юрий_48 Посмотреть сообщение
С моим дисплеем проблемы с инициализацией. Нормально запускается процентов 70. Иначе приходиться перестартовывать иногда и не один раз. Проблемой пока серьёзно не занимался, единственное поигрался с задержками, но результатов положительных нет
покажите последовательность инициализации что ли... у меня есть пара таких дисплеев, вообще никаких проблем с ними не имею при инициализации...
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229
07.09.2022, 11:20  [ТС]
Цитата Сообщение от ВитГо Посмотреть сообщение
покажите последовательность инициализации что ли... у меня есть пара таких дисплеев, вообще никаких проблем с ними не имею при инициализации...
Спасибо за предложение. Может, чего и упустил
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//-----------------------------------------------------------------------------/
// Состояние уровней команд дисплея
//-----------------------------------------------------------------------------/
 
#define LCD_ST7735_CS_0   HAL_GPIO_WritePin(LCD_ST7735_GPIO,LCD_ST7735_CS,GPIO_PIN_RESET);
#define LCD_ST7735_CS_1   HAL_GPIO_WritePin(LCD_ST7735_GPIO,LCD_ST7735_CS,GPIO_PIN_SET);
 
#define LCD_ST7735_A0_0   HAL_GPIO_WritePin(LCD_ST7735_GPIO,LCD_ST7735_A0,GPIO_PIN_RESET);
#define LCD_ST7735_A0_1   HAL_GPIO_WritePin(LCD_ST7735_GPIO,LCD_ST7735_A0,GPIO_PIN_SET);
 
#define LCD_ST7735_RES_0  HAL_GPIO_WritePin(LCD_ST7735_GPIO,LCD_ST7735_RES,GPIO_PIN_RESET);
#define LCD_ST7735_RES_1  HAL_GPIO_WritePin(LCD_ST7735_GPIO,LCD_ST7735_RES,GPIO_PIN_SET);
 
//-----------------------------------------------------------------------------/
// Дополнительные псевдонимы
//-----------------------------------------------------------------------------/
 
// Длительность паузы в миллисекундах
#define LCD_DELAY         10
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void lcd_st7735_send(uint8_t data) 
  {
      HAL_SPI_Transmit(&hspi1, &data, 1, 10);
  }
 
// Отправка команды на дисплей с ожиданием конца передачи
void lcd_st7735_send_cmd(uint8_t cmd) 
  {
      LCD_ST7735_A0_0;
      lcd_st7735_send(cmd);
  }
 
// Отправка данных на дисплей с ожиданием конца передачи
void lcd_st7735_send_data(uint8_t data) 
  {
      LCD_ST7735_A0_1;
      lcd_st7735_send(data);
  }
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void lcd_st7735_init(void) 
{
    hspi1.Instance = SPI1;
    hspi1.Init.Mode = SPI_MODE_MASTER;
    hspi1.Init.Direction = SPI_DIRECTION_1LINE;
    hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
    hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
    hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
    hspi1.Init.NSS = SPI_NSS_SOFT;
    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
    hspi1.Init.TIMode = SPI_TIMODE_DISABLED;
    hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
    hspi1.Init.CRCPolynomial = 10;
    HAL_SPI_Init(&hspi1);
    //HAL_Delay(1000);
    
    // CS=0  - начали сеанс работы с дисплеем
    LCD_ST7735_CS_0;    
    
    // аппаратный сброс дисплея
    LCD_ST7735_RES_0;           // RST=0
    HAL_Delay(LCD_DELAY);       // пауза
    LCD_ST7735_RES_1;           // RST=1
    HAL_Delay(LCD_DELAY);       // пауза
 
    // инициализация дисплея
    lcd_st7735_send_cmd(0x11);  // после сброса дисплей спит - даем команду проснуться
 
    HAL_Delay(LCD_DELAY);       // пауза
 
    lcd_st7735_send_cmd(0x3A);  // режим цвета:
    lcd_st7735_send_data(0x05); //16 бит
 
    lcd_st7735_send_cmd(0x36);  // направление вывода изображения:   
    //lcd_st7735_send_data(0x14); // снизу вверх, справа на лево, порядок цветов RGB
    lcd_st7735_send_data(0xB4); // рабочий
    //lcd_st7735_send_data(0x74); // 
    //lcd_st7735_send_data(0xD4); //
    //lcd_st7735_send_data(0x54); //
    //lcd_st7735_send_data(0x94); //
    //lcd_st7735_send_data(0xA0); //
    lcd_st7735_send_cmd(0x29);  // включаем изображение
  
    LCD_ST7735_CS_1;
}
0
Windows must die
672 / 851 / 103
Регистрация: 23.11.2021
Сообщений: 5,006
Записей в блоге: 17
07.09.2022, 14:17
Юрий_48, жесть-то какая!
А не бывает в массив все это запихать и спокойно в цикле инициализацию выполнить? Зачем копипастить у криворуких китайцев, которые вместо одного цикла будут 100500 раз повторять команды send_data()?
Ох уж эта молодежь…
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 229
07.09.2022, 20:06  [ТС]
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Зачем копипастить у криворуких китайцев, которые вместо одного цикла будут 100500 раз повторять команды send_data()?
Да потому, что я сам в этих делах криворукий и отличить, как здесь выражаются, "говнокод" от цимускода мне сложно. А в плане инициализации - да пусть он хоть какой будет, как нечто программное мне лично он не интересен, лишь бы работал без сбоев, что, к сожалению, в данном случае не так. Он же выполняется всего один раз в начале. Специально заниматься этим вопросом и мыслей близко к этому нет. Вот, ткнули бы носом, где может быть проблема, вот это было бы здорово.
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Ох уж эта молодежь…
Да какая там молодёжь, не льстите - уже 14 лет как на пенсии.
0
Windows must die
672 / 851 / 103
Регистрация: 23.11.2021
Сообщений: 5,006
Записей в блоге: 17
07.09.2022, 20:11
Цитата Сообщение от Юрий_48 Посмотреть сообщение
отличить, как здесь выражаются, "говнокод" от цимускода мне сложно.
Ну так есть же куча всяких разных книжек. Для начала надо С изучить, а потом уже пытаться на нем что-то писать.
Цитата Сообщение от Юрий_48 Посмотреть сообщение
лишь бы работал без сбоев
чтобы без сбоев работал, нужно сначала правильный код написать. А с таким подходом это невозможно. Не нужно брать пример с безмозглых ардуинщиков! Нужно сначала во всем разобраться. И лишь потом делать.
Цитата Сообщение от Юрий_48 Посмотреть сообщение
ткнули бы носом, где может быть проблема
В "спагетти-код" никто даже смотреть не будет. А уж тем паче ­— разбираться с ним.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,696
07.09.2022, 22:13
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Зачем копипастить
Что бы твой код резко заработал на благо бизнеса. Или так и будем из себя строить шибко умных?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2022, 22:13
Помогаю со студенческими работами здесь

LCD ST7735 и ST7789
Кто-нибудь задумывался и реализовывал полноценный модуль для работы с этими дисплеями на уровне вывода реальных строк текста разными...

Дисплей на контроллере ST7735 и Ucglib
Всем привет! Пытаюсь прикрутить Ucglib к своему проекту, но есть несколько проблем. 1. Никак не могу заставить отображаться русский...

st7735 проблема с пролистыванием на экране.
Использую модуль st7735 1.8 tft. Столкнулся с проблемой при создании функции пролистывания на странице: <Изображение удалено> ...

Спрошу-ка я тоже про экнанчик. stm32f4 + st7735
Хоть маленький, зато всего 5 проводов. Вот только не работает в моих руках :( Есть ли у кого-то работающий код под st7735? Вот...

ESP32 Вывод на экран ST7735 с драйвером ST7789 240х240
пытаюсь вывести хоть что нибудь на экран, пока безуспешно #include <Adafruit_ST7735.h> #define TFT_CS 39 // Hallowing...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru