Мазмұны:

Maze Puzzle үшін гироскопиялық сенсормен басқарылатын платформа: 3 қадам
Maze Puzzle үшін гироскопиялық сенсормен басқарылатын платформа: 3 қадам

Бейне: Maze Puzzle үшін гироскопиялық сенсормен басқарылатын платформа: 3 қадам

Бейне: Maze Puzzle үшін гироскопиялық сенсормен басқарылатын платформа: 3 қадам
Бейне: UNBELIEVABLE PUZZLE - manipulation with the balls | How can we get through this maze? 2024, Қараша
Anonim
Maze Puzzle үшін гироскопиялық сенсормен басқарылатын платформа
Maze Puzzle үшін гироскопиялық сенсормен басқарылатын платформа

Бұл нұсқаулық Оңтүстік Флорида университетінің 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 және Breadboard бар. Нан тақтасын орнату келесі қадамда талқыланады.

Жиналғаннан кейін соңғы прототип соңғы суреттегідей болуы керек.

2 -қадам: Басқару тақтасын орнату

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

Құрастырудан кейін Arduino, акселерометр датчигі, серво төменде сипатталғандай қосылады.

Нан тақтасындағы оң және теріс рельстер сәйкесінше Arduino 5V және GND -ге қосылған. Сенсор 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 («ай =»);

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

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

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

егер (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);

}

}

Ұсынылған: