ZX-LineTracker 1
ZX-LineTracker
1. คุณสมบัติทางเทคนิค ใชตรวจจับเสนสีดําบนพื้นขาว และเสนสีขาวบนพื้นดําได ใชไดกับสนามหรือพื้นผิวทดสอบทีพิ ่ มพดวยหมึกปองกันแสงอัลตราไวโอเล็ต ใชการตรวจจับแสงสะทอนสีแดงจากพื้นผิว เพื่อแยกสีเขม (สีดํา) และสีออน (สีขาว) โดยใชโฟโต
ทรานซิสเตอรแบบตรวจจับแสงขาวไดจํานวน 7 ตัว มีการปองกันแสงรบกวนขามชองระหวางตัวตรวจจับในแตละชอง ้ มีความสูงและระยะหางจากพื้นผิวทีทํ่ าการตรวจจับเทากัน ตัวตรวจจับทุกตัวไดรับการติดตังให ทําใหผลการทํางานมีความแนนอนสูง ใหผลการทํางานเปนแรงดันไฟตรงแบบอะนาลอก หรือ แบบดิจิตอล มีเอาตพุตแจงผลการตรวจจับ 6 เอาตพุต แบงเปน - เอาตพุตตัวตรวจจับทางซายตัวที่ 1 และ 2 (L1 และ L2) - เอาตพุตตัวตรวจจับทางขวาตัวที่ 1 และ 2 (R1 และ R2) - เอาตพุตตัวตรวจจับกลางเสน (C) - เอาตพุตตัวตรวจจจับทางแยก (X) มี LED แสดงผลการตรวจจับ 8 ดวง โดยติดสวางเมื่อพบสีดํา มีผลการทํางานเปนลอจิก “0” ่ อกับบอรดไมโครคอนโทรลเลอรไดทุกตระกูล ผานทางจุดตอ JST (Japan Standard Terminal) เชือมต 2 มม. 3 ขาตอชอง เลือกเอาตพุตทีต ่ องการตรวจสอบการทํางานไดอยางอิสระ ตองการไฟเลียง ้ +3.3 ถึง +5V กระแสไฟฟา 120mA ติดตั้งเขากับโครงหุนยนตไดงาย
2. อุปกรณในชุด แผงวงจร ZX-LineTracker, สายสัญญาณ JST3AA-8 (6 เสน), ฉากโลหะ 3x2 รู (2 ตัว), สกรู 3x8 มม. พรอมนอต 3 มม. (8 ชุด)
2ZX-LineTracker
3. ขอมูลเบืองต ้ น ZX-LineTracker เปนแผงวงจรตรวจจับแสงสะทอนแสงสีแดง 7 จุด ทีใช ่ งานกับสนามหรือพืน้ ผิวที่พิมพดวยหมึกปองกันแสงอัลตราไวโอเล็ต (UV) ดวยการติดตังตั ้ วตรวจจับมากถึง 7 ตัว ทําให ZX-LineTracker สามารถตรวจจับรายละเอียดของเสนที่ใชในการเคลื่อนที่ของหุนยนตอัตโนมัติได อยางมีประสิทธิภาพ การกําหนดตําแหนงของตัวรวจจับทีแน ่ นอนชวยลดระยะเวลาในการติดตัง้ และ เพิ่มความเที่ยงตรงของตําแหนงในการตรวจจับเสน อีกทั้งยังใชงานไดกับทังพอร ้ ตดิจิตอลและพอร ตอินพุตอะนาลอกของบอรดไมโครคอนโทรลเลอรทีใช ่ ควบคุมหุนยนต หรือนําไปใชกับบอรดควบ คุมที่ใชอุปกรณลอจิกโปรแกรมได (programmable logic device) อยาง CPLD หรือ FPGA ไดดวย
โครงสรางของแผงวงจร ZX-LineTracker
C ML
L2
รูปที่ 1 โครงสรางของ ZX-LineTracker
L1
R1
R2
MR
X
ZX-LineTracker 3
4. การติดตั้ง ZX-LineTracker ตองติดตังเข ้ ากับโครงของหุนยนต ในลักษณะควําด ่ านตัวตรวจจับลงพืน้ โดยใชฉากโลหะกับ สกรูและนอตที่เตรียมมาใหในชุดพรอมใชงาน ควรติดตังให ้ หางจากพื้น 0.5 ถึง 1.5 เซนติเมตร ระยะ หางที่แนะนําคือ ประมาณ 0.6 ถึง 1 เซนติเมตร จากนันต ้ อสายสัญญาณจากเอาตพุตของ ZX-LineTracker ไปยังจุดตอพอรตของบอรดไมโคร คอนโทรลเลอร 1. กรณีใชชุดหุนยนต POP-BOT XT ใหตอเขากับจุดตออินพุตอะนาลอก A0 ถึง A7 (8 จุดตอ) หรือจุดตอพอรตดิจิตอล ซึ่งใชไดสูงสุด 11 จุดตอ 2. กรณีใชชุดหุนยนต Robo-CIRCLE3S แนะนําใหตอเขากับจุดตอ IN ทัง้ 4 จุด ของ i-BOX3S บอรดควบคุมของหุนยนต Robo-CIRCLE3S และ Robo-CIRCLE3S Grandprix 3. กรณีใชชุดหุนยนต Robo-Stamp2P แนะนําใหตอเขากับจุดตอ P0 ถึง P6 ของ StampBOX2P บอรดควบคุมที่พัฒนาโปรแกรมดวยภาษาพีเบสิก 4. กรณีใชชุดหุนยนต Robp-Creater แนะนําใหตอเขากับจุดตอ ADC0 ถึง ADC7 ของบอรด ATX Controller
5. การทํางานของ ZX-LineTracker ใน ZX-LineTracker จะมีวงจรขับแสงสีแดงและตรวจจับแสงสะทอนทังสิ ้ น้ 7 ชุด ติดตังห ้ างกัน อยางเหมาะสม แบงเปนจุด ML, L2, L1, C, R1, R2, MR และ X โดยมีความหมายและการทํางานดังนี้ ML (Most Left) คือตัวตรวจจับทางซายสุด หากตรวจจับสีดําหรือเสนดํา จะแสดงการทํางาน ดวย LED ที่ตําแหนง ML ใชแจงการตรวจพบทางแยกซาย L2 คือตัวตรวจจับทางซายตัวที่ 2 หากตรวจจับสีดําหรือเสนดํา จะแสดงการทํางานดวย LED ทีตํ่ า แหนง L2 และทีเอาต ่ พุต L2 จะมีสถานะเปนลอจิก “0” หรือแรงดันคาตํา่ หากอานดวยวงจรแปลงสัญญาณ ของบอรดไมโครคอนโทรลเลอรทีมี่ ความละเอียด 10 บิต จะอานคาไดในไมเกิน 350 และถาตรวจพบสี ขาวจะใหคาในชวง 600 ถึง 1000 ในการตรวจจับเสนควรอานคาทีจุ่ ดนีร้ วมกับตัวตรวจจับจุด R2 L1 คือตัวตรวจจับทางซายตัวที่ 1 หากตรวจจับสีดําหรือเสนดํา จะแสดงการทํางานดวย LED ทีตํ่ า แหนง L1 และทีเอาต ่ พุต L1 จะมีสถานะเปนลอจิก “0” หรือแรงดันคาตํา่ หากอานดวยวงจรแปลงสัญญาณ ของบอรดไมโครคอนโทรลเลอรทีมี่ ความละเอียด 10 บิต จะอานคาไดในไมเกิน 350 และถาตรวจพบสี ขาวจะใหคาในชวง 600 ถึง 1000 ในการตรวจจับเสนควรอานคาทีจุ่ ดนีร้ วมกับตัวตรวจจับจุด R1
4ZX-LineTracker
C (Center) คือตัวตรวจจับกึงกลางเส ่ น หากตรวจจับสีดําหรือเสนดํา จะแสดงการทํางานดวย LED ทีตํ่ าแหนง C และทีเอาต ่ พุต C จะมีสถานะเปนลอจิก “0” หรือแรงดันคาตํา่ หากอานดวยวงจรแปลง สัญญาณของบอรดไมโครคอนโทรลเลอรทีมี่ ความละเอียด 10 บิต จะอานคาไดในไมเกิน 350 และถาตรวจ พบสีขาวจะใหคาในชวง 600 ถึง 1000 ในการตรวจจับเสนอาจอานคาทีจุ่ ดนีร้ วมกับตัวตรวจจับทางซาย และทางขวา R1 คือตัวตรวจจับทางขวาตัวที่ 1 หากตรวจจับสีดําหรือเสนดํา จะแสดงการทํางานดวย LED ทีตํ่ า แหนง R1 และทีเอาต ่ พุต R1 จะมีสถานะเปนลอจิก “0” หรือแรงดันคาตํา่ หากอานดวยวงจรแปลงสัญญาณ ของบอรดไมโครคอนโทรลเลอรทีมี่ ความละเอียด 10 บิต จะอานคาไดในไมเกิน 350 และถาตรวจพบสี ขาวจะใหคาในชวง 600 ถึง 1000 ในการตรวจจับเสนควรอานคาทีจุ่ ดนีร้ วมกับตัวตรวจจับจุด L1 R2 คือตัวตรวจจับทางขวาตัวที่ 2 หากตรวจจับสีดําหรือเสนดํา จะแสดงการทํางานดวย LED ทีตํ่ า แหนง R2 และทีเอาต ่ พุต R2 จะมีสถานะเปนลอจิก “0” หรือแรงดันคาตํา่ หากอานดวยวงจรแปลงสัญญาณ ของบอรดไมโครคอนโทรลเลอรทีมี่ ความละเอียด 10 บิต จะอานคาไดในไมเกิน 350 และถาตรวจพบสี ขาวจะใหคาในชวง 600 ถึง 1000 ในการตรวจจับเสนควรอานคาทีจุ่ ดนีร้ วมกับตัวตรวจจับจุด L2 X (Junction) คือเอาตพุตของวงจรตรวจจับทางแยก ซึงมี ่ ความสําคัญมากสําหรับการใชงาน ZXLineTracker เพราะทีจุ่ ดนีจะให ้ ผลการทํางานเปนลอจิก “0” ทีจุ่ ดตอ X และขับ LED ทีตํ่ าแหนง X ใหติด สวางในทุกครังที ้ ตรวจพบทางแยกในทุ ่ กกรณี หากสังเกตการทํางานจะพบวา ทุกครังที ้ ่ MR หรือ ML ทํางาน จุด X ก็จะทํางานตามไปดวย ดังนันจึ ้ งเหมาะอยางยิงในการนํ ่ าผลการทํางานทีเอาต ่ พุต X นีไปใช ้ ในการตรวจจับและนับทางแยก ซึงเร็ ่ วกวาการอานคาตัวตรวจจับ 2 ตัวมาวิเคราะห ดังรูปที่ 2 การนําสัญญาณ X ไปใชงาน ควรกําหนดใหขาพอรตของบอรดไมโครคอนโทรเลอรที่นํามา เชื่อมตอเปนอินพุตดิจิตอล เพื่ออานคาลอจิก “0” ที่จะเกิดขึ้นเมื่อแผงวงจรตรวจจับพบทางแยก อยาง ไรก็ตาม เอาตพุต X ใชงานไดในกรณีสนามทดสอบพิมพดวยเสนสีดําหรือสีเขม และพืนเป ้ นสีขาวหรือ สีออนมากๆ คําวา “ทางแยก” ในที่นี้หมายรวมถึง สามแยกปด, สามแยกทางขวา, สามแยกทางซาย และสี่ แยก นอกจากนี้ยังครอบคลุมไปถึงกรณีทางเลี้ยวหักซอกหรือทางเลี้ยว 90 องศาทั้งทางเลี้ยวซายและ ทางเลียวขวา ้ การตรวจสอบทิศทางของทางแยก จะตองตรวจสอบคาของตัวตรวจจับ L (L1 หรือ L2), R (R1 หรือ R2) และ C รวมดวย
ZX-LineTracker 5
1
C ML
2
L2
L1
R1
R2
MR
X
C ML
L2
L1
R1
R2
MR
X
รูปที่ 2 แสดงการตรวจสอบทางแยกทังแบบพื ้ นฐานและแบบใช ้ ความสามารถของเอาตพุต X ของ ZXLineTracker
6ZX-LineTracker
6. การเลือกตอเอาตพุตตัวตรวจจับ L และ R ขึนอยู ้ กั บขนาดความกวางของเสนเปนหลัก หากเสนมีความกวางระหวาง 2 ถึง 4 เซนติเมตร ใหเลือกตอที่ชอง R1 และ L1 หากเสนมีความกวางระหวาง 5 ถึง 6 เซนติเมตร ใหเลือกตอที่ชอง R2 และ L2 หากตองการตรวจสอบกึ่งกลางเสน ใหตอสายสัญญาณที่ชอง C หากตองการตรวจสอบทางแยกแบบรวดเร็ว ใหตอสายสัญญาณที่ชอง X เพือใช ่ งานดวย ดังนันการใช ้ งาน ZX-LineTracker ใหมีประสิทธิภาพ ควรเลือกตอสายสัญญาณอยางนอย 4 เสน คือ R1 หรือ R2, L1 หรือ L2, C และ X หรือถาหากเสนทางการเคลือนที ่ มี่ ความซับซอนเชน มีทางแยกเปนเสนทะแยงมุมหรือเปนมุม แหลม ดังรูปที่ 3 อาจตองใชตัวตรวจจับทุกจุดชวยในการตัดสินใจ
START
FINISH
รูปที่ 3 ตัวอยางสนามทีมี่ เสนทางซับซอนและมีจุดตัดทีมี่ ความหลากหลาย
ZX-LineTracker 7
7. การตีความและการตรวจสอบเสนทางของ ZX-LineTracker ในการเคลือนที ่ ตามเส ่ นของหุนยนต จะเกิดเหตุการณทีต่ องตรวจสอบมากพอสมควร ตอไปนี้ คือ การตีความและการตรวจสอบเสนทางการเคลื่อนที่เมื่อใชงาน ZX-LineTracker
7.1 กรณีทางแยกขวา
C ML
L2
L1
R1
R2
MR
X
R1
R2
MR
X
C ML
L2
L1
8ZX-LineTracker
7.2 กรณีทางเลี้ยวขวา
C ML
L2
L1
R1
R2
MR
X
R1
R2
MR
X
C ML
L2
L1
ZX-LineTracker 9
7.3 กรณีทางแยกซาย
C ML
L2
L1
R1
R2
MR
X
R1
R2
MR
X
C ML
L2
L1
10ZX-LineTracker
7.4 กรณีทางเลี้ยวซาย
C ML
L2
L1
R1
R2
MR
X
R1
R2
MR
X
C ML
L2
L1
ZX-LineTracker 11
7.5 กรณีสามแยกปด
C ML
L2
L1
R1
R2
MR
X
R1
R2
MR
X
C ML
L2
L1
12ZX-LineTracker
7.6 กรณีสีแยก ่
C ML
L2
L1
R1
R2
MR
X
R1
R2
MR
X
C ML
L2
L1
ZX-LineTracker 13
8. ตัวอยางโปรแกรมเพือใช ่ งานหุนยนต POP-BOT XT กับ ZX-LineTracker 8.1 การเชื่อมตอสัญญาณ - ตอสายจากจุดตอ C ของ ZX-LineTracker ไปยังจุดตอ A3 ของ POP-XT - ตอสายจากจุดตอ X ของ ZX-LineTracker ไปยังจุดตอ A2 ของ POP-XT - ตอสายจากจุดตอ L1 ของ ZX-LineTracker ไปยังจุดตอ A1 ของ POP-XT - ตอสายจากจุดตอ R1 ของ ZX-LineTracker ไปยังจุดตอ A0 ของ POP-XT
14ZX-LineTracker
8.2 ตัวอยางสนามทดสอบ แสดงในรูปที่ 4
8.3 ภารกิจ หุนยนต เคลื่อนที่ออกจากจุดเริมต ่ นเพื่อไปดันวัตถุที่อีกดานหนึ่งของสนาม แลวกลับมายังจุด เริมต ่ น
START & FISNISH
รูปที่ 4 สนามทดสอบทีใช ่ เปนตัวอยางในการอธิบาย
ZX-LineTracker 15
8.4 ตัวอยางโปรแกรม แสดงในโปรแกรมที่ 1 พัฒนาบน Arduino 1.01 #include <popxt.h> int C,L,R,X,B=0; void R90() { fd(60); sound(1500,250); while(analog(0)>500) { sr(40); } while(analog(0)<500) { sr(40); } ao(); sleep(400); } void L90() { fd(60); sound(1200,250); while(analog(1)>500) { sl(40); } while(analog(1)<500) { sl(40); } ao(); sleep(400); }
// ผนวกไลบรารีหลัก // ฟงกชันหมุ ่ นขวา 90 องศา // เคลื่อนที่ไปขางหนาเล็กนอย // ขับเสียงสัญญาณเพื่อแจงวา พบทางแยก // ตรวจสอบอินพุต A0 (ตอกับตัวตรวจจับจุด R1) พบสีขาวหรือไม // ถาใช ใหหมุนขวาตอไปดวยกําลังขับ 40% // ตรวจสอบอินพุต A0 พบเสนสีดําหรือไม // ถาใช ใหหมุนขวาตอไปอีกเล็กนอยดวยกําลังขับ 40% // หยุดมอเตอรชัวขณะ ่ เพือให ่ หุนยนต นิ่ง // หนวงเวลา 0.4 วินาที // ฟงกชันหมุ ่ นขวา 90 องศา // เคลื่อนที่ไปขางหนาเล็กนอย // ขับเสียงสัญญาณเพื่อแจงวา พบทางแยก // หมุนซายเล็กนอยดวยกําลังขับ 40% // ตรวจสอบอินพุต A1 (ตอกับตัวตรวจจับจุด L1) พบเสนสีดําหรือไม // ถาใช ใหหมุนซายตอไปอีกเล็กนอยดวยกําลังขับ 40% // หยุดมอเตอรชัวขณะ ่ เพือให ่ หุนยนต นิ่ง // หนวงเวลา 0.4 วินาที
โปรแกรมที่ 1 โปรแกรมตัวอยางสําหรับการเคลื่อนทีบนสนามทดสอบตั ่ วอยางตามรูปที่ 4 โดยใช หุนยนต POP-BOT XT รวมกับ ZX-LineTracker (มีตอ)
16ZX-LineTracker
void bump() { while (analog(3)<500) { fd(40); } while(analog(3)>500) { fd(40); } while(analog(2)<500) { bk(40); } while(analog(2)>500) { bk(40); } while(analog(3)>500) { bk(40); } while(analog(3)<500) { bk(40); } R90(); } void setup() { setTextSize(2); glcd(1,1,”Press OK”); sw_ok_press(); glcd(1,1,”Moving...”); fd(60); sleep(300); }
// ฟงกชันดั ่ นวัตถุ // ตรวจสอบอินพุต A3 (ตอกับตัวตรวจจับจุด C) พบสีดําหรือไม // ถายังพบ ใหเคลื่อนที่ตรงตอไปดวยกําลังขับ 40% // ตรวจสอบอินพุต A3 พบสีขาวหรือไม // ถายังพบ ใหเคลื่อนที่ตรงตอไปดวยกําลังขับ 40% // ตรวจสอบอินพุต A2 (ตอกับตัวตรวจจับจุด X) พบเสนตัดสีดําหรือไม // ถาพบ ใหถอยหลังดวยกําลังขับ 40% // ตรวจสอบอินพุต A2 พบพืนสี ้ ขาวหรือไม // ถาพบ ใหถอยหลังดวยกําลังขับ 40% // ตรวจสอบอินพุต A3 พบสีขาวหรือไม // ถาพบ ใหถอยหลังดวยกําลังขับ 40% // ตรวจสอบอินพุต A3 พบเสนสีดําหรือไม // ถาพบ ใหถอยหลังดวยกําลังขับ 40% // หมุนขวา 90 องศา แลวออกจากฟงกชันนี ่ ้ไป // ตั้งคาการทํางานชวงเริ่มตน // กําหนดขนาดของตัวอักษรทีต่ องการแสดงผล // แสดงขอความเพือแจ ่ งใหกดสวิตช OK // วนรอการกดสวิตช OK // แสดงขอความเริ่มทํางาน // หุนยนตเคลื่อนที่ไปขางหนาดวยกําลังขับ 60% // เปนเวลา 0.3 วินาที
โปรแกรมที่ 1 โปรแกรมตัวอยางสําหรับการเคลื่อนทีบนสนามทดสอบตั ่ วอยางตามรูปที่ 4 โดยใช หุนยนต POP-BOT XT รวมกับ ZX-LineTracker (มีตอ)
ZX-LineTracker 17
void loop() // โปรแกรมหลัก { while(B<10) // ตรวจสอบวา พบทางแยกนอยกวา 10 ทางแยกหรือไม { // ถาใช วนทํางานในลูปนี้ L=analog(1); // อานคาอินพุต A1 (ตอกับตัวตรวจจับจุด L1) เก็บไวทีตั่ วแปร L R=analog(0); // อานคาอินพุต A0 (ตอกับตัวตรวจจับจุด R1) เก็บไวทีตั่ วแปร L X=analog(2); // อานคาอินพุต A2 (ตอกับตัวตรวจจับจุด X) เก็บไวทีตั่ วแปร L if (X<500) // ถาพบทางแยก (เปนผลมาจาก X<500) { B++; // เพิมค ่ าตัวนับทางแยก if(B==2||B==5||B==8||B==9) // ตรวจสอบวา เปนทางแยกลําดับที่ 2, 5, 8 หรือ 9 หรือไม { R90(); // ถาใช ใหหมุนขวา 90 องศา } else if (B==3) // ตรวจสอบวา เปนทางแยกลําดับที่ 3 หรือไม /* โปรแกรมในสวนนีเป ้ นโปรแกรมการเคลือนที ่ พิ่ เศษสําหรับสวนของสนามทีเป ่ นเสนโคงตอเนือง ่ ทําใหหุนยนต อาจ ตรวจพบทางแยกได ทังที ้ ่ไมมีทางแยกใดๆ ดังนั้นเมื่อตรวจพบทางแยก สงใหตัวนับทางแยกเพิมค ่ าขึ้น เพือให ่ คาการ นับแยกกลับมาถูกตองจึงตองมีการลดคาลงตามคาตัวนับทีเพิ ่ มขึ ่ ้น */ { // เมือพบทางแยกที ่ ่ 3 ใหทํางานดังนี้ if(L<500&&R<500) // หากพบเสนที่มีลักษณะเหมือนทางแยก { B++; // เพิมค ่ าตัวนับทางแยกอีก 1 คา fd(50); // เคลื่อนที่ตรงไปขางหนาดวยกําลังขับ 50% sleep(400); // หนวงเวลา 0.4 วินาที } else if (R<500&&L>500) // ถาพบวา หุนยนต กําลังจะเคลื่อนที่ออกจากเสนไปทางซาย { fd(60); // เคลื่อนที่ตรงไปขางหนาดวยกําลังขับ 60% sound(2200,100); // ขับเสียงแจงใหทราบสถานะการทํางาน while(analog(3)>500) // ตรวจสอบอินพุต A3 วา ไมพบทางแยกแลวใชหรือไม { sr(50); // ถาใช (ไมพบทางแยก) ใหหมุนขวาดวยกําลังขับ 50% } // เพือทํ ่ าใหหุนยนต กลับมาครอมเสน B -- ; // ลดคาตัวนับลง 1 คา (ทําใหคาตัวนับแยกกลับมาเทากับ 3) }
โปรแกรมที่ 1 โปรแกรมตัวอยางสําหรับการเคลื่อนทีบนสนามทดสอบตั ่ วอยางตามรูปที่ 4 โดยใช หุนยนต POP-BOT XT รวมกับ ZX-LineTracker (มีตอ)
18ZX-LineTracker
else if (L<500&&R>500) // ถาพบวา หุนยนต กําลังจะเคลื่อนที่ออกจากเสนไปทางขวา { fd(60); sound(2400,100); // ขับเสียงทีมี่ ความถี่ตางกัน เพือแจ ่ งใหทราบสถานะการทํางาน while(analog(3)>500) // ตรวจสอบอินพุต A3 พบพืนสี ้ ขาวหรือไม { sl(50); // ถาพบ แสดงวากําลังจะเคลื่อนที่ออกจากเสน ใหหมุนซายทันที } B -- ; // ลดคาตัวนับทางแยกลง 1 คา } } // ออกจากการทํางานเมื่อพบทางแยกที่ 3
}
else if (B==4) { fd(50); sound(2800,300); } else if (B==7) { bump(); } else { L90(); }
// ตรวจสอบวา เปนทางแยกลําดับที่ 4 หรือไม // เคลื่อนที่ตรงไปขางหนาดัวยกําลังขับ 50% // ขับเสียงดวยความถี่ทีต่ างออกไป เพือแจ ่ งสถานะการทํางาน // ตรวจสอบวา เปนทางแยกลําดับที่ 7 หรือไม // ไปทํางานที่ฟงกชันดั ่ นวัตถุ // ถาตรวจสอบพบทางแยกในลําดับอืน่ // หมุนซาย 90 องศา
/* สวนของโปรแกรมตอจากนี้เปน โปรแกรมสําหรับการเคลื่อนที่ตามเสน */ if(L>500&&R>500) // ถาตัวตรวจจับเสนทางซายและขวาพบพืนขาว ้ แสดงวา หุนยนต ครอมเสน { fd(50); // กําหนดใหหุนยนต เคลื่อนที่ไปขางหนาดวยกําลังขับ 50% } else if(L<500) // ถาตัวตรวจจับเสนทางซายพบเสนดํา แสดงวา // หุนยนต กําลังจะเคลื่อนที่ออกนอกเสนทางซาย { while(analog(3)>500) // ตรวจสอบอินพุต A3 วาพบพืนขาวหรื ้ อไม
โปรแกรมที่ 1 โปรแกรมตัวอยางสําหรับการเคลื่อนทีบนสนามทดสอบตั ่ วอยางตามรูปที่ 4 โดยใช หุนยนต POP-BOT XT รวมกับ ZX-LineTracker (มีตอ)
ZX-LineTracker 19
{ }
sl(50);
} else if(R<500) {
}
}
while(analog(3)>500) { sr(50); }
// ถาพบ แสดงวากําลังจะเคลื่อนที่ออกจากเสน ใหหมุนซายทันที // ถาตัวตรวจจับเสนทางขวาพบเสนดํา แสดงวา // หุนยนต กําลังจะเคลื่อนที่ออกนอกเสนทางขวา // ตรวจสอบอินพุต A3 วาพบพืนขาวหรื ้ อไม // ถาพบ แสดงวากําลังจะเคลื่อนที่ออกจากเสน ใหหมุนขวาทันที
/* สวนของโปรแกรมตอไปนี้ เปนโปรแกรมสําหรับการเคลื่อนที่ชวงสุดทายกอนเขาสูจุดสิ้นสุด หลังจากเคลื่อนที่มาจนถึงทางแยกสุดทาย */ fd(60); // เคลื่อนที่ตรงไปขางหนา sleep(800); // เปนเวลา 0.8 วินาที ao(); // หยุดการเคลื่อนที่ sound(2500,1000); // ขับเสียง เพือแจ ่ งสถานะการทํางาน glcd(1,1,”FINISH...”); // แสดงผลขอความ สินสุ ้ ดการทํางาน while(1); // วนแสดงผลตลอดเวลา }
โปรแกรมที่ 1 โปรแกรมตัวอยางสําหรับการเคลื่อนทีบนสนามทดสอบตั ่ วอยางตามรูปที่ 4 โดยใช หุนยนต POP-BOT XT รวมกับ ZX-LineTracker (จบ)
20ZX-LineTracker