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

Ռոբոտային մեքենայից խուսափելու խոչընդոտ. 9 քայլ
Ռոբոտային մեքենայից խուսափելու խոչընդոտ. 9 քայլ

Video: Ռոբոտային մեքենայից խուսափելու խոչընդոտ. 9 քայլ

Video: Ռոբոտային մեքենայից խուսափելու խոչընդոտ. 9 քայլ
Video: Pyramids Are Not What You Think They Are: Underground Halls Beneath Them 2024, Հուլիսի
Anonim
Ռոբոտային մեքենայից խուսափելու խոչընդոտ
Ռոբոտային մեքենայից խուսափելու խոչընդոտ
Ռոբոտային մեքենայից խուսափելու խոչընդոտ
Ռոբոտային մեքենայից խուսափելու խոչընդոտ

Ինչպես կառուցել խոչընդոտ ՝ խուսափելով ռոբոտից

Քայլ 1: Սև արկղ

Սև արկղ
Սև արկղ

առաջին քայլը ես օգտագործեցի սև արկղը որպես հիմք իմ ռոբոտի համար:

Քայլ 2: Arduino

Արդուինո
Արդուինո

Arduino- ն ամբողջ համակարգի ուղեղն է և կազմակերպում է մեր շարժիչները

Քայլ 3. Arduino- ի միացում Blackbox- ին

Arduino- ն Blackbox- ին կցելը
Arduino- ն Blackbox- ին կցելը

Արդուինոն ամրացրեցի սև արկղին ՝ օգտագործելով տաք սոսինձ

Քայլ 4: Ուլտրաձայնային տվիչ

Ուլտրաձայնային տվիչ
Ուլտրաձայնային տվիչ

Ռոբոտ պատրաստելու համար, որը կարող է ինքնուրույն շարժվել, մեզ անհրաժեշտ է ինչ -որ մուտք, սենսոր, որը համապատասխանում է մեր նպատակին: Ուլտրաձայնային տվիչը գործիք է, որը չափում է օբյեկտից հեռավորությունը `օգտագործելով ուլտրաձայնային ձայնային ալիքներ: Ուլտրաձայնային տվիչը փոխարկիչ է օգտագործում ՝ ուղարկելու և ստանալու ուլտրաձայնային իմպուլսներ, որոնք փոխանցում են օբյեկտի հարևանության մասին տեղեկատվությունը:

Քայլ 5. Սեղանի սենսորի միացում Arduino- ին

Սեղանի միացում Arduino- ի հետ
Սեղանի միացում Arduino- ի հետ
Սեղանի միացում Arduino- ի հետ
Սեղանի միացում Arduino- ի հետ

Ես մետաղալարեր օգտագործեցի ՝ արկղի և արդուինոյի միջև կապը տղամարդկացնելու համար:

Ուշադրություն դարձրեք, որ ձեր պինգ սենսորը կարող է ունենալ քորոցի այլ դասավորություն, բայց այն պետք է ունենա լարման քորոց, գրունտային քորոց, եռակցման քորոց և արձագանքման քորոց:

Քայլ 6: Շարժիչային վահան

Շարժիչային վահան
Շարժիչային վահան

Arduino- ի տախտակները չեն կարող ինքնուրույն վերահսկել DC շարժիչները, քանի որ դրանց արտադրած հոսանքները չափազանց ցածր են: Այս խնդիրը լուծելու համար մենք օգտագործում ենք շարժական վահաններ: Շարժիչային վահանը ունի 2 ալիք, ինչը թույլ է տալիս վերահսկել երկու DC շարժիչ կամ 1 քայլող շարժիչ: … Դիմելով այս կապումներին, դուք կարող եք ընտրել շարժիչային ալիք, որը պետք է սկսի, նշեք շարժիչի ուղղությունը (բևեռականություն), սահմանեք շարժիչի արագությունը (PWM), կանգնեցրեք և գործարկեք շարժիչը և վերահսկեք յուրաքանչյուր ալիքի ընթացիկ կլանումը:

Քայլ 7: Motor Shield- ը Arduino- ին միացնելը

Motor Shield- ը Arduino- ին միացնելը
Motor Shield- ը Arduino- ին միացնելը

Պարզապես ամրացրեք շարժիչի վահանը arduino- ին `սենսորային լարերը սեղմված

Քայլ 8: 4 շարժիչներն ու մարտկոցները միացնել վահանին

4 շարժիչներն ու մարտկոցները միացնելով վահանին
4 շարժիչներն ու մարտկոցները միացնելով վահանին

Յուրաքանչյուր Motor Shield ունի (առնվազն) երկու ալիք ՝ մեկը շարժիչների համար, և մեկը ՝ էներգիայի աղբյուրի, միացրեք դրանք միմյանց նկատմամբ

Քայլ 9. Programրագրեք ռոբոտին

գործարկել այս կոդը

#ներառել #ներառել

NewPing սոնար (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DC Շարժիչ 1 (1, MOTOR12_1KHZ); AF_DC Շարժիչ 2 (2, MOTOR12_1KHZ); AF_DC Շարժիչ 3 (3, MOTOR34_1KHZ); AF_DC Շարժիչ 4 (4, MOTOR34_1KHZ); Servo myservo;

#սահմանել TRIG_PIN A2 #սահմանել ECHO_PIN A3 #սահմանել MAX_DISTANCE 150 #սահմանել MAX_SPEED 100 #սահմանել MAX_SPEED_OFFSET 10

բուլյան գնում էԱռաջ = կեղծ; int հեռավորությունը = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); ուշացում (2000); հեռավորություն = readPing (); ուշացում (100); հեռավորություն = readPing (); ուշացում (100); հեռավորություն = readPing (); ուշացում (100); հեռավորություն = readPing (); ուշացում (100); }

void loop () {int distanceR = 0; int հեռավորություն L = 0; ուշացում (40); if (հեռավորություն <= 15) {moveStop (); ուշացում (50); moveBackward (); ուշացում (150); moveStop (); ուշացում (100); distanceR = lookRight (); ուշացում (100); distanceL = lookLeft (); ուշացում (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } հեռավորություն = կարդալ Ping (); }

int lookRight () {myservo.write (50); ուշացում (250); int հեռավորություն = readPing (); ուշացում (50); myservo.write (100); վերադարձի հեռավորություն; }

int lookLeft () {myservo.write (120); ուշացում (300); int հեռավորություն = readPing (); ուշացում (100); myservo.write (115); վերադարձի հեռավորություն; ուշացում (100); }

int readPing () {հետաձգում (70); int cm = sonar.ping_cm (); եթե (սմ == 0) {սմ = 200; } վերադարձ սմ; }

void moveStop () {motor1.run (ԹՈLEԱՐԿՈՄ); motor2.run (ԹՈLEԱՐԿՈՄ); motor3.run (ԹՈLEԱՐԿՈՄ); motor4.run (ԹՈLEԱՐԿՈՄ); } void moveForward () {

եթե (! goForward) {goForward = true; motor1.run (ԱՌԱARD); motor2.run (ԱՌԱARD); motor3.run (ԱՌԱARD); motor4.run (ԱՌԱARD); համար (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); ուշացում (5); }}}

void moveBackward () {goForward = false; motor1.run (BACKWARD); motor2.run (Ետև); motor3.run (BACKWARD); motor4.run (BACKWARD); համար (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); ուշացում (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (Ետև); motor3.run (ԱՌԱARD); motor4.run (ԱՌԱARD); ուշացում (500); motor1.run (ԱՌԱARD); motor2.run (ԱՌԱARD); motor3.run (ԱՌԱARD); motor4.run (ԱՌԱARD); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (Ետև); motor3.run (ԱՌԱARD); motor4.run (ԱՌԱARD); ուշացում (500); motor1.run (ԱՌԱARD); motor2.run (ԱՌԱARD); motor3.run (ԱՌԱARD); motor4.run (ԱՌԱARD); }

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