ระบบขับเคลื่อน#
การแนะนำ#
หุ่นยนต์ 123 มีระบบขับเคลื่อนสองล้อที่ช่วยให้มันเคลื่อนที่และเลี้ยวได้ วิธีการทำงานของระบบขับเคลื่อนจะควบคุมการเคลื่อนที่ของหุ่นยนต์
ระบบขับเคลื่อนสามารถวัดระยะทางได้สองวิธี คือ ขั้น และ มม. (มิลลิเมตร) หนึ่ง ขั้น เท่ากับหนึ่งช่องสี่เหลี่ยมบนสนาม 123
มีหลายวิธีในการเขียนโค้ดระบบขับเคลื่อน ด้านล่างนี้คือรายการวิธีการเขียนโค้ดระบบขับเคลื่อนทั้งหมด:
การกระทำ — ขยับและหมุนหุ่นยนต์
drive— เคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังตลอดไปdrive_for— เคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังตามระยะทางที่กำหนดdrive_until— เคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังจนกว่าจะตรวจพบวัตถุ การชน หรือเส้นturn— หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตลอดไปturn_for— หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตามจำนวนองศาที่กำหนดturn_to_heading— หมุนหุ่นยนต์ให้หันหน้าไปยังทิศทางที่กำหนดตั้งแต่ -359 ถึง 359 องศาstop— หยุดการเคลื่อนที่ของหุ่นยนต์
ตัวปรับแต่ง — ปรับการตั้งค่าระบบขับเคลื่อน
set_timeout— กำหนดระยะเวลาที่หุ่นยนต์จะพยายามทำการเคลื่อนไหวให้เสร็จสิ้นset_heading— เปลี่ยนทิศทางปัจจุบันของหุ่นยนต์เป็นทิศทางใหม่
ผู้รับสินค้า — ตรวจสอบสถานะการเคลื่อนย้าย
is_stopped— ส่งคืนค่าบูลีนว่าหุ่นยนต์หยุดเคลื่อนที่หรือไม่get_heading— ส่งคืนทิศทางปัจจุบันของหุ่นยนต์ตั้งแต่ 0 ถึง 359 องศา
การกระทำ#
drive#
คำสั่ง drive จะทำให้หุ่นยนต์เคลื่อนที่ไปข้างหน้าหรือถอยหลังอย่างไม่มีที่สิ้นสุด หุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะได้รับคำสั่งอื่น เช่น การเลี้ยวหรือการหยุด
Usage:
robot.drive(direction)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางการเคลื่อนที่ของหุ่นยนต์: |
# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()
drive_for#
คำสั่ง drive_for จะเคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังเป็นระยะทางที่กำหนด โครงการจะรอจนกว่าหุ่นยนต์จะหยุดเคลื่อนที่ก่อนที่โค้ดบรรทัดถัดไปจะทำงาน
Usage:
robot.drive_for(direction, distance, unit)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางการเคลื่อนที่ของหุ่นยนต์: |
|
ระยะทางที่หุ่นยนต์ขับเคลื่อนไปได้ ค่านี้อาจเป็นจำนวนเต็มหรือทศนิยมก็ได้ |
|
หน่วยระยะทาง: |
# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)
drive_until#
คำสั่ง drive_until จะเคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังจนกว่าจะตรวจพบวัตถุ การชน หรือเส้น
Usage:
robot.drive_until(direction)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางการเคลื่อนที่ของหุ่นยนต์: |
# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)
turn#
turn จะหมุนหุ่นยนต์ไปทางซ้ายหรือขวาเรื่อยๆ จนกว่าจะได้รับคำสั่งอื่น เช่น ขับเคลื่อนหรือหยุด
Usage:
robot.turn(direction)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์หมุน: |
# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()
turn_for#
turn_for จะหมุนหุ่นยนต์ไปทางซ้ายหรือขวาเป็นจำนวนองศาที่กำหนด โครงการจะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่โค้ดบรรทัดถัดไปจะทำงาน
Usage:
robot.turn_for(direction, degrees)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์หมุน: |
|
จำนวนองศาที่จะหมุน ค่านี้อาจเป็นจำนวนเต็มหรือทศนิยมก็ได้ |
# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)
turn_to_heading#
turn_to_heading หมุนหุ่นยนต์ให้หันไปทางทิศทางที่กำหนด ตั้งแต่ -359 ถึง 359 องศา หุ่นยนต์จะหมุนไปในทิศทางที่สั้นที่สุดเพื่อไปยังทิศทางเป้าหมาย
ทิศทางเริ่มต้นคือ 0 องศา
โปรเจ็กต์จะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่จะรันโค้ดบรรทัดถัดไป
Usage:
robot.turn_to_heading(heading)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์ควรหันไปคือ ตั้งแต่ -359 ถึง 359 องศา |
# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)
stop#
ปุ่ม stop stop จะหยุดการเคลื่อนที่ของหุ่นยนต์
Usage:
robot.stop()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()
ตัวกลายพันธุ์#
set_timeout#
set_timeout กำหนดจำนวนวินาทีที่หุ่นยนต์จะพยายามทำการเคลื่อนไหวให้เสร็จสิ้น หากหุ่นยนต์ไม่สามารถทำการเคลื่อนไหวให้เสร็จสิ้นภายในเวลาที่กำหนด มันจะหยุดพยายามและไปยังบรรทัดโค้ดถัดไป ซึ่งจะช่วยป้องกันไม่ให้หุ่นยนต์ติดอยู่กับการเคลื่อนไหวใดๆ
Usage:
robot.set_timeout(time, unit)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ระยะเวลาที่ต้องเผื่อไว้สำหรับการเคลื่อนที่ ค่านี้อาจเป็นจำนวนเต็มหรือทศนิยมก็ได้ |
|
หน่วยเวลา: |
# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)
set_heading#
คำสั่ง set_heading จะเปลี่ยนทิศทางปัจจุบันของหุ่นยนต์เป็นค่าทิศทางใหม่
ตัวอย่างเช่น หากหุ่นยนต์หันไปทางขวา การตั้งค่าทิศทางเป็น 0 องศา จะทำให้ตำแหน่งที่หันไปทางขวานั้นกลายเป็น 0 องศาใหม่
Usage:
robot.set_heading(heading)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าทิศทาง (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับหุ่นยนต์ |
# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)
ผู้รับ#
is_stopped#
is_stopped ส่งคืน Boolean ที่รายงานว่าหุ่นยนต์หยุดเคลื่อนที่หรือไม่
True— หุ่นยนต์หยุดแล้วFalse— หุ่นยนต์ยังคงเคลื่อนที่อยู่
Usage:
robot.is_stopped()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
if robot.is_stopped():
robot.led.glow(BLUE)
else:
robot.led.glow(GREEN)
wait(0.05, SECONDS)
get_heading#
get_heading ส่งคืนทิศทางที่หุ่นยนต์หันหน้าไปในปัจจุบันเป็นจำนวนเต็มตั้งแต่ 0 ถึง 359 องศา
ทิศทางเริ่มต้นของหุ่นยนต์คือ 0 องศา
Usage:
robot.get_heading()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())