#1 2022-11-29 13:12:30

Alex.Sar
Учасник
Зареєстрований: 2022-11-29
Повідомлень: 2

Маршрутовказівник на тролейбус

Доброго дня, шановні професіонали та любителі Arduino.

Я маю на меті зробити світлодіодний маршрутовказівник на 2 табло (фронтальне і бокове) на старий тролейбус.

Апаратна частина:
- Ардуіно Нано,
- світлодіодна стрічка RGB на три контакти,
- зчитувач карт пам'яті micro SD,
- монохромний LCD екран 1602,
- кнопочки,
- блок живлення.

На даному етапі потрібна допомога по коду.

А саме
- підключити до Ардуіно дві кнопки, які будуть мати значення - Вгору, Вниз - що виконують функцію вибору маршруту з файлу txt,
- кожен маршрут записаний в файлі в новому окремому рядку, по типу
    1, ПОЧАТКОВА, КІНЦЕВА
    2, ВУЛИЦЯ1, ВУЛИЦЯ2
    3,ПРОСПЕКТ, ПАРК
- відповідно виводити все це на екран та світлодіодну стрічку.


Бажаю всім успіхів у ваших проектах.
Буду вдячний за допомогу.  smile

Неактивний

#2 2022-11-29 17:07:16

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 972

Re: Маршрутовказівник на тролейбус

где хранится файд txt  ?

Неактивний

#3 2022-11-29 17:35:57

Roman1984
Учасник
Зареєстрований: 2017-02-17
Повідомлень: 85

Re: Маршрутовказівник на тролейбус

Там указано, что есть считыватель карты памяти, значит видимо текст на карте памяти. Больше интересует что за RGB лента, на которую необходимо выводить надпись) Если это табло, основанное на ленте, то хотелось бы знать о нем подробнее. Или же нужно спроектировать табло на базе ленты?

Остання редакція Roman1984 (2022-11-29 17:36:52)

Неактивний

#4 2022-11-30 11:13:53

Alex.Sar
Учасник
Зареєстрований: 2022-11-29
Повідомлень: 2

Re: Маршрутовказівник на тролейбус

Думаю, краще по-етапно йти по пунктах, які необхідно реалізувати.

Я підключив модуль картки micro SD до Arduino.
На карту пам'яті записав файл з ім'ям test.txt.
У файлі містяться номера маршрутів та назви початкової та кінцевої зупинки, як вказано вище.
Кожен новий маршрут записаний в новому рядку.
На монітор порта я можу вивести вміст файлу (усі можливі маршрути).

Що саме потрібно -
щоб при натисканні кнопки Вгору/Вниз можна було виводити на екран лише один рядок з файлу.
От в цьому поки і є проблема. Я не знаю як написати такий код і прив'язати туди кнопки.


Дякую.

Неактивний

#5 2022-11-30 11:33:29

Roman1984
Учасник
Зареєстрований: 2017-02-17
Повідомлень: 85

Re: Маршрутовказівник на тролейбус

Ну я могу реализовать переключение и вывод указанного рядка из файла на дисплей 1602 без вывода на табло из летны, так как не знаю по какой схеме она построена. Если что можем обсудить: petrovskyi.rv@gmail.com

Остання редакція Roman1984 (2022-11-30 11:34:12)

Неактивний

#6 2023-01-08 12:52:55

vrd
Гість

Re: Маршрутовказівник на тролейбус

Самым оптимальным является использование gps модуля с самоопределением направления маршрута. Но для этого лучше всего подходит esp32сам со встроенным слотом SD.
У ардуины всего 16Мгц тактовая частота и поэтому нормальную точность + считывание файла она не потянет. Надо будет мудрить с прерываниями.

#7 2023-01-08 13:22:06

vrd
Гість

Re: Маршрутовказівник на тролейбус

В дополнение желательно поставить выносной датчик компаса. Для контроля маршрута.

#8 2023-01-13 20:06:17

zDimaby
Учасник
З Хмельницкий
Зареєстрований: 2017-09-09
Повідомлень: 10

Re: Маршрутовказівник на тролейбус

vrd пише:

Самым оптимальным является использование gps модуля с самоопределением направления маршрута. Но для этого лучше всего подходит esp32сам со встроенным слотом SD.
У ардуины всего 16Мгц тактовая частота и поэтому нормальную точность + считывание файла она не потянет. Надо будет мудрить с прерываниями.

Не зовсім потрібно мудрити smile Але без таймерів ніяк. Ардуіно нано вистачає щоб считати 5 GPS пакетів в секунду здається і це потолок якщо не меньше також ще залежить від бібліотеки і протокола. Але 1 пакет в секунду з головою вистачить + використання інших операцій считати дані з sd.. наприклад є функція визначення скільки метрів до зупинки "А", коли прийшли в радіусі 20м на цю зупинку то через 2хв показуєм іншу  hmm!

int distanceBetween(double lat1, double long1, double lat2, double long2) {
  // повертає відстань у метрах між двома вказаними позиціями
  // у вигляді десяткових градусів широти та довготи зі знаком. Використовує велике коло
  // Розрахунок відстані для гіпотетичної сфери радіусом 6372795 метрів.
  // Оскільки Земля не є точною кулею, похибки округлення можуть становити до 0,5%.
  // Надано Мартеном Ламерсом
  double delta = radians(long1 - long2);
  double sdlong = sin(delta);
  double cdlong = cos(delta);
  lat1 = radians(lat1);
  lat2 = radians(lat2);
  double slat1 = sin(lat1);
  double clat1 = cos(lat1);
  double slat2 = sin(lat2);
  double clat2 = cos(lat2);
  delta = (clat1 * slat2) - (slat1 * clat2 * cdlong);
  delta = sq(delta);
  delta += sq(clat2 * sdlong);
  delta = sqrt(delta);
  double denom = (slat1 * slat2) + (clat1 * clat2 * cdlong);
  delta = atan2(delta, denom);
  return delta * 6372795;
}

Остання редакція zDimaby (2023-01-16 02:51:00)

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму