Агуулгын хүснэгт:

Робот машинаас зайлсхийх саад бэрхшээл: 9 алхам
Робот машинаас зайлсхийх саад бэрхшээл: 9 алхам

Видео: Робот машинаас зайлсхийх саад бэрхшээл: 9 алхам

Видео: Робот машинаас зайлсхийх саад бэрхшээл: 9 алхам
Видео: Learn 130 FLUENT English Idioms and How To Use Them Naturally In English Conversations! 2024, Долдугаар сарын
Anonim
Робот машинаас зайлсхийх саад бэрхшээл
Робот машинаас зайлсхийх саад бэрхшээл
Робот машинаас зайлсхийх саад бэрхшээл
Робот машинаас зайлсхийх саад бэрхшээл

Роботоос зайлсхийх саадыг хэрхэн яаж бүтээх вэ

Алхам 1: Хар хайрцаг

Хар хайрцаг
Хар хайрцаг

Эхний алхам бол би хар хайрцгийг роботынхоо суурь болгон ашигласан.

Алхам 2: Arduino

Ардуино
Ардуино

Arduino бол бүхэл бүтэн системийн тархи бөгөөд бидний моторыг зохицуулдаг

Алхам 3: Arduino -ийг Blackbox -д хавсаргах

Arduino -ийг Blackbox -д холбох
Arduino -ийг Blackbox -д холбох

Би ардуиног халуун цавуу ашиглан хар хайрцагт хавсаргасан

Алхам 4: Хэт авианы мэдрэгч

Хэт авианы мэдрэгч
Хэт авианы мэдрэгч

Бие даан хөдөлж чаддаг робот бүтээхийн тулд бидэнд ямар нэгэн оролт, бидний зорилгод нийцсэн мэдрэгч хэрэгтэй болно. Хэт авианы мэдрэгч нь хэт авианы долгион ашиглан объект хүртэлх зайг хэмжих хэрэгсэл юм. Хэт авианы мэдрэгч нь хэт авианы импульсийг илгээж, хүлээн авахын тулд хувиргагчийг ашигладаг бөгөөд энэ нь объектын ойролцоо байгаа тухай мэдээллийг дамжуулдаг.

Алхам 5: Breadboard мэдрэгчийг Arduino руу холбох

Мэдрэгчийг Arduino руу талхаар холбох
Мэдрэгчийг Arduino руу талхаар холбох
Мэдрэгчийг Arduino руу талхаар холбох
Мэдрэгчийг Arduino руу талхаар холбох

Талх болон arduino хоорондох холболтыг эрэгтэй болгохын тулд би утас ашигласан.

Таны ping мэдрэгч өөр зүү байрлалтай байж болох боловч хүчдэлийн зүү, газардуулгын зүү, триггер, цуурай зүүтэй байх ёстойг анхаарна уу.

Алхам 6: Мотор бамбай

Мотор бамбай
Мотор бамбай

Arduino самбар нь тогтмол гүйдлийн хөдөлгүүрийг дангаар нь удирдаж чаддаггүй, учир нь тэдгээрийн үүсгэж буй гүйдэл хэт бага тул энэ асуудлыг шийдэхийн тулд бид хөдөлгүүрийн бамбайг ашигладаг бөгөөд хөдөлгүүрийн бамбай нь 2 сувагтай бөгөөд энэ нь хоёр тогтмол гүйдлийн моторыг хянах боломжийг олгодог. stepper мотор. … Эдгээр тээглүүрт хандсанаар та эхлүүлэх моторын сувгийг сонгох, хөдөлгүүрийн чиглэлийг (туйлшрал) тодорхойлох, хөдөлгүүрийн хурдыг (PWM) тохируулах, моторыг зогсоож асаах, суваг бүрийн одоогийн шингээлтийг хянах боломжтой.

Алхам 7: Мотор бамбайг Arduino руу холбох

Мотор бамбайг Arduino руу холбож байна
Мотор бамбайг Arduino руу холбож байна

Моторын бамбайг мэдрэгчийн утаснууд тасарсан байхад arduino -д бэхлэхэд л болно

Алхам 8: 4 мотор ба батерейг бамбай руу холбох

4 мотор ба батерейг бамбай руу холбох
4 мотор ба батерейг бамбай руу холбох

Мотор бамбай бүр дор хаяж хоёр сувагтай бөгөөд нэг нь мотор, нөгөө нь тэжээлийн эх үүсвэртэй байдаг.

Алхам 9: Роботыг програмчлах

энэ кодыг ажиллуулна уу

#оруулах #оруулах

NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor мотор1 (1, MOTOR12_1KHZ); AF_DCMotor мотор2 (2, MOTOR12_1KHZ); AF_DCMotor мотор3 (3, MOTOR34_1KHZ); AF_DCMotor мотор4 (4, MOTOR34_1KHZ); Servo myservo;

#тодорхойлох TRIG_PIN A2 #ECHO_PIN A3 тодорхойлох #MAX_DISTANCE 150 #MAX_SPEED 100 тодорхойлох #MAX_SPEED_OFFSET 10 тодорхойлох

boolean goForward = худал; int зай = 80; int speedSet = 0;

хүчингүй тохиргоо () {

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); зайR = lookRight (); саатал (100); зайL = харагдахЗүүн (); саатал (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } өөр {turnLeft (); moveStop (); }} өөр {moveForward (); } зай = readPing (); }

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 (RELEASE); мотор 2. ажиллуулах (суллах); мотор 3. ажиллуулах (суллах); мотор 4. ажиллуулах (суллах); } void moveForward () {

if (! goForward) {goForward = true; мотор 1. гүйх (урагш); мотор 2. гүйх (урагш); мотор 3. гүйх (урагш); мотор 4. гүйх (урагш); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); мотор2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); саатал (5); }}}

void moveBackward () {goForward = false; мотор 1. ажиллуулах (Буцах); мотор 2. ажиллуулах (УХАРАХ); мотор 3. ажиллуулах (БУЦАХ); мотор 4. ажиллуулах (БУЦАХ); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); мотор2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); саатал (5); } void turnLeft () {motor1.run (BACKWARD); мотор 2. ажиллуулах (УХАРАХ); мотор 3. гүйх (урагш); мотор 4. гүйх (урагш); саатал (500); мотор 1. гүйх (урагш); мотор 2. гүйх (урагш); мотор 3. гүйх (урагш); мотор 4. гүйх (урагш); }

void turnLeft () {motor1.run (BACKWARD); мотор 2. ажиллуулах (УХАРАХ); мотор 3. гүйх (урагш); мотор 4. гүйх (урагш); саатал (500); мотор 1. гүйх (урагш); мотор 2. гүйх (урагш); мотор 3. гүйх (урагш); мотор 4. гүйх (урагш); }

Зөвлөмж болгож буй: