# LVGL HMI Display UI — Кондиционер-доводчик

UI интерфейс для контроллера кондиционера-доводчика (КД) для ИФП СО РАН.

Проект использует [LVGL](https://github.com/lvgl/lvgl) — графическую библиотеку для встраиваемых систем. Код можно запустить на ПК с помощью SDL симулятора, а затем перенести на микроконтроллер.

## Возможности

- Главный экран со схематичным отображением модулей установки (клапаны, фильтры, нагреватели, вентилятор и т.д.)
- Drag & Drop модулей для включения/отключения
- Панель состояния системы (режим работы, сезон, мастер/слейв)
- Уставка параметров для рабочего и дежурного режимов
- Журнал аварий
- Настройки с защитой паролем (ПИД-регуляторы, коррекция датчиков)
- Всплывающие окна для показаний датчиков и аварий

## Структура проекта

```
├── src/
│   ├── main.c              # Точка входа для симулятора
│   ├── gui_generated.c     # Основной код UI
│   └── gui_generated.h     # Заголовочный файл UI
├── assets/                 # Изображения и шрифты (.c файлы)
├── images/                 # Неформатированные изображения
├── ├── example             # Примеры работы приложения
├── ├── modules             # Исходники изображения модулей
├── lvgl/                   # Библиотека LVGL (submodule)
├── lv_drivers/             # Драйверы LVGL
├── FreeRTOS/               # FreeRTOS (опционально)
├── config/                 # Конфигурация FreeRTOS
├── lv_conf.h               # Конфигурация LVGL
└── CMakeLists.txt          # Сборка проекта
```

## Требования

### Установка SDL и инструментов сборки

- **Windows (vcpkg):** 
  ```bash
  vcpkg install sdl2
  ```
  Также установите MinGW или другой компилятор и `cmake`.

- **macOS (Homebrew):**
  ```bash
  brew install sdl2 cmake make
  ```

- **Linux (Debian/Ubuntu):**
  ```bash
  sudo apt install build-essential cmake libsdl2-dev
  ```

- **Linux (Arch):**
  ```bash
  sudo pacman -S base-devel cmake sdl2
  ```

- **Linux (Fedora):**
  ```bash
  sudo dnf install @development-tools cmake SDL2-devel
  ```

### Проверка установки

```bash
sdl2-config --version
cmake --version
gcc --version
g++ --version
```

## Сборка и запуск

```bash
git clone https://gitea.e-automatics.ru/Trishkin/lvgl-hmi-display-ui
```

### Через командную строку (CMake)

```bash
cd lvgl-hmi-display-ui
mkdir build
cd build
cmake ..
make -j
```

Запуск симулятора:
```bash
../bin/main
```

Или одной командой:
```bash
make run
```

### Через Visual Studio Code

1. Убедитесь, что SDL и инструменты сборки установлены
2. Откройте проект: `File → Open Workspace from File → simulator.code-workspace`
3. Установите рекомендованные расширения
4. Перейдите в `Run and Debug` (Ctrl+Shift+D)
5. Выберите `Debug LVGL demo with gdb` 
6. Нажмите F5 для запуска с отладкой

#### macOS

Apple Clang не поддерживает флаг `-fsanitize=leak`. Для сборки через Homebrew LLVM:

1. `brew install llvm`
2. Cmd+Shift+P → `CMake: Select a Kit` → `[Scan for kits]`
3. Cmd+Shift+P → `CMake: Select a Kit` → выберите clang из homebrew
4. Cmd+Shift+P → `CMake: Configure`
5. Запустите сборку

## Конфигурация

### Разрешение экрана

В файле `lv_conf.h`:
```c
#define MY_DISP_HOR_RES 800
#define MY_DISP_VER_RES 480
```

### FreeRTOS (опционально)

Для включения FreeRTOS:

1. В `CMakeLists.txt` измените:
   ```cmake
   option(USE_FREERTOS "Enable FreeRTOS" ON)
   ```

2. В `lv_conf.h` измените:
   ```c
   #define LV_USE_OS LV_OS_FREERTOS
   ```

## Управление интерфейсом

- **Останов** — выключает вентилятор и нагреватель, клапаны остаются на позициях
- **Дежурный** — переключает в дежурный режим с соответствующими уставками
- **Рабочий** — переключает в рабочий режим
- **Меню** — переход в меню настроек
- **Показания** — всплывающее окно с показаниями датчиков

### Модули установки

Модули можно перетаскивать:
- **Вверх** — активировать модуль (на линии воздуховода)
- **Вниз** — деактивировать модуль

### Пароль для настроек

Пароль по умолчанию: `1234`

## Тестирование

Проект протестирован на:
- macOS (Apple Silicon & Intel)

## Лицензия

MIT License

