Оглавление:

Скоростной трек Arduino Hot Wheels, часть №2 - Код: 5 шагов
Скоростной трек Arduino Hot Wheels, часть №2 - Код: 5 шагов

Видео: Скоростной трек Arduino Hot Wheels, часть №2 - Код: 5 шагов

Видео: Скоростной трек Arduino Hot Wheels, часть №2 - Код: 5 шагов
Видео: Трасса с измерением скорости для машинок HotWheels (hot-wheels-speed-track-2) 2024, Ноябрь
Anonim
Image
Image

В первой части этого проекта мы построили оборудование для прототипа на двух макетных платах.

В этой части мы рассмотрим код, то, как он работает, а затем протестируем его.

Обязательно посмотрите видео выше, чтобы увидеть полный обзор кода и демонстрацию работающего кода.

Шаг 1: ВЕДУЩИЙ и ВЕДОМЫЙ в одном коде

Код состоит из двух частей, но внутри одного файла. Я использую #define и #ifdef, чтобы определить, какой код будет скомпилирован или проигнорирован, поэтому я могу отделить любой код, предназначенный только для макета MASTER, и код, предназначенный только для макета SLAVE.

По сути, если определение MASTER найдено, то любой код, который находится внутри блока кода MASTER, будет скомпилирован, и любой код за пределами этого блока будет удален во время компиляции.

#ifdef MASTER

// Код мастера находится здесь

#еще

#define SLAVE

// Здесь указан специальный код ведомого устройства

#endif

Я также использую ту же технику для #define SLAVE, когда MASTER скомпилирован, поэтому вам нужно только беспокоиться об определении MASTER или не включать определение SLAVE.

Шаг 2. Модули BLUETOOTH обмениваются данными посредством последовательного чтения и записи

В этом проекте только макет SLAVE общается с макетом MASTER. МАСТЕР никогда не отвечает, он только слушает, а затем действует в соответствии с поступающими данными.

Модули говорят и слушают, используя встроенный класс Serial в экосистеме кодирования Arduino.

Модули Bluetooth обмениваются данными на скорости 38400 бод, поэтому оба кодовых тракта инициализируют свою последовательную связь, используя:

Serial.begin (38400);

И РАБОТА использует:

Serial.write (данные здесь);

Чтобы поговорить с МАСТЕРОМ, МАСТЕР использует:

данные = Serial.read ();

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

Шаг 3: управление гонкой

SLAVE сообщает МАСТЕРУ, находится ли он в режиме гонки или готовности, с помощью зеленой кнопки, подключенной к его микроконтроллеру. В режиме готовности ИК-датчики ничего не делают, и MASTER покажет на дисплее 8 черточек, показывая, что он находится в режиме готовности.

Когда ВЕДОМЫЙ сообщает МАСТЕРУ, что гонка собирается начаться, ВЕДОМЫЙ начинает опрашивать ИК-датчики на своей стороне (начало гоночной трассы), чтобы машины могли проехать под ним.

Когда каждая машина проезжает под каждым ИК-датчиком, она отправляет A (автомобиль 1) или B (автомобиль 2) на МАСТЕР.

Когда МАСТЕР получает оценку A или B, он включает таймер для этой конкретной машины, а затем ждет, пока машина проедет под соответствующим ИК-датчиком на финишной прямой.

Дисплей обновляется каждые 50 мс для отображения текущего времени для каждой машины в секундах с двумя десятичными знаками.

Как только обе машины финишируют, МАСТЕР решает, какая машина была самой быстрой, и мигает это время на дисплее, указывая на победителя.

Шаг 4: остальная часть кода

Остальная часть кода - это просто служебный код, который либо управляет отображением данных на 8-значном дисплее, либо обрабатывает логику нажатия кнопок и т. Д.

В конце видео во вводном разделе этого проекта я показываю пример кода, работающего на двух макетных платах, поэтому обязательно ознакомьтесь с ним!

Вы можете взять код этого проекта из моего репозитория на github.

Шаг 5: Что дальше?

Вот и все … в части 3 мы рассмотрим перемещение компонентов с макета на что-то более постоянное … следите за обновлениями!

Надеюсь, вам нравится этот проект!

Следуй за мной на:

www.youtube.com/c/unexpectedmaker

twitter.com/unexpectedmaker

www.facebook.com/unexpectedmaker

www.instagram.com/unexpectedmaker

www.tindie.com/stores/seonr/

Рекомендуемые: