Բովանդակություն:

Gyro Sensor- ի վերահսկվող հարթակ `լաբիրինթոս հանելուկի համար. 3 քայլ
Gyro Sensor- ի վերահսկվող հարթակ `լաբիրինթոս հանելուկի համար. 3 քայլ

Video: Gyro Sensor- ի վերահսկվող հարթակ `լաբիրինթոս հանելուկի համար. 3 քայլ

Video: Gyro Sensor- ի վերահսկվող հարթակ `լաբիրինթոս հանելուկի համար. 3 քայլ
Video: SKR 1.4 - I2C BlinkM 2024, Նոյեմբեր
Anonim
Gyro Sensor վերահսկվող հարթակ ՝ լաբիրինթոս հանելուկի համար
Gyro Sensor վերահսկվող հարթակ ՝ լաբիրինթոս հանելուկի համար

Այս հրահանգը ստեղծվել է Հարավային Ֆլորիդայի համալսարանում (www.makecourse.com) Make դասընթացի նախագծի պահանջի կատարման համար »:

Այս պարզ նախագիծը ոգեշնչված է ինքնահավասարակշռող հարթակից, որը հետադարձ կապ է վերցնում արագացուցիչի սենսորից: Ստուգեք այն, եթե արդեն չեք արել:

Նախագիծն օգտագործում է Arduino UNO - Հեշտ օգտագործման միկրոկառավարիչ, որը կարող եք ձեռք բերել առցանց գնումների կայքերից: Այս ուսանելիում ես ցույց կտամ, թե ինչպես կարող եք պատրաստել ձեր սեփական ծրագրավորվող թեքման հարթակը `նախագծման գործընթացից մինչև մասերի աղբյուրներ, եռաչափ տպման ֆայլեր, հավաքում և ծրագրավորում: Շարունակիր և առաջ գնանք:

Քայլ 1. Պահանջվող բաղադրիչներ և 3D տպագիր մասեր

Պահանջվող բաղադրիչներ և 3D տպագիր մասեր
Պահանջվող բաղադրիչներ և 3D տպագիր մասեր
Պահանջվող բաղադրիչներ և 3D տպագիր մասեր
Պահանջվող բաղադրիչներ և 3D տպագիր մասեր
Պահանջվող բաղադրիչներ և 3D տպագիր մասեր
Պահանջվող բաղադրիչներ և 3D տպագիր մասեր

Forրագրի համար օգտագործվող բաղադրիչների ցանկը.

1. Arduino UNO միկրոկոնտրոլեր:

2. Գրատախտակ jumper լարերով:

3. Տուփ:

4. Շրջանաձեւ հարթակ

5. Մազ

6. Հղումներ - 3 Ոչ

7. Երեք սպասարկում տեղադրելու հիմք:

8. Gyro/Accelerometer ցուցիչ: (MPU6050)

9.1 քմ մմ լարեր (500 սմ) - 4 ոչ

10. 3 մմ տրամագծով պողպատե գնդակներ:

Նախագծի համար օգտագործվող մասերի մեծ մասը 3D տպագրությամբ են, և ես կցել եմ stl. ֆայլերը պատրաստ են տպագրության:

Հավաքեք բոլոր մասերը, ինչպես ցույց է տրված նկարներում: Լաբիրինթոսը տաք սոսնձված է շրջանաձև հարթակին, որպեսզի տեսնի ինչպես նկարում: Երեք սերվերը պետք է տաք սոսնձված լինեն 3D տպագրված հիմքի վրա, որը տեղադրված է տուփի կափարիչին: Տուփը պարունակում է Arduino UNO և Breadboard հավաքված, ինչպես ցույց է տրված նկարում: Հացաթղթերի տեղադրումը կքննարկվի հաջորդ քայլին:

Մոնտաժումից հետո վերջնական նախատիպը պետք է տեսնի, ինչպես վերջին նկարում:

Քայլ 2: Breadboard- ի կարգավորում

Breadboard Setup
Breadboard Setup
Breadboard Setup
Breadboard Setup
Breadboard Setup
Breadboard Setup

Հավաքվելուց հետո Arduino, Accelerometer ցուցիչ, սերվերը միացված են, ինչպես նկարագրված է ստորև:

Սեղանի վրա դրված դրական և բացասական ռելսերը միացված են համապատասխանաբար Arduino- ի 5V- ին և GND- ին: Սենսորը միացված է Arduino- ին `օգտագործելով կես մետրանոց լարերը, որոնք պետք է զոդվեն սենսորին այնպես, որ սենսորի VCC և GND կապանքները համապատասխանաբար միացվեն սեղանի վրա +ve և -ve ռելսերին: Սենսորի SCL և SDA կապերը, որոնք պետք է միացված լինեն Arduino- ի A5 և A4 անալոգային կապումներին: Երեք servos- ի PWM կապումներն համապատասխանաբար միացված են Arduino- ի 2, 3, 4 կապում, իսկ բոլոր servos- ի +ve և -ve կապումներն էլ `սեղանի +ve և -ve ռելսերին: դրանով մեր կապերն ավարտված են:

Քայլ 3: Codeրագրի ծածկագիր:

կարող եք ներբեռնել MPU6050 և Servo գրադարանները ինտերնետից և օգտագործել այն նախագծի համար: Կազմեք և վերբեռնեք հետևյալ կոդը Arduino- ում և նախագիծը պատրաստ է: Թեքեք տվիչը և կտեսնեք, որ լաբիրինթոսը թեքվում է նույն ուղղությամբ: Փազլը լուծելու համար որոշ ժամանակ է պահանջվում, քանի որ այն մի փոքր դժվար է, բայց դրա հետ խաղալը հաճելի է:

#ներառում

#ներառում

#ներառում

Servo Servo1;

Servo Servo2;

Servo Servo3;

MPU6050 սենսոր;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t կաց, այ, ազ;

int16_t gx, gy, gz;

դատարկ կարգավորում ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3. կցել (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 ("ay =");

Serial.println (ay);

եթե (կացին <80 && այ <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3. գրել (servoPos3--); }

եթե (կացին 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3. գրել (servoPos3--); }

եթե (կացին> 120 && այ> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

եթե (ax == 90 && ay == 90) {

Servo1.write (0);

Servo2.write (0);

Servo3. գրել (0);

}

}

Խորհուրդ ենք տալիս: