first commit
This commit is contained in:
51
.gitignore
vendored
Normal file
51
.gitignore
vendored
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Arduino build files
|
||||||
|
*.elf
|
||||||
|
*.hex
|
||||||
|
*.bin
|
||||||
|
*.eep
|
||||||
|
|
||||||
|
# Build directories
|
||||||
|
build/
|
||||||
|
.build/
|
||||||
|
Release/
|
||||||
|
Debug/
|
||||||
|
|
||||||
|
# Arduino IDE
|
||||||
|
*.arduino-cache/
|
||||||
|
.arduino15/
|
||||||
|
|
||||||
|
# PlatformIO
|
||||||
|
.pio/
|
||||||
|
.pioenvs/
|
||||||
|
.piolibdeps/
|
||||||
|
|
||||||
|
# VSCode Arduino extension
|
||||||
|
.vscode/c_cpp_properties.json
|
||||||
|
.vscode/arduino.json
|
||||||
|
.vscode/launch.json
|
||||||
|
|
||||||
|
# IDE settings
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS files
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Backup files
|
||||||
|
*.bak
|
||||||
|
*.orig
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Local configuration
|
||||||
|
secrets.h
|
||||||
|
config_local.h
|
||||||
175
README.md
Normal file
175
README.md
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
# Тренажер "Бесконечная Лестница"
|
||||||
|
|
||||||
|
Система управления тренажером "Бесконечная лестница" на базе Arduino Mega 2560.
|
||||||
|
|
||||||
|
## Описание проекта
|
||||||
|
|
||||||
|
Данный проект представляет собой систему управления тренажером с функциями:
|
||||||
|
- Управление скоростью двигателя (0-100%)
|
||||||
|
- Два режима тренировки: по времени и по дистанции
|
||||||
|
- Отображение параметров на LCD дисплее 16x2
|
||||||
|
- Отображение скорости на LED матрице 8x MAX7219
|
||||||
|
- Локальное управление кнопками
|
||||||
|
- Радиоуправление (7 кнопок)
|
||||||
|
- Система безопасности с аварийной остановкой
|
||||||
|
- Сохранение параметров в EEPROM
|
||||||
|
|
||||||
|
## Необходимое оборудование
|
||||||
|
|
||||||
|
- Arduino Mega 2560
|
||||||
|
- LCD дисплей 16x2 с I2C модулем (адрес 0x27)
|
||||||
|
- LED матрица 8x MAX7219
|
||||||
|
- Энкодер LPD3806-360BM-G5-24C
|
||||||
|
- Драйвер двигателя с PWM управлением
|
||||||
|
- Кнопки управления
|
||||||
|
- Приемник радиоуправления
|
||||||
|
|
||||||
|
## Установка библиотек
|
||||||
|
|
||||||
|
### Способ 1: Через менеджер библиотек Arduino IDE
|
||||||
|
|
||||||
|
1. Откройте Arduino IDE
|
||||||
|
2. Перейдите в меню **Скетч** → **Подключить библиотеку** → **Управлять библиотеками...**
|
||||||
|
3. Установите следующие библиотеки:
|
||||||
|
|
||||||
|
| Библиотека | Поиск в менеджере | Автор |
|
||||||
|
|------------|-------------------|-------|
|
||||||
|
| LiquidCrystal I2C | `LiquidCrystal I2C` | Frank de Brabander |
|
||||||
|
| LedControl | `LedControl` | Eberhard Fahle |
|
||||||
|
|
||||||
|
### Способ 2: Ручная установка
|
||||||
|
|
||||||
|
1. Скачайте библиотеки:
|
||||||
|
- [LiquidCrystal_I2C](https://github.com/johnrickman/LiquidCrystal_I2C)
|
||||||
|
- [LedControl](https://github.com/wayoda/LedControl)
|
||||||
|
|
||||||
|
2. Распакуйте архивы в папку библиотек Arduino:
|
||||||
|
- **Windows:** `C:\Users\<Пользователь>\Documents\Arduino\libraries\`
|
||||||
|
- **Linux:** `~/Arduino/libraries/`
|
||||||
|
- **macOS:** `~/Documents/Arduino/libraries/`
|
||||||
|
|
||||||
|
3. Перезапустите Arduino IDE
|
||||||
|
|
||||||
|
### Встроенные библиотеки (устанавливать не нужно)
|
||||||
|
|
||||||
|
Следующие библиотеки входят в состав Arduino IDE:
|
||||||
|
- `SPI.h` — для работы с SPI шиной (LED матрица)
|
||||||
|
- `Wire.h` — для работы с I2C шиной (LCD дисплей)
|
||||||
|
- `EEPROM.h` — для сохранения параметров
|
||||||
|
|
||||||
|
## Прошивка Arduino
|
||||||
|
|
||||||
|
### Шаг 1: Подготовка
|
||||||
|
|
||||||
|
1. Установите [Arduino IDE](https://www.arduino.cc/en/software) (версия 1.8.x или 2.x)
|
||||||
|
2. Установите необходимые библиотеки (см. выше)
|
||||||
|
3. Подключите Arduino Mega 2560 к компьютеру через USB кабель
|
||||||
|
|
||||||
|
### Шаг 2: Настройка Arduino IDE
|
||||||
|
|
||||||
|
1. Откройте файл `stairs_arduino.ino` в Arduino IDE
|
||||||
|
2. Выберите плату: **Инструменты** → **Плата** → **Arduino Mega or Mega 2560**
|
||||||
|
3. Выберите процессор: **Инструменты** → **Процессор** → **ATmega2560 (Mega 2560)**
|
||||||
|
4. Выберите порт: **Инструменты** → **Порт** → выберите COM-порт Arduino
|
||||||
|
- **Windows:** `COM3`, `COM4` и т.д.
|
||||||
|
- **Linux:** `/dev/ttyACM0` или `/dev/ttyUSB0`
|
||||||
|
- **macOS:** `/dev/cu.usbmodem*`
|
||||||
|
|
||||||
|
### Шаг 3: Загрузка прошивки
|
||||||
|
|
||||||
|
1. Нажмите кнопку **Загрузка** (стрелка вправо) или используйте `Ctrl+U`
|
||||||
|
2. Дождитесь сообщения "Загрузка завершена"
|
||||||
|
3. Откройте **Монитор порта** (`Ctrl+Shift+M`) для проверки работы
|
||||||
|
- Установите скорость: **115200 бод**
|
||||||
|
|
||||||
|
## Схема подключения
|
||||||
|
|
||||||
|
### Управление двигателем
|
||||||
|
| Пин Arduino | Назначение |
|
||||||
|
|-------------|------------|
|
||||||
|
| 9 | PWM выход |
|
||||||
|
| 19 | Enable выход |
|
||||||
|
|
||||||
|
### Кнопки локального управления
|
||||||
|
| Пин Arduino | Назначение |
|
||||||
|
|-------------|------------|
|
||||||
|
| 22 | Выбор режима |
|
||||||
|
| 23 | Увеличение параметра |
|
||||||
|
| 24 | Уменьшение параметра |
|
||||||
|
| 25 | Сброс параметров |
|
||||||
|
| 26 | Старт |
|
||||||
|
| 27 | Стоп |
|
||||||
|
| 30 | Уменьшение скорости |
|
||||||
|
| 31 | Увеличение скорости |
|
||||||
|
| 29 | Аварийная кнопка (грибок) |
|
||||||
|
| 32 | Лазерные датчики безопасности |
|
||||||
|
|
||||||
|
### Радиоуправление
|
||||||
|
| Пин Arduino | Назначение |
|
||||||
|
|-------------|------------|
|
||||||
|
| 40 | Скорость + |
|
||||||
|
| 41 | Скорость - |
|
||||||
|
| 42 | Старт/Стоп |
|
||||||
|
| 43 | Выбор режима |
|
||||||
|
| 44 | Сброс |
|
||||||
|
| 45 | Уменьшение |
|
||||||
|
| 46 | Увеличение |
|
||||||
|
|
||||||
|
### Датчики
|
||||||
|
| Пин Arduino | Назначение |
|
||||||
|
|-------------|------------|
|
||||||
|
| 2 | Энкодер A (INT0) |
|
||||||
|
| 3 | Энкодер B (INT1) |
|
||||||
|
| 33 | Концевой выключатель |
|
||||||
|
|
||||||
|
### Дисплеи
|
||||||
|
| Пин Arduino | Назначение |
|
||||||
|
|-------------|------------|
|
||||||
|
| 20 (SDA) | LCD I2C данные |
|
||||||
|
| 21 (SCL) | LCD I2C тактирование |
|
||||||
|
| 51 (MOSI) | LED матрица DIN |
|
||||||
|
| 52 (SCK) | LED матрица CLK |
|
||||||
|
| 53 (SS) | LED матрица CS |
|
||||||
|
|
||||||
|
### Светодиоды статуса
|
||||||
|
| Пин Arduino | Назначение |
|
||||||
|
|-------------|------------|
|
||||||
|
| 35 | Зеленый (работа) |
|
||||||
|
| 36 | Красный (стоп) |
|
||||||
|
| 37 | Аварийный |
|
||||||
|
|
||||||
|
## Устранение неполадок
|
||||||
|
|
||||||
|
### Arduino не определяется
|
||||||
|
|
||||||
|
**Windows:**
|
||||||
|
- Установите драйвер CH340 (для китайских клонов Arduino)
|
||||||
|
- Проверьте диспетчер устройств
|
||||||
|
|
||||||
|
**Linux:**
|
||||||
|
- Добавьте пользователя в группу `dialout`:
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G dialout $USER
|
||||||
|
```
|
||||||
|
- Перезагрузите компьютер
|
||||||
|
|
||||||
|
### Ошибка "avrdude: stk500v2_ReceiveMessage(): timeout"
|
||||||
|
|
||||||
|
- Проверьте правильность выбора платы и порта
|
||||||
|
- Попробуйте другой USB кабель
|
||||||
|
- Нажмите кнопку Reset на Arduino перед загрузкой
|
||||||
|
|
||||||
|
### LCD дисплей не работает
|
||||||
|
|
||||||
|
- Проверьте I2C адрес (может быть 0x27 или 0x3F)
|
||||||
|
- Проверьте подключение SDA/SCL
|
||||||
|
- Настройте контрастность потенциометром на I2C модуле
|
||||||
|
|
||||||
|
### LED матрица не работает
|
||||||
|
|
||||||
|
- Проверьте подключение SPI (DIN, CLK, CS)
|
||||||
|
- Проверьте питание матрицы (5V)
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
Проект разработан для КГЭУ (Казанский государственный энергетический университет).
|
||||||
2568
stairs_arduino.ino
Normal file
2568
stairs_arduino.ino
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user