Т1 "Рожденный побеждать". Часть 2
Уже скоро стартуют Городские соревнования по робототехнике, и наша команда готовит своего робота к участию в категории "Трасса". Предлагаем вам присоединиться к подготовке и в реальном времени наблюдать, что мы делаем.
Мы делаем с нуля телегу, названную Т1 "Рожденный побеждать". Проект состоит из трёх частей: электроника, конструкция, код. В предыдущем посте мы рассказали про электронику, пришло время кода.
Цель работы: сделать абстракцию от железа телеги так, чтобы пилот во время соревнований не задумывался о том, куда что подключено в схеме, а пользовался для опроса датчиков и управлением моторами удобной оболочкой.
Поехали!
Будем писать библиотеку, которую назовем - сюрприз! - T1.
В хэдере сначала опишем дефайнами все пины, к которым что-то подключено, строго по схеме.
И после этого пора объявлять класс. Сделаем в нем пять пебличных методов:
1. ПРОЧИТАЙ_ЛЕВЫЙ_СЕНСОР
2. ПРОЧИТАЙ_ПРАВЫЙ_СЕНСОР
3. ПРОЧИТАЙ_СОНАР
4. СКАЖИ_НАЖАТА_ЛИ_КНОПКА
5. ЕХАЙ!
С первыми четырьмя методами всё понятно-просто, а в случае с методом ЕХАЙ есть о чем подумать. В принципе, тут может быть несколько вариантов, но мы решили в данный момент остановиться на таком: сделать один метод drive(int,int), который принимает два аргумента: скорость левого мотора и скорость правого мотора по порядку. Допустимые значения для каждого аргумента: -255...255. Причем отрицательные значения заставляют мотор крутиться назад со скоростью, взятой по модулю. метод drive(int, int) в данном случае оборачивает четыре приватных метода, которые крутят каждый отдельным мотор в каждую отдельную сторону.
Как минимум один суперминус заключается в том, что при указании скорости ниже какого-то порогового значения по модулю, мотор просто не будет крутиться, потому что ему не хватит тока, сообщаемого через ШИМ. Мы пока не занимались поиском этого порога. Может быть, если будет время, переделаем интерфейс с учетом вот этого всего.
Ну и может вообще такой подход может оказаться не удобным для той задачи, поживем-увидим!
В итоге вот такой у нас получился класс:
Описания методов лежат в cpp файлике. Если кому интересно, можно посмотреть на github.
Мы также добавили пару примеров, как это работает:
Теперь наш пилот, который будет непосредственно писать код на мероприятии не будет греть голову о технических деталях работы телеги, и сможет сосредоточиться на написании алгоритма.
Читайте далее про конструкцию робота!
Метки: программирование, Arduino