สารบัญ:

อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์: 9 ขั้นตอน
อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์: 9 ขั้นตอน

วีดีโอ: อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์: 9 ขั้นตอน

วีดีโอ: อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์: 9 ขั้นตอน
วีดีโอ: 15 ยานยนต์ แปลงร่างได้ ทรานส์ฟอร์มเมอร์ส ในชีวิตจริง | OKyouLIKEs 2024, กรกฎาคม
Anonim
อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์
อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์
อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์
อุปสรรคในการหลีกเลี่ยงรถหุ่นยนต์

วิธีสร้างสิ่งกีดขวางเพื่อหลีกเลี่ยงหุ่นยนต์

ขั้นตอนที่ 1: กล่องดำ

กล่องดำ
กล่องดำ

ขั้นตอนแรก ฉันใช้กล่องดำเป็นฐานสำหรับหุ่นยนต์ของฉัน

ขั้นตอนที่ 2: Arduino

Arduino
Arduino

Arduino เป็นสมองของทั้งระบบและควบคุมมอเตอร์ของเรา

ขั้นตอนที่ 3: การแนบ Arduino กับ Blackbox

การต่อ Arduino เข้ากับ Blackbox
การต่อ Arduino เข้ากับ Blackbox

ฉันแนบ Arduino เข้ากับกล่องดำโดยใช้กาวร้อน

ขั้นตอนที่ 4: อัลตราโซนิกเซนเซอร์

อัลตราโซนิกเซนเซอร์
อัลตราโซนิกเซนเซอร์

ในการสร้างหุ่นยนต์ที่สามารถเคลื่อนที่ได้ด้วยตัวเอง เราต้องการข้อมูลบางอย่าง เซ็นเซอร์ที่เหมาะกับเป้าหมายของเรา เซ็นเซอร์อัลตราโซนิกเป็นเครื่องมือที่วัดระยะทางไปยังวัตถุโดยใช้คลื่นเสียงอัลตราโซนิก เซ็นเซอร์อัลตราโซนิกใช้ทรานสดิวเซอร์เพื่อส่งและรับพัลส์อัลตราโซนิกที่ถ่ายทอดข้อมูลกลับเกี่ยวกับความใกล้ชิดของวัตถุ

ขั้นตอนที่ 5: การเชื่อมต่อ Breadboard ของเซ็นเซอร์กับ Arduino

การเชื่อมต่อ Breadboard ของเซนเซอร์กับ Arduino
การเชื่อมต่อ Breadboard ของเซนเซอร์กับ Arduino
การเชื่อมต่อ Breadboard ของเซนเซอร์กับ Arduino
การเชื่อมต่อ Breadboard ของเซนเซอร์กับ Arduino

ฉันใช้สายไฟเพื่อเชื่อมต่อระหว่างเขียงหั่นขนมกับ Arduino

โปรดทราบว่าเซ็นเซอร์ ping ของคุณอาจมีรูปแบบพินที่แตกต่างกัน แต่ควรมีพินแรงดันไฟ พินกราวด์ พินตรีโกณมิติ และพินก้อง

ขั้นตอนที่ 6: มอเตอร์ชิลด์

มอเตอร์ชิลด์
มอเตอร์ชิลด์

บอร์ด Arduino ไม่สามารถควบคุมมอเตอร์กระแสตรงได้ด้วยตัวเอง เนื่องจากกระแสที่สร้างขึ้นนั้นต่ำเกินไป ในการแก้ปัญหานี้ เราใช้ตัวป้องกันมอเตอร์ ตัวป้องกันมอเตอร์มี 2 ช่องสัญญาณ ซึ่งช่วยให้สามารถควบคุมมอเตอร์ DC สองตัว หรือ 1 ตัว สเต็ปเปอร์มอเตอร์ … โดยการระบุหมุดเหล่านี้ คุณสามารถเลือกช่องสัญญาณมอเตอร์เพื่อเริ่มต้น ระบุทิศทางของมอเตอร์ (ขั้ว) ตั้งค่าความเร็วมอเตอร์ (PWM) หยุดและสตาร์ทมอเตอร์ และตรวจสอบการดูดกลืนกระแสไฟฟ้าของแต่ละช่องสัญญาณ

ขั้นตอนที่ 7: เชื่อมต่อ Motor Shield กับ Arduino

การเชื่อมต่อ Motor Shield กับ Arduino
การเชื่อมต่อ Motor Shield กับ Arduino

เพียงติดแผงป้องกันมอเตอร์เข้ากับ Arduino โดยที่สายเซ็นเซอร์ถูกขันเข้า

ขั้นตอนที่ 8: เชื่อมต่อมอเตอร์ 4 ตัวและแบตเตอรี่เข้ากับ Shield

การเชื่อมต่อมอเตอร์ 4 ตัวและแบตเตอรี่เข้ากับ Shield
การเชื่อมต่อมอเตอร์ 4 ตัวและแบตเตอรี่เข้ากับ Shield

Motor Shield ทุกตัวมี (อย่างน้อย) สองช่องสัญญาณหนึ่งช่องสำหรับมอเตอร์และอีกช่องหนึ่งสำหรับแหล่งพลังงาน เชื่อมต่อพวกเขาด้วยความเคารพซึ่งกันและกัน

ขั้นตอนที่ 9: ตั้งโปรแกรมหุ่นยนต์

เรียกใช้รหัสนี้

#รวม #รวม

ใหม่ปิงโซนาร์ (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motor1 (1, MOTOR12_1KHZ); AF_DCMotor motor2 (2, MOTOR12_1KHZ); AF_DCมอเตอร์มอเตอร์3(3, MOTOR34_1กิโลเฮิร์ตซ์); AF_DCMotor motor4 (4, MOTOR34_1KHZ); เซอร์โว myservo;

#กำหนด TRIG_PIN A2 #กำหนด ECHO_PIN A3 #กำหนด MAX_DISTANCE 150 #กำหนด MAX_SPEED 100 #กำหนด MAX_SPEED_OFFSET 10

บูลีน goForward=false; ระยะทาง int = 80; int speedSet = 0;

การตั้งค่าเป็นโมฆะ () {

myservo.attach(10); myservo.write(115); ล่าช้า (2000); ระยะทาง = readPing(); ล่าช้า (100); ระยะทาง = readPing(); ล่าช้า (100); ระยะทาง = readPing(); ล่าช้า (100); ระยะทาง = readPing(); ล่าช้า (100); }

วงเป็นโมฆะ () { int distanceR = 0; ระยะทาง intL = 0; ล่าช้า(40); ถ้า(ระยะทาง<=15) { moveStop(); ล่าช้า (50); ย้ายย้อนกลับ(); ล่าช้า (150); moveStop(); ล่าช้า (100); DistanceR = lookRight(); ล่าช้า (100); ระยะทางL = lookLeft(); ล่าช้า (100);

if(distanceR>=distanceL) { เลี้ยวขวา (); moveStop(); } อื่น ๆ { เลี้ยวซ้าย (); moveStop(); } }อื่น { เลื่อนไปข้างหน้า (); } ระยะทาง = 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; } กลับซม.; }

เป็นโมฆะ moveStop () { motor1.run (ปล่อย); motor2.run(ปล่อย); motor3.run(ปล่อย); motor4.run(ปล่อย); } โมฆะ moveForward() {

if(!goesForward) { gosForward=true; motor1.run (ไปข้างหน้า); motor2.run (ไปข้างหน้า); motor3.run (ไปข้างหน้า); motor4.run (ไปข้างหน้า); สำหรับ (speedSet = 0; speedSet < MAX_SPEED; speedSet + = 2) { motor1.setSpeed (speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); ล่าช้า(5); } } }

เป็นโมฆะ moveBackward () { goForward = false; motor1.run(ย้อนกลับ); motor2.run(ย้อนกลับ); motor3.run(ย้อนกลับ); motor4.run(ย้อนกลับ); สำหรับ (speedSet = 0; speedSet < MAX_SPEED; speedSet + = 2) { motor1.setSpeed (speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); ล่าช้า(5); } ถือเป็นโมฆะ turnLeft () { motor1.run (ย้อนกลับ); motor2.run(ย้อนกลับ); motor3.run (ไปข้างหน้า); motor4.run (ไปข้างหน้า); ล่าช้า (500); motor1.run (ไปข้างหน้า); motor2.run (ไปข้างหน้า); motor3.run (ไปข้างหน้า); motor4.run (ไปข้างหน้า); }

ถือเป็นโมฆะ turnLeft () { motor1.run (ย้อนกลับ); motor2.run(ย้อนกลับ); motor3.run (ไปข้างหน้า); motor4.run (ไปข้างหน้า); ล่าช้า (500); motor1.run (ไปข้างหน้า); motor2.run (ไปข้างหน้า); motor3.run (ไปข้างหน้า); motor4.run (ไปข้างหน้า); }

แนะนำ: