Mundarija:
- 1 -qadam: Qora quti
- 2 -qadam: Arduino
- 3 -qadam: Arduino -ni qora qutiga biriktirish
- 4 -qadam: Ultrasonik sensor
- 5 -qadam: Sensorni Arduino -ga ulash paneli
- 6 -qadam: Motor qalqoni
- 7 -qadam: Motor qalqonini Arduino -ga ulash
- 8 -qadam: 4 dvigatel va batareyani qalqonga ulash
- 9 -qadam: Robotni dasturlash
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Robotdan qochadigan to'siqni qanday qurish kerak
1 -qadam: Qora quti
birinchi qadamda men qora qutini robotim uchun asos sifatida ishlatganman.
2 -qadam: Arduino
Arduino butun tizimning miyasi va bizning motorlarimizni boshqaradi
3 -qadam: Arduino -ni qora qutiga biriktirish
Men arduino -ni qora qutiga issiq elim yordamida biriktirdim
4 -qadam: 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
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
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
Dvigatel qalqonini sensorli simlar siqilgan holda arduinoga ulang
8 -qadam: 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); }