ZX-LineTracker POPBOT XT Example

Page 1

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 ชุด)


2ZX-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


4ZX-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


6ZX-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


8ZX-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


10ZX-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


12ZX-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


14ZX-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 (มีตอ)


16ZX-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 (มีตอ)


18ZX-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 (จบ)


20ZX-LineTracker


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.