# Bus LCD for Arduino Этот набор состоит из двух частей: - `bus_monitor.py` получает координаты автобусов `94` и `96` с `https://rnd.don.su/get_bus`, считает примерное время до заданных точек и формирует две строки по 16 символов. - `arduino_bus_display/arduino_bus_display.ino` принимает эти строки по `Serial` и выводит их на LCD 16x2 через `LiquidCrystal`. Используются точки: - `94`: `47.291609, 39.694856` - `96`: `47.220350, 39.632114` На экране выводится короткая ASCII-строка, например: ```text 94 #8 09m 2.4km 96 #6 03m 180m ``` `#8` это сколько автобусов скрипт видит на маршруте в текущем ответе API. `09m` это примерный ETA, `2.4km` или `180m` это расстояние по прямой до нужной точки. Это не маршрутное время, а оценка по текущему положению и скорости автобуса. ## Подключение LCD Прошивка использует ваш вариант подключения: - `RS -> D6` - `EN -> D7` - `DB4 -> D8` - `DB5 -> D9` - `DB6 -> D10` - `DB7 -> D11` ## Что установить на компьютере ```bash python3 -m pip install -r requirements.txt ``` ## Как загрузить прошивку Откройте файл `arduino_bus_display/arduino_bus_display.ino` в Arduino IDE и загрузите его в плату. Скорость `Serial`: `115200`. ## Как запустить скрипт Если хотите сначала просто посмотреть вывод в консоль: ```bash python3 bus_monitor.py --once ``` Если Arduino подключена по USB: ```bash python3 bus_monitor.py --serial-port /dev/ttyACM0 ``` Полезные параметры: - `--interval 5` или другое значение, если нужно изменить частоту обновления - по умолчанию обновление идет каждые `5` секунд - `--baud-rate 115200` скорость `Serial` - `--once` один запрос без бесконечного цикла ## Примечания - Скрипт сам получает свежие `cookie` и `csrf-token` с главной страницы `rnd.don.su`, поэтому не использует одноразовые токены из браузера. - Если стандартный LCD 1602 плохо показывает кириллицу, это нормально. Поэтому строки на экране оставлены в ASCII.