Оглавление:

Платформа с гироскопическим датчиком для головоломки-лабиринта: 3 шага
Платформа с гироскопическим датчиком для головоломки-лабиринта: 3 шага

Видео: Платформа с гироскопическим датчиком для головоломки-лабиринта: 3 шага

Видео: Платформа с гироскопическим датчиком для головоломки-лабиринта: 3 шага
Видео: Workshop по информатике 2024, Декабрь
Anonim
Платформа с гироскопическим датчиком для головоломки-лабиринта
Платформа с гироскопическим датчиком для головоломки-лабиринта

Это руководство было создано в соответствии с требованиями проекта курса Make в Университете Южной Флориды (www.makecourse.com)"

Этот простой проект вдохновлен самобалансирующейся платформой, которая принимает обратную связь от датчика акселерометра. Проверьте это, если вы еще этого не сделали.

В проекте используется Arduino UNO - простой в использовании микроконтроллер, который вы можете получить на сайтах интернет-магазинов! В этом руководстве я покажу, как вы можете создать свою собственную программируемую наклонную платформу - от процесса проектирования до поиска деталей, файлов для 3D-печати, сборки и программирования. Держись и вперед!

Шаг 1. Необходимые компоненты и детали, напечатанные на 3D-принтере

Необходимые компоненты и детали, напечатанные на 3D-принтере
Необходимые компоненты и детали, напечатанные на 3D-принтере
Необходимые компоненты и детали, напечатанные на 3D-принтере
Необходимые компоненты и детали, напечатанные на 3D-принтере
Необходимые компоненты и детали, напечатанные на 3D-принтере
Необходимые компоненты и детали, напечатанные на 3D-принтере

Список компонентов, используемых в проекте:

1. Микроконтроллер Arduino UNO.

2. Макет с перемычками.

3. Коробка.

4. круглая платформа

5. лабиринт.

6. Ссылки - 3 "Нет"

7. База для установки трех сервоприводов.

8. Датчик гироскопа / акселерометра. (MPU6050)

Провода 9,1 кв. Мм (500 см) - 4 шт.

10. Стальные шарики диаметром 3 мм.

Большинство деталей, используемых в проекте, напечатаны на 3D-принтере, и я прикрепил файл stl. файлы, готовые к печати.

Соберите все детали, как показано на рисунках. Лабиринт приклеен к круглой платформе горячим способом, как на картинке. Три сервопривода должны быть приклеены горячим способом к основанию, напечатанному на 3D-принтере, которое крепится на крышке коробки. Коробка содержит Arduino UNO и макетную плату, собранные, как показано на рисунке. Настройка макета будет обсуждена на следующем шаге.

После сборки окончательный прототип должен выглядеть, как на последней картинке.

Шаг 2: Настройка макетной платы

Макетная плата
Макетная плата
Макетная плата
Макетная плата
Макетная плата
Макетная плата

После сборки Arduino, датчик акселерометра и сервоприводы подключаются, как описано ниже.

Положительная и отрицательная шины на макетной плате подключены к 5 В и GND Arduino соответственно. Датчик подключается к Arduino с помощью полуметровых проводов, которые должны быть припаяны к датчику так, чтобы контакты VCC и GND датчика были подключены к положительным и отрицательным шинам на макетной плате соответственно. Контакты SCL и SDA датчика должны быть подключены к аналоговым контактам A5 и A4 Arduino. Контакты PWM трех сервоприводов подключены к 2, 3, 4 контактам Arduino соответственно, а контакты + ve и -ve всех сервоприводов подключены к направляющим + ve и -ve макетной платы. на этом наши связи закончены.

Шаг 3: Код для проекта

вы можете загрузить библиотеки MPU6050 и Servo из Интернета и использовать их в своем проекте. Скомпилируйте и загрузите следующий код в Arduino, и проект готов. Наклоните датчик, и вы увидите, как лабиринт наклоняется в том же направлении! На решение головоломки уходит некоторое время, так как это немного сложно, но играть с ней весело.

#включают

#включают

#включают

Серво Серво1;

Серво Серво2;

Серво Серво3;

Датчик MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

установка void ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

пустой цикл ()

{

sensor.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);

топор = карта (топор, -17000, 17000, 0, 180);

ау = карта (ау, -17000, 17000, 0, 180);

Serial.print ("ax =");

Serial.print (топор);

Serial.print ("ау =");

Serial.println (ау);

if (ax <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (сервоПос3-); }

if (ax 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (сервоПос3-); }

if (ax> 120 && ay> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

if (ax == 90 && ay == 90) {

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

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