Мазмуну:

Maze Puzzle үчүн Gyro Sensor Controlled Platform: 3 Steps
Maze Puzzle үчүн Gyro Sensor Controlled Platform: 3 Steps

Video: Maze Puzzle үчүн Gyro Sensor Controlled Platform: 3 Steps

Video: Maze Puzzle үчүн Gyro Sensor Controlled Platform: 3 Steps
Video: Йога для красивых ног и плоского живота от Анель Тормановой 2024, Ноябрь
Anonim
Maze Puzzle үчүн Gyro Sensor көзөмөлдөгөн платформа
Maze Puzzle үчүн Gyro Sensor көзөмөлдөгөн платформа

Бул көрсөтмө Түштүк Флорида университетинин 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. A үч servo монтаждоо үчүн база.

8. Gyro/Accelerometer сенсору. (MPU6050)

9.1 чарчы мм зымдар (500см) - 4 Жок

10. 3мм диаметри болот шариктер.

Долбоор үчүн колдонулган бөлүктөрдүн көбү 3D басылган жана мен stl тиркеп койгом. файлдар басып чыгарууга даяр.

Бардык бөлүктөрдү сүрөттөрдө көрсөтүлгөндөй чогултуп алыңыз. Лабиринт сүрөттөгүдөй көрүнүшү үчүн тегерек платформага ысык желимделген. Үч сервос кутунун капкагына орнотулган 3D басылган базага ысык желимделиши керек. Кутуда сүрөттө көрсөтүлгөндөй чогултулган Arduino UNO жана Breadboard бар. Нан тактасын орнотуу кийинки кадамда талкууланат.

Жыйындан кийин акыркы прототип акыркы сүрөттөгүдөй болушу керек.

2 -кадам: Нан тактасын орнотуу

Нан тактасын орнотуу
Нан тактасын орнотуу
Нан тактасын орнотуу
Нан тактасын орнотуу
Нан тактасын орнотуу
Нан тактасын орнотуу

Чогулгандан кийин, Arduino, Accelerometer сенсорлору, төмөндөгүдөй сүрөттөлгөндөй, серволор туташат.

Нан тактасындагы оң жана терс рельстер тийиштүү түрдө 5V жана GND Arduino менен туташкан. Сенсор Arduino менен жарым метр зымдардын жардамы менен туташат, алар сенсорго ширетилет, андыктан сенсордун VCC жана GND казыктары тиешелүү түрдө +ve жана -ve рельсине туташтырылат. Сенсордун SCL жана SDA төөнөгүчтөрү Arduino A5 жана A4 аналогдук казыктарына туташтырылат. Үч сервонун PWM төөнөгүчтөрү тийиштүү түрдө Arduino'дун 2, 3, 4 казыктарына жана бардык серволордун +ve жана -ve казыктары нан табактын +ve жана -ve рельстерине туташкан. Муну менен биздин байланыштар ишке ашат.

3 -кадам: Долбоордун коду

MPU6050 жана Servo китепканаларын интернеттен жүктөп алып, долбоор үчүн колдонсоңуз болот. Төмөнкү кодду түзүңүз жана Arduinoго жүктөңүз жана долбоор даяр. Сенсорду кыйшайтыңыз, ошондо сиз лабиринттин бир тарапка кыйшайганын көрө аласыз! Табышмакты чечүү үчүн бир аз убакыт талап кылынат, анткени ал бир аз татаал, бирок аны менен ойноо кызыктуу.

#кошуу

#кошуу

#кошуу

Servo Servo1;

Servo Servo2;

Servo Servo3;

Сенсор MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

жараксыз орнотуу ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

боштук цикл ()

{

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

ax = карта (балта, -17000, 17000, 0, 180);

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

Serial.print ("ax =");

Serial.print (балта);

Serial.print ("ay =");

Serial.println (ay);

эгер (балта <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

эгер (балта 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

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

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

эгер (ax == 90 && ay == 90) {

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

Сунушталууда: