วิธีทำหุ่นยนต์ที่บ้าน (พร้อมรูปภาพ)

สารบัญ:

วิธีทำหุ่นยนต์ที่บ้าน (พร้อมรูปภาพ)
วิธีทำหุ่นยนต์ที่บ้าน (พร้อมรูปภาพ)

วีดีโอ: วิธีทำหุ่นยนต์ที่บ้าน (พร้อมรูปภาพ)

วีดีโอ: วิธีทำหุ่นยนต์ที่บ้าน (พร้อมรูปภาพ)
วีดีโอ: สอนวิธีใช้ Cartography Table 1.14 /1.11.0 2024, อาจ
Anonim

คุณต้องการที่จะเรียนรู้วิธีการสร้างหุ่นยนต์ของคุณเอง? มีหุ่นยนต์หลายประเภทซึ่งคุณสามารถสร้างได้ด้วยตัวเอง คนส่วนใหญ่ต้องการเห็นหุ่นยนต์ทำงานง่ายๆ ในการย้ายจากจุด A ไปยังจุด B คุณสามารถสร้างหุ่นยนต์จากส่วนประกอบแอนะล็อกทั้งหมดหรือซื้อชุดสตาร์ทเตอร์ การสร้างหุ่นยนต์ของคุณเองเป็นวิธีที่ยอดเยี่ยมในการเรียนรู้อุปกรณ์อิเล็กทรอนิกส์และการเขียนโปรแกรมคอมพิวเตอร์

ขั้นตอน

ส่วนที่ 1 จาก 5: การประกอบหุ่นยนต์

1123333 1
1123333 1

ขั้นตอนที่ 1 ประกอบส่วนประกอบของคุณ

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

  • Arduino Uno (หรือไมโครคอนโทรลเลอร์อื่น ๆ)
  • 2 เซอร์โว 360 องศา
  • เซอร์โวจับคู่ 2 ล้อ
  • ฟรี 1 ล้อ
  • บอร์ดทดสอบ 1 อัน (เขียงหั่นขนมหรือบอร์ดโปรเจ็กต์) ที่ยังไม่ได้บัดกรี (มองหาบอร์ดทดสอบที่มีแถวบวกและลบสองแถวในแต่ละด้าน)
  • พรอกซิมิตี้เซนเซอร์ 1 ตัว (พร้อมสายต่อ 4 พิน)
  • สวิตช์ปุ่มกด 1 อัน
  • ตัวต้านทาน 1 ตัว 10kΩ
  • สาย USB A ถึง B 1 เส้น
  • ส่วนหัวหักได้ 1 ชุด
  • 1 6 x ที่ใส่แบตเตอรี่ AA พร้อม 9V DC ปลั๊กไฟ
  • 1แพ็คมี22สายจัมเปอร์หรือสายเดี่ยว
  • ฉนวนกันความร้อนไปมา (เทปสองชั้น) หรือปืนกาว
1123333 2
1123333 2

ขั้นตอนที่ 2 หมุนช่องใส่แบตเตอรี่โดยให้แผ่นหลังเรียบหงายขึ้น

คุณจะสร้างตัวหุ่นยนต์โดยใช้ช่องใส่แบตเตอรี่เป็นฐาน

1123333 3
1123333 3

ขั้นตอนที่ 3 จัดเรียงเซอร์โวสองตัวโดยหันไปทางเดียวกันที่ส่วนท้ายของช่องใส่แบตเตอรี่

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

1123333 4
1123333 4

ขั้นตอนที่ 4 กาวเซอร์โวด้วยฉนวนหรือกาวของคุณ

ตรวจสอบให้แน่ใจว่าติดเซอร์โวเข้ากับช่องใส่แบตเตอรี่อย่างแน่นหนา ด้านหลังของเซอร์โวต้องอยู่ในแนวเดียวกับด้านหลังของช่องใส่แบตเตอรี่

ตอนนี้เซอร์โวควรใช้พื้นที่ครึ่งหนึ่งที่ด้านหลังของช่องใส่แบตเตอรี่

1123333 5
1123333 5

ขั้นตอนที่ 5. ยึดแผ่นทดสอบในแนวตั้งฉากกับพื้นที่ที่เหลือในช่องใส่แบตเตอรี่

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

1123333 6
1123333 6

ขั้นตอนที่ 6 แนบไมโครคอนโทรลเลอร์ Arduino เข้ากับด้านบนของเซอร์โว

หากคุณติดเซอร์โวอย่างถูกต้อง ควรมีส่วนที่เรียบของเซอร์โวสองตัวแตะกัน ยึดบอร์ด Arduino กับจุดที่แบนนี้ โดยให้ขั้วต่อไฟ USB และ Arduino คว่ำลง (ห่างจากบอร์ดทดสอบ) ด้านหน้าของ Arduino จะทับซ้อนกับบอร์ดทดสอบ

1123333 7
1123333 7

ขั้นตอนที่ 7 ติดตั้งล้อบนเซอร์โว

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

1123333 8
1123333 8

ขั้นตอนที่ 8 ติดตั้งวงล้ออิสระที่ด้านล่างของบอร์ดทดสอบ

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

หากคุณซื้อชุดอุปกรณ์ ล้อว่างอาจมีเวดจ์ที่คุณสามารถใช้เพื่อให้แน่ใจว่าล้อสามารถสัมผัสพื้นได้ฟรี

ส่วนที่ 2 จาก 5: การเดินสายไฟหุ่นยนต์

1123333 9
1123333 9

ขั้นตอนที่ 1 ตัดส่วนหัว 3 พินสองตัว

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

1123333 10
1123333 10

ขั้นตอนที่ 2 ใส่ส่วนหัวทั้งสองลงในพิน 1-3 และ 6-8 ในแถว E บนกระดานทดสอบ

ตรวจสอบให้แน่ใจว่าใส่อย่างแน่นหนาหรือแน่นหนา

1123333 11
1123333 11

ขั้นตอนที่ 3 เชื่อมต่อสายเซอร์โวกับส่วนหัว โดยใช้สายสีดำทางด้านซ้าย (พิน 1 และ 6)

สิ่งนี้จะเชื่อมต่อเซอร์โวกับบอร์ดทดสอบ ตรวจสอบให้แน่ใจว่าเซอร์โวด้านซ้ายเชื่อมต่อกับส่วนหัวด้านซ้าย และเซอร์โวด้านขวาเชื่อมต่อกับส่วนหัวด้านขวา

1123333 12
1123333 12

ขั้นตอนที่ 4. เชื่อมต่อสายจัมเปอร์สีแดงจากพิน C2 และ C7 เข้ากับพินรางสีแดง (บวก)

ตรวจสอบให้แน่ใจว่าคุณใช้รางสีแดงที่ด้านหลังของแผ่นทดสอบ (ใกล้กับส่วนอื่นๆ ของตัวหุ่นยนต์)

1123333 13
1123333 13

ขั้นตอนที่ 5. เชื่อมต่อสายจัมเปอร์สีดำจากพิน B1 และ B6 เข้ากับพินรางสีน้ำเงิน (กราวด์)

ตรวจสอบให้แน่ใจว่าคุณใช้รางสีน้ำเงินที่ด้านหลังของแผ่นทดสอบ อย่าต่อสายเคเบิลเข้ากับหมุดรางสีแดง

1123333 14
1123333 14

ขั้นตอนที่ 6 เชื่อมต่อสายจัมเปอร์สีขาวจากพิน 12 และ 13 บน Arduino กับ A3 และ A8

ซึ่งจะทำให้ Arduino สามารถควบคุมเซอร์โวและหมุนวงล้อได้

1123333 15
1123333 15

ขั้นตอนที่ 7 ติดเซ็นเซอร์ไว้ที่ด้านหน้าของบอร์ดทดสอบ

เซ็นเซอร์ไม่ได้ติดตั้งไว้ที่รางจ่ายไฟภายนอกบนแผงทดสอบ แต่ติดไว้ที่หมุดสองแถวแรกที่มีตัวอักษร (J) ตรวจสอบให้แน่ใจว่าคุณวางมันไว้ตรงกลางโดยมีจำนวนพินว่างในแต่ละด้านเท่ากัน

1123333 16
1123333 16

ขั้นตอนที่ 8 ต่อสายจัมเปอร์สีดำจากพิน I14 เข้ากับพินรางสีน้ำเงินเส้นแรกทางด้านซ้ายของเซ็นเซอร์

สิ่งนี้จะกราวด์เซ็นเซอร์

1123333 17
1123333 17

ขั้นตอนที่ 9 เชื่อมต่อสายจัมเปอร์สีแดงจากพิน I17 กับพินรางสีแดงตัวแรกทางด้านขวาของเซ็นเซอร์

สิ่งนี้จะให้พลังงานแก่เซ็นเซอร์

1123333 18
1123333 18

ขั้นตอนที่ 10. เชื่อมต่อสายจัมเปอร์สีขาวจากพิน I15 กับพิน 9 บน Arduino และจาก I16 ถึงพิน 8

สิ่งนี้จะให้ข้อมูลจากเซ็นเซอร์ไปยังไมโครคอนโทรลเลอร์

ส่วนที่ 3 จาก 5: การติดตั้งสายไฟ

1123333 19
1123333 19

ขั้นตอนที่ 1. พลิกหุ่นยนต์เพื่อให้คุณเห็นช่องใส่แบตเตอรี่ด้านใน

จัดเรียงช่องใส่แบตเตอรี่โดยให้สายเคเบิลลอดผ่านด้านล่างซ้าย

1123333 20
1123333 20

ขั้นตอนที่ 2 เชื่อมต่อสายสีแดงกับสปริงที่สองจากด้านซ้ายที่ด้านล่าง

ตรวจสอบให้แน่ใจว่าช่องใส่แบตเตอรี่อยู่ในแนวที่ถูกต้องหรือหันเข้าหาทิศทางที่ถูกต้อง

1123333 21
1123333 21

ขั้นตอนที่ 3 เชื่อมต่อสายสีดำกับสปริงสุดท้ายที่ด้านล่างขวา

สายไฟสองเส้นนี้จะช่วยให้แรงดันไฟฟ้าที่เหมาะสมกับ Arduino

1123333 22
1123333 22

ขั้นตอนที่ 4. เชื่อมต่อสายสีแดงและสีดำเข้ากับหมุดสีแดงและสีน้ำเงินที่อยู่ทางด้านขวาที่ด้านหลังของบอร์ดทดสอบ

สายสีดำควรไปที่หมุดรางสีน้ำเงินบนพิน 30 สายสีแดงควรไปที่พินรางสีแดงที่พิน 30

1123333 23
1123333 23

ขั้นตอนที่ 5. เชื่อมต่อสายสีดำจากพิน GND บน Arduino เข้ากับด้านหลังของรางสีน้ำเงิน

ต่อสายไฟเข้ากับพิน 28 บนรางสีน้ำเงิน

1123333 24
1123333 24

ขั้นตอนที่ 6. เชื่อมต่อสายสีดำจากด้านหลังของรางสีน้ำเงินกับด้านหน้าของรางสีน้ำเงินบนพิน 29 สำหรับรางทั้งสอง

อย่าต่อรางสีแดงเพราะอาจทำให้ Arduino เสียหายได้

1123333 25
1123333 25

ขั้นตอนที่ 7 เชื่อมต่อสายสีแดงจากด้านหน้าของรางสีแดงบนพิน 30 กับพิน 5V บน Arduino

สิ่งนี้จะให้พลังงานแก่ Arduino

1123333 26
1123333 26

ขั้นตอนที่ 8. ใส่สวิตช์ปุ่มกดในช่องว่างระหว่างพิน 24-26

สวิตช์นี้จะช่วยให้คุณปิดหุ่นยนต์โดยไม่ต้องปิดเครื่อง

1123333 27
1123333 27

ขั้นตอนที่ 9 เชื่อมต่อสายสีแดงจาก H24 เข้ากับรางสีแดงบนพินว่างถัดไปทางด้านขวาของเซ็นเซอร์

สิ่งนี้จะให้พลังงานแก่ปุ่ม

1123333 28
1123333 28

ขั้นตอนที่ 10. ใช้ตัวต้านทานเพื่อเชื่อมต่อ H26 กับรางสีน้ำเงิน

เชื่อมต่อเข้ากับหมุดถัดจากสายสีดำที่คุณเพิ่งเชื่อมต่อในขั้นตอนก่อนหน้า

1123333 29
1123333 29

ขั้นตอนที่ 11 เชื่อมต่อสายสีขาวจาก G26 กับพิน 2 บน Arduino

ซึ่งจะช่วยให้ Arduino สามารถตรวจจับปุ่มกดได้

ส่วนที่ 4 จาก 5: การติดตั้งซอฟต์แวร์ Arduino

1123333 30
1123333 30

ขั้นตอนที่ 1. ดาวน์โหลดและแตก Arduino IDE

นี่คือที่ที่ Arduino ได้รับการพัฒนาและช่วยให้คุณสามารถตั้งโปรแกรมคำสั่งซึ่งคุณสามารถอัปโหลดไปยังไมโครคอนโทรลเลอร์ Arduino ของคุณได้ คุณสามารถดาวน์โหลดได้ฟรีจาก arduino.cc/en/main/software เปิดเครื่องรูดไฟล์ที่ดาวน์โหลดโดยดับเบิลคลิกที่ไฟล์และย้ายโฟลเดอร์ที่มีอยู่ไปยังตำแหน่งที่เข้าถึงได้ง่าย คุณจะไม่ติดตั้งโปรแกรมจริงๆ แต่จะเรียกใช้จากโฟลเดอร์ที่แตกออกมาโดยดับเบิลคลิกที่ arduino.exe

1123333 31
1123333 31

ขั้นตอนที่ 2 เชื่อมต่อช่องใส่แบตเตอรี่เข้ากับ Arduino

ใส่ซ็อกเก็ตด้านหลังของแบตเตอรี่เข้ากับขั้วต่อบน Arduino เพื่อจ่ายไฟ

1123333 32
1123333 32

ขั้นตอนที่ 3 ใส่ Arduino ลงในคอมพิวเตอร์ของคุณผ่าน USB

เป็นไปได้ว่า Windows จะไม่รู้จักอุปกรณ์

1123333 33
1123333 33

ขั้นตอนที่ 4. กด

ชนะ+รับ และพิมพ์ devmgmt.msc

คำสั่งนี้จะเปิด Device Manager

1123333 34
1123333 34

ขั้นตอนที่ 5. คลิกขวาที่ Unknown device ภายใต้ Other devices และเลือก Update Driver Software

หากคุณไม่เห็นตัวเลือกนี้ ให้คลิก Properties เลือกแท็บ Driver จากนั้นคลิก Update Driver

1123333 35
1123333 35

ขั้นตอนที่ 6 เลือก เรียกดูคอมพิวเตอร์ของฉัน เพื่อหาซอฟต์แวร์ไดรเวอร์

ซึ่งจะช่วยให้คุณสามารถเลือกไดรเวอร์ในตัวที่มาพร้อมกับ Arduino IDE

1123333 36
1123333 36

ขั้นตอนที่ 7 คลิก เรียกดู จากนั้นเปิดโฟลเดอร์ที่คุณแตกก่อนหน้านี้

คุณจะพบโฟลเดอร์ไดรเวอร์ในนั้น

1123333 37
1123333 37

ขั้นตอนที่ 8 เลือกโฟลเดอร์ไดรเวอร์แล้วคลิกตกลง

ยืนยันว่าคุณต้องการดำเนินการต่อหากคุณได้รับคำเตือนเกี่ยวกับซอฟต์แวร์ที่ไม่รู้จัก

ส่วนที่ 5 จาก 5: การเขียนโปรแกรมหุ่นยนต์

1123333 38
1123333 38

ขั้นตอนที่ 1. เปิด Arduino IDE โดยดับเบิลคลิกที่ไฟล์ arduino.exe ในโฟลเดอร์ IDE

คุณจะได้รับการต้อนรับด้วยโครงการเปล่า

1123333 39
1123333 39

ขั้นตอนที่ 2 วางหรือวางรหัสต่อไปนี้เพื่อทำให้หุ่นยนต์ของคุณก้าวหน้า

รหัสด้านล่างจะทำให้ Arduino ของคุณทำงานต่อไป

#include // นี่จะเพิ่มไลบรารี "Servo" ให้กับโปรแกรม // คำสั่งต่อไปนี้จะสร้างเซอร์โวอ็อบเจ็กต์สองตัวที่ Servo leftMotor; เซอร์โวขวามอเตอร์; การตั้งค่าเป็นโมฆะ () { leftMotor.attach (12); // หากคุณสลับหมายเลขพินสำหรับเซอร์โวของคุณโดยไม่ได้ตั้งใจ คุณสามารถสลับตัวเลขได้ที่นี่ rightMotor.attach(13); } วงเป็นโมฆะ () { leftMotor.write (180); // ด้วยการหมุน 360 องศา (การหมุนอย่างต่อเนื่อง) ตัวเลข 180 สั่งให้เซอร์โวเคลื่อนที่ "ไปข้างหน้า" ด้วยความเร็วเต็มที่ rightMotor.write(0); // ถ้าทั้งสองค่าเป็น 180 หุ่นยนต์จะหมุนเป็นวงกลมเพราะเซอร์โวกลับด้าน “0” บอกให้หุ่นยนต์เคลื่อนที่ “ถอยหลัง” ด้วยความเร็วสูงสุด }

1123333 40
1123333 40

ขั้นตอนที่ 3 สร้างและอัปโหลดโปรแกรม

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

คุณอาจต้องการยกหุ่นยนต์ขึ้นจากพื้นผิวเนื่องจากหุ่นยนต์จะเดินไปข้างหน้าหลังจากอัปโหลดโปรแกรมแล้ว

1123333 41
1123333 41

ขั้นตอนที่ 4. เพิ่มฟังก์ชันสวิตช์หยุด (สวิตช์ฆ่า)

เพิ่มโค้ดต่อไปนี้ในส่วน "void loop()" ของโค้ดเพื่อเพิ่มฟังก์ชัน stop switch ที่ด้านบนของฟังก์ชัน "write()"

if(digitalRead(2) == HIGH) // คำสั่งนี้ทำงานเมื่อกดปุ่มบนขา 2 Arduino { while (1) { leftMotor.write (90); // "90" คือตำแหน่งที่เป็นกลางสำหรับเซอร์โว ซึ่งบอกให้เซอร์โวหยุดหมุน rightMotor.write(90); } }

1123333 42
1123333 42

ขั้นตอนที่ 5. อัปโหลดและตรวจสอบรหัสของคุณ

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

#include // คำสั่งต่อไปนี้จะสร้างวัตถุเซอร์โวเซอร์โวด้านซ้ายมอเตอร์สองตัว เซอร์โวขวามอเตอร์; การตั้งค่าเป็นโมฆะ () { leftMotor.attach (12); rightMotor.attach(13); } void loop() { if(digitalRead(2) == HIGH) { while(1) { leftMotor.write(90); rightMotor.write(90); } } leftMotor.write(180); rightMotor.write(0); }

ตัวอย่าง

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

#include เซอร์โว leftMotor; เซอร์โวขวามอเตอร์; const int serialPeriod = 250; // รหัสนี้ทำให้เวลาหน่วงของเอาต์พุตคอนโซลเป็นทุกๆ 1/4 วินาที (250 มิลลิวินาที) ที่ไม่ได้ลงนาม timeSerialDelay นานที่ไม่ได้ลงนาม = 0; const int loopPeriod = 20; // รหัสนี้ตั้งค่าความถี่ในการอ่านของเซ็นเซอร์เป็น 20 ms ซึ่งเป็น 50 Hz ที่ไม่ได้ลงนามเป็นเวลานาน timeLoopDelay = 0; // รหัสนี้กำหนดฟังก์ชัน TRIG และ ECHO ให้กับพินบน Arduino ปรับตัวเลขที่นี่หากคุณเชื่อมต่อด้วยวิธีอื่น const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonic2Distance; int Ultrasonic2ระยะเวลา; // รหัสนี้กำหนดสองสถานะหุ่นยนต์ที่เป็นไปได้: ไปข้างหน้าหรือเลี้ยวซ้าย #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = เดินหน้าต่อไป (ค่าเริ่มต้น), 1 = เลี้ยวซ้ายเป็นโมฆะการตั้งค่า () { Serial.begin (9600); // เซ็นเซอร์นี้กำหนดการตั้งค่าพิน pinMode(ultrasonic2TrigPin, OUTPUT); โหมดพิน (ultrasonic2EchoPin, INPUT); // สิ่งนี้กำหนดมอเตอร์ให้กับหมุด Arduino leftMotor.attach(12); rightMotor.attach(13); } void loop() { if(digitalRead(2) == HIGH) // รหัสนี้ตรวจพบ ''stop'' { while (1) { leftMotor.write (90); rightMotor.write(90); } } debugOutput(); // รหัสนี้พิมพ์ข้อความดีบักไปยังซีเรียลคอนโซล if(millis() - timeLoopDelay >= loopPeriod) { readUltrasonicSensors(); // รหัสนี้สั่งให้เซ็นเซอร์อ่านและเก็บข้อมูลเกี่ยวกับระยะทางที่วัดได้ stateMachine(); timeLoopDelay = มิลลิวินาที (); } } ถือเป็นโมฆะ stateMachine () { if(state == DRIVE_FORWARD) // หากตรวจไม่พบสิ่งกีดขวาง { if(ultrasonic2Distance > 6 || Ultrasonic2Distance < 0) // ถ้าไม่มีอะไรอยู่ข้างหน้าหุ่นยนต์ UltrasonicDistance จะเป็นค่าลบสำหรับ Ultrasonics บางตัวหากไม่มีสิ่งกีดขวาง (// ขับไปข้างหน้า rightMotor.write (180); leftMotor.write(0); } else // หากมีวัตถุอยู่ข้างหน้าเรา { state = TURN_LEFT; } } else if(state == TURN_LEFT) // หากตรวจพบสิ่งกีดขวาง ให้เลี้ยวซ้าย { unsigned long timeToTurnLeft = 500; // ใช้เวลาประมาณ 0.5 วินาทีในการเลี้ยว 90 องศา คุณอาจต้องปรับค่านี้หากล้อของคุณมีขนาดแตกต่างจากขนาดในตัวอย่าง unsigned long turnStartTime = millis(); // รักษาเงื่อนไขเมื่อหุ่นยนต์เริ่มหมุน while((millis()-turnStartTime) < timeToTurnLeft) // เก็บวงจรนี้ไว้จนกว่า timeToTurnLeft (500) จะผ่านไป { // เลี้ยวซ้าย จำไว้ว่าเมื่อทั้งคู่เป็น "180" หุ่นยนต์จะหัน rightMotor.write(180); leftMotor.write(180); } รัฐ = DRIVE_FORWARD; } } ถือเป็นโมฆะ readUltrasonicSensors() { // นี่สำหรับ Ultrasonic 2 คุณอาจต้องเปลี่ยนคำสั่งนี้หากคุณใช้เซ็นเซอร์อื่น digitalWrite (อัลตราโซนิก2TrigPin สูง); ดีเลย์ไมโครวินาที(10); // ดึงพิน TRIG ให้สูงเป็นเวลาอย่างน้อย 10 ไมโครวินาที digitalWrite(ultrasonic2TrigPin, LOW); Ultrasonic2Duration = pulseIn (อัลตราโซนิก2EchoPin สูง); Ultrasonic2Distance = (ultrasonic2Duration/2)/29; } // ต่อไปนี้สำหรับการดีบักข้อผิดพลาดในคอนโซล ถือเป็นโมฆะ debugOutput () { ถ้า ((มิลลิวินาที () - timeSerialDelay) > serialPeriod) { Serial.print ("ultrasonic2Distance: "); Serial.print(อัลตราโซนิก2ระยะทาง); Serial.print("ซม."); Serial.println(); timeSerialDelay = มิลลิวินาที (); } }

แนะนำ: