Mundarija:

Robotli avtomashinalardan to'siq: 9 qadam
Robotli avtomashinalardan to'siq: 9 qadam

Video: Robotli avtomashinalardan to'siq: 9 qadam

Video: Robotli avtomashinalardan to'siq: 9 qadam
Video: Yosh O'rgimchak va uning g'aroyib do'stlari | o'zbek tilida | 1 -fasl | 4- qism 2024, Noyabr
Anonim
Robotli mashinadan to'siq
Robotli mashinadan to'siq
Robotli mashinadan to'siq
Robotli mashinadan to'siq

Robotdan qochadigan to'siqni qanday qurish kerak

1 -qadam: Qora quti

Qora quti
Qora quti

birinchi qadamda men qora qutini robotim uchun asos sifatida ishlatganman.

2 -qadam: Arduino

Arduino
Arduino

Arduino butun tizimning miyasi va bizning motorlarimizni boshqaradi

3 -qadam: Arduino -ni qora qutiga biriktirish

Arduino -ni Blackbox -ga ulash
Arduino -ni Blackbox -ga ulash

Men arduino -ni qora qutiga issiq elim yordamida biriktirdim

4 -qadam: Ultrasonik sensor

Ultrasonik sensor
Ultrasonik sensor

O'z -o'zidan harakatlanadigan robotni yaratish uchun bizga qandaydir kirish, maqsadimizga mos keladigan sensor kerak. Ultrasonik sensor - bu ultrasonik tovush to'lqinlari yordamida ob'ektgacha bo'lgan masofani o'lchaydigan asbob. Ultrasonik sensor, ob'ektning yaqinligi haqidagi ma'lumotlarni uzatuvchi ultratovushli impulslarni yuborish va qabul qilish uchun o'zgartirgichdan foydalanadi.

5 -qadam: Sensorni Arduino -ga ulash paneli

Sensorni Arduino -ga ulash paneli
Sensorni Arduino -ga ulash paneli
Sensorni Arduino -ga ulash paneli
Sensorni Arduino -ga ulash paneli

Men simlar bilan taxta va arduino o'rtasidagi aloqani o'rnatdim.

E'tibor bering, sizning ping sensori boshqa pinli joylashuvga ega bo'lishi mumkin, lekin u kuchlanish pimi, topraklama pimi, uchli pin va aks sado piniga ega bo'lishi kerak.

6 -qadam: Motor qalqoni

Dvigatel qalqoni
Dvigatel qalqoni

Arduino platalari o'z -o'zidan shahar motorlarini boshqarolmaydi, chunki ular ishlab chiqarayotgan toklar juda past, bu muammoni hal qilish uchun biz dvigatel qalqonidan foydalanamiz, dvigatel qalqoni ikkita kanalga ega, bu ikkita shahar motorini boshqarishga imkon beradi. qadam dvigateli. … Bu pimlarga murojaat qilib, siz ishga tushirish uchun motor kanalini tanlashingiz, dvigatel yo'nalishini (kutupluluğu) belgilashingiz, motor tezligini (PWM) belgilashingiz, dvigatelni to'xtatish va ishga tushirish va har bir kanalning yutilishini kuzatishingiz mumkin.

7 -qadam: Motor qalqonini Arduino -ga ulash

Motor qalqonini Arduino -ga ulash
Motor qalqonini Arduino -ga ulash

Dvigatel qalqonini sensorli simlar siqilgan holda arduinoga ulang

8 -qadam: 4 dvigatel va batareyani qalqonga ulash

4 dvigatel va batareyani qalqonga ulash
4 dvigatel va batareyani qalqonga ulash

Har bir motor qalqoni (kamida) ikkita kanalga ega: biri dvigatellar uchun, ikkinchisi quvvat manbai uchun, ularni bir -biriga ulang

9 -qadam: Robotni dasturlash

bu kodni ishga tushiring

#qo'shing #qo'shing

NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor dvigatel1 (1, MOTOR12_1KHZ); AF_DCMotor dvigateli2 (2, MOTOR12_1KHZ); AF_DCMotor motor3 (3, MOTOR34_1KHZ); AF_DCMotor dvigateli4 (4, MOTOR34_1KHZ); Xizmat ko'rsatish xizmati;

#TIG_PIN A2 ni belgilang #ECHO_PIN A3 ni belgilang #MAX_DISTANCE 150ni belgilang #MAX_HIZLI 100ni aniqlang #MAX_HIZLI_OFFSETni 10 aniqlang.

boolean goForward = false; int masofa = 80; int speedSet = 0;

bo'sh o'rnatish () {

myservo.attach (10); myservo.write (115); kechikish (2000); masofa = readPing (); kechikish (100); masofa = readPing (); kechikish (100); masofa = readPing (); kechikish (100); masofa = readPing (); kechikish (100); }

void loop () {int masofaR = 0; int masofaL = 0; kechikish (40); if (masofa <= 15) {moveStop (); kechikish (50); moveBackward (); kechikish (150); moveStop (); kechikish (100); masofaR = qarashRight (); kechikish (100); masofaL = qarashLeft (); kechikish (100);

if (masofaR> = masofaL) {turnRight (); moveStop (); } boshqa {turnLeft (); moveStop (); }} boshqa {moveForward (); } masofa = readPing (); }

int lookRight () {myservo.write (50); kechikish (250); int masofasi = readPing (); kechikish (50); myservo.write (100); qaytish masofasi; }

int lookLeft () {myservo.write (120); kechikish (300); int masofasi = readPing (); kechikish (100); myservo.write (115); qaytish masofasi; kechikish (100); }

int readPing () {kechiktirish (70); int sm = sonar.ping_cm (); agar (sm == 0) {sm = 200; } qaytarish sm; }

void moveStop () {motor1.run (RELEASE); motor2. ishga tushirish (RELEASE); motor3. ishga tushirish (RELEASE); motor4. ishga tushirish (RELEASE); } void moveForward () {bekor

if (! ketadiForward) {goForward = true; motor1. ishga tushirish (OLDINGA); motor2. ishga tushirish (oldinga); motor3. ishga tushirish (OLDINGA); motor4.run (oldinga); uchun (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); kechikish (5); }}}

void moveBackward () {goForward = false; motor1. ishga tushirish (orqaga); motor2. ishga tushirish (orqaga); motor3. ishga tushirish (orqaga); motor4. ishga tushirish (orqaga); uchun (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); kechikish (5); } void turnLeft () {motor1.run (BACKWARD); motor2. ishga tushirish (orqaga); motor3. ishga tushirish (OLDINGA); motor4.run (oldinga); kechikish (500); motor1. ishga tushirish (OLDINGA); motor2. ishga tushirish (oldinga); motor3. ishga tushirish (OLDINGA); motor4.run (oldinga); }

void turnLeft () {motor1.run (BACKWARD); motor2. ishga tushirish (orqaga); motor3. ishga tushirish (OLDINGA); motor4.run (oldinga); kechikish (500); motor1. ishga tushirish (OLDINGA); motor2. ishga tushirish (oldinga); motor3. ishga tushirish (OLDINGA); motor4.run (oldinga); }

Tavsiya: