Wireless Joystick kit

Page 1

Wireless Joystick Kit

     1

Wireless Joystick kit    ประกอบดวย 

จอยสติ๊กไรสาย ความถี่ 2.4GHz

กลองรับสงคลื่นวิทยุ 2.4GHz

แผงวงจร ZX-PSX

สาย JST3AA-5 จํานวน 4 เสน

เอกสารประกอบการใชงาน

ดาวนโหลดโคดตัวอยางเพิ่มเติมได ที่ www.inex.co.th

   

ใชสําหรับติดตอกับแผงวงจรไมโครคอนโทรลเลอรเพื่ อรับสงขอมูลจากจอยสติกไร ๊ สาย

 ความถี่ในการสือสารข ่ อมูล 2.4GHz

ระยะทําการ 8 เมตร

 ใชงานจอยสติกไร ๊ สายไดพรอมกันสูงสุด 20 คู (จอยสติกไร ๊ สาย 1 ตัวและกลองรับสงคลืนวิ ่ ทยุ 1 ตัว)

ตัวจอยสติกไร ๊ สายทํางานเขากันไดกับตัวควบคุมหรือจอยสติ๊กสําหรับเครืองเล ่ นเกม PlayStation2 ของ Sony โดยทํางานในโหมดอะนาลอก ใชงานปุมควบคุมไดครบทุกปุม มีไฟแสดงสถานะการเชื่อม ตอทีตั่ วจอยสติกด ๊ วย ใชแบตเตอรี่ AAA ชนิดใดก็ได 2 กอนเปนแหลงจายไฟเลียง ้ 

กลองรับสงคลืนวิ ่ ทยุใชไฟเลียง ้ +3.3V หรือ +5V ก็ได โดยตอกับแผงวงจร ZX-PSX2 กินกระแส ไฟฟา 200mA มีไฟแสดงสถานะการเชื่อมตอ 

แผงวงจรเชื่อมตอ ZX-PSX2 รองรับการทํางานทังกั ้ บจอยสติ๊กไรสายและแบบมีสาย มีจุดตอเพื่อ เชื่อมตอกับไมโครคอนโทรลเลอร 2 แบบคือ JST 2 มม. 3 ขา ตัวผู 4 ตัว และแบบ IDC 2.54 มม. 6 ขา ทั้ งตัวผู และตัวเมีย 

ใช งานกับบอรดไมโครคอนโทรลเลอรไดทุกแบบ


2  Wireless Joystick Kit      

        ถ าเป นนักเลนเกมคอนโซลคงทราบดีถึงความจริงขอหนึ่ งของจอยสติ๊ก PS2 ไรสาย นั่นคือ Sony ไมเคยผลิตตัวควบคุมแบบไรสายสําหรับเครืองเล ่ นเกม PlayStation ออกจําหนายอยางเปนทาง การ ทีเห็ ่ นและนํามาใชงาน มันเปนสิ่งที่ผลิตขึ้นโดยผูผลิ  ตอุปกรณเสริมในจีน มีการพิมพตรา Sony ลงบนตัวควบคุมและทําบรรจุภัณฑใหดูนาเชื่ อวา เปนของ Sony แทๆ ในการเชื่ อมตอตัวควบคุมหรือจอยสติ๊กกับเครืองเล ่ มเกม PS ตองกระทําผานคอนเน็ กเตอร PSX ซึ่งมีดวยกัน 9 ขา ดังแสดงในรูปที่ 1 หากตองการใชงานจอยสติก๊ PS2 ก็จะตองสรางสัญญาณ ที่ ตัวควบคุมนี้ ตองการ จากนั้ นทําการอานคาจากการกดปุมแตละตัวกลับมาเพือนํ ่ าไปใชงานตอไป 1 2 3 4 5 6 7 8 9

        

รูปที่ 1 การจัดขาของคอนเน็กเตอร PSX ของเครื่องเลมเกม PS2

รูปที่ 2 จอยสติกไร ๊ สายพรอมกลองรับสงคลื่นวิทยุ

ชุดจอยสติกไร ๊ สายประกอบดวย ตัวจอย สติกที ๊ ทํ่ าหนาทีเป ่ นตัวสงสัญญาณและกลองตัว รับคลื่นวิ ทยุที่ตองตอกับคอนเน็ กเตอร PSX บนเครืองเล ่ มเกม ในความเปนจริงแลวอุปกรณ ทังสองนี ้ ต้ องรับและสงสัญญาณไดทัง้ 2 ทิศทาง หรือเรียกวา Transceiver แตในทางการคา จะเรี ยกจอยสติกว ๊ า ตัวสง สวนกลองทีต่ อกับเครือง ่ เลนเกมจะเรียกวา เปนตัวรับ


Wireless Joystick Kit

     3

    ในการนําตัวควบคุมหรือจอยสติ๊ก PS2 มาใช งานกับไมโครคอนโทรลเลอร ก็ทําไดไมยาก สายสัญญาณทีใช ่ งานมีเพียง 4 เสนคือ DATA, COMMAND, SELECT และ CLOCK DATA (DAT) เปนสัญญาณขอมูลปุมของตั  วควบคุมหรือจอยสติกที ๊ ถู่ กกด จะถูก สงมาจากตัวควบคุมหรือจอยสติ๊ก โดยขอมูลที่สงมามีขนาด 8 บิต โดยสงบิต LSB ดมากอน 

 COMMAND (CMD) เปนสัญญาณคําสังสํ ่ าหรับตัวควบคุมหรือจอยสติ๊ก สัญญาณ

นี้ไมโครคอนโทรลเลอรจะเปนผูส ง ่  ATT SELECT (SEL) เปนสัญญาณเลือกการทํางานหรือเปดการติดตอ ซึงทางไมโคร คอนโทรลเลอรตองสงสัญญาณ “0” มาทีขานี ่ และต ้ องทําใหขานีเป ้ นลอจิก “0” ตลอดเวลาทีติ่ ดตอกัน CLOCK (CLK) เปนสัญญาณนาฬิกาสําหรับกําหนดจังหวะการทํางาน ฝงของ ไมโครคอนโทรลเลอรจะเปนฝ ายสรางสัญญาณสงมายังตัวควบคุมหรือจอยสติ๊ก การตอบสนองตอสัญญาณของอุปกรณจะเกิดขึ้นทีขอบขาลงของสั ่ ญญาณนาฬิกา เมือมี ่ การรับ รูคํ าสัง่ (COMMAND) จอยสติกจะทํ ๊ าใหขา ACK กลายเปนลอจิก “0” (ในทีนี่ ไม ้ ไดใชงาน) เมือไมโครคอนโทรลเลอร ่ ตองการอานขอมูลจากตัวควบคุมหรือจอยสติกจะต ๊ องทําใหขา ATT หรือ SEL เปนลอจิก “0” แลวสงคําสั่งเริมต ่ น 0x01 ไปยังตัวควบคุมหรือจอยสติก๊ เมือตั ่ วควบคุมหรือ จอยสติกได ๊ รับก็จะตอบกลับดวยรหัสหรือ ID ของตัวเอง เพือให ่ รูว า มันทํางานอยูในโหมดใด  ซึงมี ่ ดวย กัน 4 รหัสหลักคือ 

SEL (ATT)



CLK

  CMD

0x01

 0x42

    DAT

0xFF

0x41

0x5A

 





ACK

 

รูปที่ 3 ไดอะแกรมเวลาของการติดตอระหวางไมโครคอนโทรลเลอรและตัวควบคุมหรือจอยสติก๊ PS2


4  Wireless Joystick Kit      

0x41 หมายถึง จอยสติ๊กทํางานในโหมดดิจิตอล (Digital) 0x23 หมายถึง จอยสติกทํ ๊ างานในโหมด NegCon (ในทีนี่ ้ไมใชงาน) 0x73 หมายถึง จอยสติ๊กทํางานในโหมดอะนาลอก LED สีแดง (Analog Red LED) จอยสติ๊กในชุด Wireless Joystick ไดรับการกําหนดใหทํางานในโหมดนี้เพียงโหมดเดียว 0x53 หมายถึง จอยสติ๊กทํางานในโหมดอะนาลอก LED สีเขียว (Analog Green LED) ในชวงเวลาเดียวกันนั้น ไมโครคอนโทรลเลอรตองสงคําสั่ง 0x42 เพือร ่ องขอขอมูลสถานะของ ปุมกดจากตัวควบคุมหรือจอยสติ๊ก จากนั้นขา CMD จะเขาสูภาวะสงบ (idle) เพื่ อรอให ตัวควบคุม หรือจอยสติ๊กสงขอมูลกลับมายังขา DAT โดยตัวควบคุมหรือจอยสติ๊กจะเริ่มตนดวยการสงขอมูล 0x5A เพื่อบอกใหไมโครคอนโทรลเลอรทราบวา ขอมูล 2 ถึง 6 ไบตถัดไปจากนี้คือ ขอมูลสถานะ ของปุมกดทังหมด ้ ในรูปที่ 3 แสดงไดอะแกรมเวลาทีอธิ ่ บายถึงกระบวนการในการติดตอกันระหวาง ไมโครคอนโทรลเลอรและตัวควบคุมหรือจอยสติ๊ก PS2 เมือทํ ่ างานในโหมดดิจิตอล

รู ปที่ 4 แสดงตําแหน งปุมกดของจอยสติก๊ PS2 ไรสายเพื่อใชอางอิ งกับขอมูลสถานะที่ไดกลับมา จากจอยสติ๊ก PS2


Wireless Joystick Kit

     5

      ในตารางที่ 1 แสดงขอมูลทังหมดที ้ เกิ ่ ดขึนในระหว ้ างการติดตอของไมโครคอนโทรลเลอรกับตัว ควบคุมหรือจอยสติก๊ PS2 ในแตละรอบ เมือทํ ่ างานในโหมดอะนาลอก จะเห็นวา มีขอมูลเกิดขึนรวม ้ 9 ไบต ขอมูลสถานะของปุมกดจะอยู  ที ไบต ่ ที่ 4 ถึง 9 มีขอมูลของปุมครบทุ  กปุม รวมถึงขอมูลตําแหนง ของปุมหมุ  นอะนาลอกทังซ ้ ายและขวา เพือระบุ ่ ตําแหนงเลือนซ ่ าย-ขวา และขึน-ลง ้ โดยในรูปที่ 4 แสดง ตําแหนงปุมกดของตั  วควบคุมหรือจอยสติก๊ PS2 เพื่อใชในการอางอิงกับขอมูลสถานะทีได ่ กลับมาจาก ตัวควบคุมหรือจอยสติก๊ PS2    

         

 0x01

 

0x42

0x41

      

0x5A

     











SELECT

JOY-R

JOY-L

START

UP





RIGHT DOWN

 LEFT

 

          L1 R1 L2 R2  

       0x00



   0x00

  

0xFF

0xFF

ตารางที่ 1 ขอมูลทีเกิ ่ ดขึนเมื ้ ่อตัวควบคุมหรือจอยสติก๊ PS2 ทํางานในโหมดอะนาลอก


6  Wireless Joystick Kit      

   วงจรของแผงวงจรติดตอจอยสติ๊กไรสายที่ทํางานเขากันไดกับตัวควบคุมหรือจอยสติก๊ PS2 แสดงในรูปที่ 5 จะเห็นวา มีอุปกรณไมมาก ชิ้นสวนสําคัญคือ K2 คอนเน็กเตอร PSX ทีใช ่ ในการติดตอ กับตัวควบคุมหรือจอยสติ๊ก PS2 โดยตรงในกรณีใช แบบสาย และติดตอกับกลองรับสงคลืนวิ ่ ทยุใน กรณีใชจอยสติ๊กแบบไรสาย ตองมีการกําหนดสถานะลอจิกทีแน ่ นอนขณะทีไม ่ มีการทํางานใหกับขา CLOCK และ DATA เพื่ อให การกําหนดจังหวะของการทํางานเปนไปอยางถูกตอง โดยใช ตัวตานทานตอเขากับไฟเลียง ้ เพื่อกําหนดสถานะลอจิก “1” ใหกับขาสัญญาณในขณะทียั่ งไมมีการทํางาน จะเรียกการตอแบบนี้วา การตอตัวตานทานพูลอัป

GND CLK SEL CMD DAT +V

+V R2 4.7k

K1 PSX-BUS

R1 4.7k

K2 PSX 9

+V J4 CLOCK J3 SELECT J2 COMMAND

R5 220

8 7

R4 220

6 5

R3 220

4 3 2

J1 DATA

รูปที่ 5 วงจรสมบูรณของแผงวงจรเชื่อมตอจอยสติกไร ๊ สายสําหรับไมโครคอนโทรลเลอร

1


Wireless Joystick Kit

     7

ขาสัญญาณทีต่ องมีการพูลอัปคือ ขา DATA และ CLOCK โดยใช R1 และ R2 ในขณะทีขา ่ สัญญาณ COMMAND และ SELECT เปนขาเอาตพุตซึงต ่ อเขากับขาพอรตของไมโครคอนโทรลเลอร ที่นํ ามาตอรวมดวย เพื่อปองกันไมใหเกิดความเสียหายจากกระแสไฟฟาและแรงดันที่อาจสูงเกินไป เนื่ องจากตัวควบคุมใชงานไดกับทั้งไฟเลี้ยง +3.3V และ +5V จึงตองตอตัวตานทาน R3 และ R4 อนุกรมไวเพื่อควบคุมกระแสไฟฟาและลดแรงดันที่ขาสัญญาณนั้นลงอยางเหมาะสม เพื่อชวยใหทัง้ ตัวควบคุมหรือจอยสติ๊กและกลองรับสงคลืนวิ ่ ทยุลดโอกาสเสียหายอันอาจเกิดจากกระแสไฟฟาหรือ แรงดันไฟฟาสูงเกินไป นอกจากนั้นที่ขา CLOCK ยังมีตัวตานทาน R5 ตออนุกรมไวดวยสาเหตุเดียวกับ R3 และ R4 ทั้งนี้ เนื่องจากไมโครคอนโทรลเลอรทีนํ่ ามาเชื่อมตอจะทําหนาทีเป ่ นตัวกําเนิดสัญญาณนาฬิกาสงไป ยังจอยสติ๊กและกลองรับสงคลืนวิ ่ ทยุ (ในกรณีไรสาย) เพื่อกําหนดจังหวะการทํางาน จุดตอสัญญาณมีดวยกัน 2 แบบคือ แบบ JST 3 ขามีดวยกัน 4 จุดตอคือ J1 ถึง J4 (DATA, COMMAND, SELECT และ CLOCK) แบบที่ 2 คือ แบบ IDC (K1) ซึ่งใชคอนเน็กเตอร IDC 6 ขาทัง้ ตั วผู และตัวเมีย มีการจัดเรียงขาตามที่แสดงในวงจรของรูปที่ 4 โดยรวมขาไฟเลี้ยงและกราวดดวย ทังนี ้ ้เพื่อใหแผงวงจร ZX-PSX2 นี้มีความยืดหยุนสูงในการนําไปตอใชงานกับไมโครคอนโทรลเลอร ไดหลากหลายตระกูล

รูปที่ 6 แผงวงจรเชื่อมตอจอยสติกไร ๊ สายสําหรับไมโครคอนโทรลเลอรทีมาพร ่ อมกับสาย JST3AA-5 จํานวน 4 เสน


8  Wireless Joystick Kit      

     ในตลาดเครื่องเลนเกมของไทยมีการนําเขาจอยสติกไร ๊ สายตามมาตรฐานของ PS2 มาจําหนาย 2 รุน ในรูปที่ 7 แสดงใหเห็นถึงจอยสติกไร ๊ สายทั้งสองรุน ความแตกตางมีดวยกัน 3 ประการคือ 1. ชือของปุ ่ มเลือกโหมดการทํางาน - ในรุน A จะใชชื่อ MODE - ในรุน B จะใชชื่อวา ANALOG โดยทั้งสองรุนใช  บิตแสดงสถานะขอมูลตําแหนงเดียวกัน ใหผลการทํางานเหมือนกัน 2. การแสดงสถานะทํางานของกลองรับสงคลื่นวิทยุหรือ Receiver - ในรุน A มี LED แสดงสถานะการเชื่อมตอ (connect) ดวย LED ตัวเดียว หากยังเชื่อม ตอไมได จะติดกะกริบ และติดคาง เมือเชื ่ ่อมตอได - ในรุน B มี LED 2 ตัว ตัวหนึ่งสีแดงใชแสดงสถานะไฟเลียง ้ สวน LED อีกตัวหนึ่ง ใชแสดงสถานะการเชื่อมตอ มีการทํางานเหมือนรุน A 3. การแสดงสถานะทํางานของจอยสติก๊ - ในรุน A แสดงสถานะการเชื่อมตอดวย LED ตําแหนง MODE LED - ในรุน B แสดงสถานะการเชื่อมตอดวย LED ทีอยู ่ ใกลๆ กับปุม ANALOG โดย LED ของทั้งสองรุนจะกะพริ  บ หากยังเชื่อมตอไมได และติดคางเมือเชื ่ ่อมตอได

รู ปที่ 7 จอยสติกไร ๊ สายทังสองรุ ้ นที่ทํางานเขากันไดกับจอยสติกตามมาตรฐานของ ๊ PS2 ที่มีจําหนายใน ประเทศไทย


Wireless Joystick Kit

     9

   (1) เริมต ่ นดวยการนํากลองรับสงคลื่นวิทยุทีมาพร ่ อมกับจอยสติกไร ๊ สายมาเสียบลงบนคอน เน็กเตอร PSX นําบอรดไมโครคอนโทรลเลอรทีต่ องการใชงานดวยมาเชื่อมตอ ในที่นี้ขอยกตัวอยาง ทังสิ ้ ้น 3 บอรดคือ Unicon ทีติ่ ดตังจอ ้ GLCD-XT, บอรด POP-XT และบอรด IPST-SE ดังรูปที่ 8 ถึง 10 (อาจเปนแผงวงจรไมโครคอนโทรลเลอรอืนๆ ่ ก็ได) (2) จายไฟใหกับแผงวงจรทั้งหมด แลวเปดสวิตชจายไฟทีตั่ วจอยสติกไร ๊ สาย จะเห็น LED ของกลองรับสงคลืนวิ ่ ทยุติดกะพริบ เพื่อรอการเชื่อมตอ รอสักครูอุ ปกรณทังสองตั ้ วจะเชื่อมตอกันได เองโดยอั ตโนมัติ สังเกตจาก LED สีเขียวของกลองรั บสงคลื่นวิ ทยุติดคาง และ LED ที่ตําแหนง MODE LED ของจอยสติกรุ ๊ น A ติดสวาง สวนในรุน B นั้น LED ทีตํ่ าแหนง ANALOG จะติดคาง เมือได ่ ตามนี้ แสดงวา อุปกรณทังสองตั ้ วเชื่อมตอ (connect) ไดแลว

รูปที่ 8 ภาพการเชื่อมตอกับบอรด Unicon เพื่อทดสอบการทํางานของจอยสติ๊กไรสาย


10  Wireless Joystick Kit      

รูปที่ 9 ภาพการเชื่อมตอกับบอรด POP-XT เพื่อทดสอบการทํางานของจอยสติ๊กไรสาย

รูปที่ 10 ภาพการเชื่อมตอกับบอรด IPST-SE เพื่อทดสอบการทํางานของจอยสติ๊กไรสาย


Wireless Joystick Kit

     11

     บอรดไมโครคอนโทรลเลอรทัง้ 3 บอรดที่นํามาเปนตัวอยางใชซอฟตแวร Arduino ในการ พั ฒนาโปรแกรมทังสิ ้ น้ เพียงแตตางรุนเท  านั้น 1. บอรด Unicon และ POP-XT ใชซอฟตแวร Arduino 1.0.5 หรือเวอรชันที่ใหมกวาถา หากมีทีดาวน ่ โหลดจาก www.uniconboard.com ซอฟตแวรและไลบรารีจะอยูในโฟลเดอร  Arduino 2. บอรด IPST-SE จากชุดกลองสมองกล IPST-MicroBOX ใชซอฟตแวร Arduino 1.0.5 หรือเวอรชันที่ใหมกวาถาหากมีทีดาวน ่ โหลดจาก www.ipst-microbox.com เมือติ ่ ดตั้งแลว ซอฟตแวร และไลบรารีจะอยูในโฟลเดอร  ArduinoIPST ในการติดตอกับจอยสติ๊กไรสายนี้ ตองใชไฟลไลบรารี PS2X_lib.h โดยดาวนโหลดไดจาก www.inex.co.th จะไดไฟล PS2X_lib.rar ทําการแตกไฟล จะไดโฟลเดอร PS2X_lib แลวทําการคัด ลอกไปยังโฟลเดอรทีเก็ ่ บไลบรารี ดังแสดงในรูปที่ 11

     คัดลอกโฟลเดอร PS2X_lib ไปยั งโฟลเดอร C:\Arduino\libraries หากติ ดตัง้ ซอฟตแวรไวทีไดรฟ ่ C สําหรับบอรด Unicon และ POP-XT

     คัดลอกโฟลเดอร PS2X_lib ไปยังโฟลเดอร C:\ArduinoIPST\libraries หากติดตั้ง ซอฟตแวรไวทีไดรฟ ่ C สําหรับบอรด IPST-SE 

 

 

 

 

  



 

รูปที่ 11 ขันตอนติ ้ ดตังไฟล ้ ไลบรารีสําหรับใชงานแผงวงจร ZX-PSX2 และจอยสติ๊กไรสายกับซอฟตแวร Arduino ที่ใชกับบอรดรุนตางๆ ที่ INEX ผลิตและจําหนาย


12  Wireless Joystick Kit      

 

กรณีใชงานกับบอรด Unicon (1) ตอบอรด Unicon กับแผงวงจร ZX-PSX2 ตามรูปที่ 8 (2) เปดซอฟตแวร Arduino 1.0.5 (เวอรชันที่ดาวนโหลดจาก www.uniconboard.com หรือ www.ipst-microbox.com ขึ้นอยูกั บบอรดที่ใชงาน) แลวเปดไฟล PS2Controller_Sample.ino (ดาวน โหลดไดจาก www.inex.co.th) หรือพิมพโคดตามที่แสดงในโปรแกรมที่ 1 /* * ทดสอบการทํางานเบืองต ้ นของบอรด Unicon กับจอยสติ๊กไรสายที่ทํางานเขากันไดกับจอยสติ๊ก PS2 * เมื่อกดปุมใดๆ ของจอยสติ๊ก ที่จอแสดงผลจะแสดงชื่อของปุมนั้นๆ */ #include <unicon.h> // เรียกใชงานไลบรารีสําหรับ Unicon #include <PS2X_lib.h> // เรียกใชงานไลบรารีสําหรับจอยสติ๊ก PS2 #define PS2_DAT 30 // ตอขา DATA กับขาพอรต 30 #define PS2_CMD 4 // ตอขา COMMAND กับขาพอรต 4 #define PS2_SEL 6 // ตอขา SELECT กับขาพอรต 6 #define PS2_CLK 12 // ตอขา CLOCK กับขาพอรต 12 PS2X ps2x; // ประกาศตัวแปรสําหรับจอยสติ๊ก PS2 void setup() { delay(1000); // หนวงเวลา 1 วินาทีเพื่อรอใหบอรดพรอมทํางาน glcdClear(); // เคลียรภาพทั้งหมดบนหนาจอแสดงผล glcdMode(1); // กําหนดใหหนาจอแสดงผลเปนแนวนอน setTextSize(2); // กําหนดขนาดตัวหนังสือ glcd(0, 0, "Connecting"); // แสดงขอความเพื่อแจงวา กําลังเชื่อมตอกับจอยสติ๊ก while(true) // วนการทํางานเพือรอการเชื ่ ่อมตอกับจอยสติ๊ก { // กําหนดขาเชื่อมตอกับจอยสติ๊ก โดยมีการเก็บคาที่สงกลับมาเปน Integer เพื่อรูได  วา เชื่อมตอไดหรือไม int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false); if(error == 0) // กรณีที่เชื่อมตอได Error = 0 { glcd(0, 0, "OK "); // แสดงขอความวาเชื่อมตอกับจอยสติ๊กเรียบรอยแลว delay(1000); // หนวงเวลา 1 วินาที glcdClear(); // เคลียรภาพทั้งหมดบนหนาจอแสดงผล break; // ออกจาก while(true) }

โปรแกรมที่ 1 ไฟล PS2Controller_Sample.ino สําหรับใชงานบอรด Unicon กับจอยสติกไร ๊ สาย (มีตอ)


Wireless Joystick Kit

}

delay(500);

     13

// หนวงเวลา 500 มิลลิวินาทีเพื่อรอการเชื่อมตอครั้งตอไป

} void loop() { ps2x.read_gamepad(false, false); if(ps2x.Button(PSB_CIRCLE)) glcd(1, 1, "Circle "); else if(ps2x.Button(PSB_CROSS)) glcd(1, 1, "Cross "); else if(ps2x.Button(PSB_SQUARE)) glcd(1, 1, "Square "); else if(ps2x.Button(PSB_TRIANGLE)) glcd(1, 1, "Triangle"); else if(ps2x.Button(PSB_L1)) glcd(1, 1, "L1 "); else if(ps2x.Button(PSB_L2)) glcd(1, 1, "L2 "); else if(ps2x.Button(PSB_L3)) glcd(1, 1, "L3 "); else if(ps2x.Button(PSB_R1)) glcd(1, 1, "R1 "); else if(ps2x.Button(PSB_R2)) glcd(1, 1, "R2 "); else if(ps2x.Button(PSB_R3)) glcd(1, 1, "R3 "); else if(ps2x.Button(PSB_START)) glcd(1, 1, "Start "); else if(ps2x.Button(PSB_SELECT)) glcd(1, 1, "Select "); else if(ps2x.Button(PSB_PAD_UP)) glcd(1, 1, "Up "); else if(ps2x.Button(PSB_PAD_DOWN)) glcd(1, 1, "Down "); else if(ps2x.Button(PSB_PAD_LEFT)) glcd(1, 1, "Left "); else if(ps2x.Button(PSB_PAD_RIGHT)) glcd(1, 1, "Right "); else glcd(1, 1, " "); delay(50); }

// อานขอมูลจากจอยสติ๊ก // ถาปุมวงกลมถูกกด // แสดงขอความวา Circle บนหนาจอ // ถาปุมกากบาทถูกกด // แสดงขอความวา Cross บนหนาจอ // ถาปุมสี่เหลียมถู ่ กกด // แสดงขอความวา Square บนหนาจอ // ถาปุมสามเหลียมถู ่ กกด // แสดงขอความวา Triangle บนหนาจอ // ถาปุม L1 ถูกกด // แสดงขอความวา L1 บนหนาจอ // ถาปุม L2 ถูกกด // แสดงขอความวา L2 บนหนาจอ // ถาปุม L3 ถูกกด // แสดงขอความวา L3 บนหนาจอ // ถาปุม R1 ถูกกด // แสดงขอความวา R1 บนหนาจอ // ถาปุม R2 ถูกกด // แสดงขอความวา R2 บนหนาจอ // ถาปุม R3 ถูกกด // แสดงขอความวา R3 บนหนาจอ // ถาปุม Start ถูกกด // แสดงขอความวา Start บนหนาจอ // ถาปุม Select ถูกกด // แสดงขอความวา Select บนหนาจอ // ถาปุม Up ถูกกด // แสดงขอความวา Up บนหนาจอ // ถาปุม Down ถูกกด // แสดงขอความวา Down บนหนาจอ // ถาปุม Left ถูกกด // แสดงขอความวา Left บนหนาจอ // ถาปุม Right ถูกกด // แสดงขอความวา Right บนหนาจอ // ถาไมมีปุมใดๆถูกกด // ลบขอความที่แสดงอยูออก // หนวงเวลา 50 มิลลิวินาที

โปรแกรมที่ 1 ไฟล PS2Controller_Sample.ino สําหรับใชงานบอรด Unicon กับจอยสติกไร ๊ สาย (จบ)


14  Wireless Joystick Kit      

(3) อัปโหลดไฟลไปยังแผงวงจร Unicon ทีติ่ ดตั้งจอแสดงผล GLCD-XT แลวรันโปรแกรม (4) ทีจอแสดงผลจะข ่ อความ Connecting จนกระทังตั ่ วจอยสติกไร ๊ สายจะเชื่อมตอกับ กลองรับสงคลืนวิ ่ ทยุสําเร็จ หนาจอจะเปลี่ยนการแสดงผลเปน OK (5) จากนั้นทดลองกดปุมใดๆ บนจอยสติกไร ๊ สาย ที่จอแสดงผลจะแสดงชื่อของปุมนั  ้นๆ เชน เมื่อกดปุมวงกลม  จอแสดงผลจะแสดงขอความ Circle เมื่อกดปุมสี  ่เหลี่ยม จอแสดงผลจะแสดงขอความ Square เมื่อกดปุม R1 จอแสดงผลจะแสดงขอความ R1 เมือได ่ ตามนี้ แสดงวา ทังตั ้ วจอยสติกไร ๊ สาย, กลองรับสงคลืนวิ ่ ทยุ และแผงวงจร ZX-PSX2 ทํางานไดถูกตอง พรอมสําหรับการนําไปประยุกตใชงานตอไป

กรณีใชงานกับบอรด POP-XT (1) ใหทําการเชื่อมตอบอรด POP-XT กับแผงวงจร ZX-PSX2 ตามรูปที่ 9 (2) แก ไขโปรแกรมที่ 1 ทีส่ วนหัวของโปรแกรมทีเกี ่ ่ยวกับตําแหนงของขาพอรตที่ใชในการ เชื่ อมตอ และเลือกไฟลไลบรารีใหถูกตองดังนี้ #include <popxt.h> #include <PS2X_lib.h> #define PS2_DAT 20 #define PS2_CMD 21 #define PS2_SEL 22 #define PS2_CLK 23

// เรียกใชงานไลบรารีสําหรับ POP-BOT XT // เรียกใชงานไลบรารีสําหรับจอยสติ๊ก PS2 // ตอขา DATA กับขาพอรต 20 // ตอขา COMMAND กับขาพอรต 21 // ตอขา SELECT กับขาพอรต 22 // ตอขา CLOCK กับขาพอรต 23

(3) แลวทําการทดสอบเหมือนกับกรณีใชงานกับบอรด Unicon

กรณีใชงานกับบอรด IPST-SE (1) ใหทําการเชื่อมตอบอรด IPST-SE กับแผงวงจร ZX-PSX2 ตามรูปที่ 10 (2) แก ไขโปรแกรมที่ 1 ทีส่ วนหัวของโปรแกรมทีเกี ่ ่ยวกับตําแหนงของขาพอรตที่ใชในการ เชื่ อมตอ และเลือกไฟลไลบรารีใหถูกตองดังนี้ #include <ipst.h> #include <PS2X_lib.h> #define PS2_DAT 16 #define PS2_CMD 17 #define PS2_SEL 18 #define PS2_CLK 19

// เรียกใชงานไลบรารีสําหรับ IPST-SE // เรียกใชงานไลบรารีสําหรับจอยสติ๊กไรสาย PS2 // ตอขา DATA กับขาพอรต 16 // ตอขา COMMAND กับขาพอรต 17 // ตอขา SELECT กับขาพอรต 18 // ตอขา CLOCK กับขาพอรต 19

(3) แลวทําการทดสอบเหมือนกับกรณีใชงานกับบอรด Unicon


Wireless Joystick Kit

     15

การใชงานกับบอรด Arduino compatible ผูใช  งานบอรด Arduino ทุกรุนสามารถใช  งานกับแผงวงจร ZX-PSX2 และจอยสติกไร ๊ สายได ในรูปที่ 12 แสดงภาพตัวอยางการเชือมต ่ อแผงวงจร ZX-PSX2 กับบอรด Arduino Uno สวนตัวอยาง โปรแกรมสําหรับติดตอแสดงในโปรแกรมที่ 2 หรือดาวนโหลดไดจาก www.inex.co.th ทําการอัปโหลดโปรแกรมที่ 2 แลวเปดหนาตาง Serial Monitor ของ Arduino จากนั้นทดลอง กดปุมใดๆ  บนจอยสติกไร ๊ สาย ทีหน ่ าตาง Serial Monitor จะแสดงชื่อของปุมนั  ้นๆ

รูปที่ 12 ภาพการเชื่อมตอกับบอรด Arduino Uno เพื่อทดสอบการทํางานของจอยสติ๊กไรสาย /* * โปรแกรมทดสอบการทํางานของบอรด Arduino Uno กับจอยสติ๊กไรสายที่ทํางานเขากันไดกับจอยสติ๊ก PS2 * ใชหนาตาง Serial monitor ในการแสดงผลชือปุ ่ มของจอยสติ๊กที่ถูกกด */ #include <PS2X_lib.h> // เรียกใชงานไลบรารีสําหรับจอยสติ๊ก PS2 #define PS2_DAT 8 // กําหนดขา Data เปนขา 30 #define PS2_CMD 9 // กําหนดขา Command เปนขา 4 #define PS2_SEL 10 // กําหนดขา Select เปนขา 6 #define PS2_CLK 11 // กําหนดขา Clock เปนขา 12 PS2X ps2x; // ประกาศตัวแปรสําหรับจอยสติ๊ก PS2 void setup() { delay(1000); // หนวงเวลา 1 วินาทีเพื่อรอใหบอรดพรอมทํางาน Serial.begin(9600); Serial.println("Connecting"); // แสดงขอความเพื่อแจงวา กําลังเชื่อมตอกับจอยสติ๊ก while(true) // วนรอการเชื่อมตอกับจอยสติ๊ก

โปรแกรมที่ 2 ไฟล PS2Controller_Sample.ino สําหรับใชงานบอรด Arduino Uno กับจอยสติกไร ๊ สาย (มีตอ)


16  Wireless Joystick Kit      

{ // กําหนดขาเชื่อมตอกับจอยสติ๊ก โดยมีการเก็บคาที่สงกลับมาเปน Integer เพื่อรูได  วาเชื่อมตอไดหรือไม int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false); if(error == 0) // กรณีที่เชื่อมตอได Error = 0 { Serial.println("OK"); // แสดงขอความวา เชื่อมตอกับจอยสติ๊กเรียบรอยแลว delay(1000); // หนวงเวลา 1 วินาที break; // ออกจาก while(true) } delay(500); // หนวงเวลา 500 มิลลิวินาทีเพื่อรอการเชื่อมตอครั้งตอไป } } void loop() { ps2x.read_gamepad(false, false); // อานขอมูลจาก PS2 Controller if(ps2x.Button(PSB_CIRCLE)) // ถาปุมวงกลมถูกกด แสดงขอความ Circle Serial.println("Circle"); else if(ps2x.Button(PSB_CROSS)) // ถาปุมกากบาทถูกกด แสดงขอความ Cross Serial.println("Cross"); else if(ps2x.Button(PSB_SQUARE)) // ถาปุมสี่เหลียมถู ่ กกด แสดงขอความ Square Serial.println("Square"); else if(ps2x.Button(PSB_TRIANGLE)) // ถาปุมสามเหลียมถู ่ กกด แสดงขอความ Triangle Serial.println("Triangle"); else if(ps2x.Button(PSB_L1)) // ถาปุม L1 ถูกกด แสดงขอความ L1 Serial.println("L1"); else if(ps2x.Button(PSB_L2)) // ถาปุม L2 ถูกกด แสดงขอความ L2 Serial.println("L2"); else if(ps2x.Button(PSB_L3)) // ถาปุม L3 ถูกกด แสดงขอความ L3 Serial.println("L3"); else if(ps2x.Button(PSB_R1)) // ถาปุม R1 ถูกกด แสดงขอความ R1 Serial.println("R1"); else if(ps2x.Button(PSB_R2)) // ถาปุม R2 ถูกกด แสดงขอความ R2 Serial.println("R2"); else if(ps2x.Button(PSB_R3)) // ถาปุม R3 ถูกกด แสดงขอความ R3 Serial.println("R3"); else if(ps2x.Button(PSB_START)) // ถาปุม Start ถูกกด แสดงขอความ Start Serial.println("Start"); else if(ps2x.Button(PSB_SELECT)) // ถาปุม Select ถูกกด แสดงขอความ Select Serial.println("Select"); else if(ps2x.Button(PSB_PAD_UP)) // ถาปุม Up ถูกกด แสดงขอความ Up Serial.println("Up"); else if(ps2x.Button(PSB_PAD_DOWN)) // ถาปุม Down ถูกกด แสดงขอความ Down Serial.println("Down"); else if(ps2x.Button(PSB_PAD_LEFT)) // ถาปุม Left ถูกกด แสดงขอความ Left Serial.println("Left"); else if(ps2x.Button(PSB_PAD_RIGHT)) // ถาปุม Right ถูกกด แสดงขอความ Right Serial.println("Right"); delay(50); // หนวงเวลา 50 มิลลิวินาที }

โปรแกรมที่ 2 ไฟล PS2Controller_Sample.ino สําหรับใชงานบอรด Arduino Uno กับจอยสติกไร ๊ สาย (จบ)


Wireless Joystick Kit

     17

      XT    XT มีขั้นตอนดังนี้ (1) เริมต ่ นดวยการนํากลองรับสงคลื่นวิทยุทีมาพร ่ อมกับจอยสติกไร ๊ สายมาเสียบลงบนคอน เน็กเตอร PSX บนแผงวงจร ZX-PSX2 (2) เชื่อมตอสายสัญญาณ 4 ระหวาง ZX-PSX2 กับ POP-XT  ตอขา DATA กับขาพอรต 20 ของ POP-XT  ตอขา COMMAND กับขาพอรต 21 ของ POP-XT  ตอขา SELECT กับขาพอรต

22 ของ POP-XT

 ตอขา CLOCK กับขาพอรต 23 ของ POP-XT

(3) จายไฟใหกับอุปกรณทังหมด ้ (4) อัปโหลดโปรแกรมที่ 3 ลงในบอรด POP-XT


18  Wireless Joystick Kit      

/* * Copyright (c) 2014 Innovative Experiment Co.,Ltd. * ตัวอยางการใชงานบอรด POP-BOT XT รวมกับจอยสิตกไรสายเต็มรูปแบบเพื่อควบคุมชุดแขนจับ SM-Gripper * สําหรับการทําภารกิจที่ตองหนีบจับวัตถุ * * 1. ควบคุมหุนยนต POP-BOT XT ดวยปุมทิศทางขึน้ (UP), ลง (DOWN), ซาย (LEFT) และขวา (RIGHT) * โดยปุมขึ้นใชเคลือนที ่ ่ไปขางหนา ปุมลงใชถอยหลัง สวนปุมซายและขวาใชหมุนตัวไปในทิศทางนันๆ ้ * 2. สําหรับการควบคุมแขนจับ ใชวิธีกดปุม R1 หรือ R2 คาง รวมกับการโยกปุมอะนาลอก * 2.1 ปุม R1 ใชควบคุมเซอรโวมอเตอรของสวนหนีบจับวัตถุ ควบคุมระยะการจับดวยการโยกปุมอะนาลอกขวาใน แนวแกน X หรือแนวนอน * (กดปุม R1 คาง แลวโยกปุมอะนาลอกขวาไปทางซายหรือขวา) * 2.2 ปุม R2 ใชควบคุมเซอรโวมอเตอรของสวนยกแขนจับ ควบคุมมุมของการยกการโยกปุมอะนาลอกขวาในตั้ง หรือแนวแกน Y * (กดปุม R2 คาง แลวโยกปุมอะนาลอกขวาขึนหรื ้ อลง) * 3. ตอเซอรโวมอเตอรของสวนหนีบจับวัตถุที่ชอง SV1 และตอเซอรโวมอเตอรของสวนยกแขนจับเขาที่ชอง SV2 */ #include <popxt.h> // เรียกใชงานไลบรารีสําหรับ POP-BOT XT #include <PS2X_lib.h> // เรียกใชงานไลบรารีสําหรับจอยสติ๊ก PS2 #define PS2_DAT 20 #define PS2_CMD 21 #define PS2_SEL 22 #define PS2_CLK 23

// ตอขา DATA กับขาพอรต 20 // ตอขา COMMAND กับขาพอรต 21 // ตอขา SELECT กับขาพอรต 22 // ตอขา CLOCK กับขาพอรต 23

PS2X ps2x;

// ประกาศตัวแปรสําหรับจอยสติ๊กไรสาย

int servoGrab = 90; int servoLift = 90;

// ตัวแปรสําหรับเก็บองศาของเซอรโวมอเตอรทีใช ่ หนีบวัตถุ // ตัวแปรสําหรับเก็บองศาของเซอรโวมอเตอรที่ชยกแขนจับ

boolean isR1 = false; boolean isR2 = false;

// สภานะของปุม R1 // สภานะของปุม R2

void setup() { delay(1000); glcdClear(); glcdMode(1);

// หนวงเวลา 1 วินาทีเพื่อรอใหบอรดพรอมทํางาน // เคลียรภาพทั้งหมดบนหนาจอแสดงผล // กําหนดใหหนาจอแสดงผลเปนแนวนอน

servo(1, servoGrab); servo(2, servoLift); delay(200);

// กําหนดองศาเริ่มตนใหกับเซอรโวมอเตอรที่ใชหนีบวัตถุ // กําหนดองศาเริมต ่ นใหกับเซอรโวมอเตอรที่ใชยกแขนจับ // หนวงเวลา 200 มิลลิวินาที

โปรแกรมที่ 3 ไฟล PS2Controller_RobotGripperAnalog.ino สําหรับใชงานหุนยนต  POP-BOT XT ที่มีการติดตังชุ ้ ดมือจับ SM-Gripper และใชจอยสติกไร ๊ สายในการควบคุม (มีตอ)


Wireless Joystick Kit

glcd(0, 0, "Connecting");

     19

// แสดงขอความเพือให ่ รูว ากําลังทําการเชื่อมตอกับจอยสติ๊กไรสาย

while(true) // วนการทํางานเพือรอการเชื ่ ่อมตอกับจอยสติ๊กไรสาย { // กําหนดขาทีจะเชื ่ อมต ่ อกับจอยสติกไร ๊ สาย (PS2) โดยมีการเก็บคาทีส่ งกลับมาเปน Integer เพือตรวจสอบการเชื ่ อมต ่ อ int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false); if(error == 0) { glcd(0, 0, "OK delay(1000); glcdClear(); break; } delay(500);

// กรณีที่เชื่อมตอได Error = 0 "); // แสดงขอความวาเชื่อมตอกับจอยสติ๊กไรสายเรียบรอยแลว // หนวงเวลา 1 วินาที // เคลียรภาพทั้งหมดบนหนาจอแสดงผล // ออกจาก while(true)

} } void loop() { ps2x.read_gamepad(false, false);

// หนวงเวลา 500 มิลลิวินาที รอการเชือมต ่ อครังต ้ อไปในกรณีเชือมต ่ อไมสําเร็จ

// อานขอมูลจากจอยสติ๊กไรสาย

if(ps2x.Button(PSB_R1)) isR1 = true; else isR1 = false;

// ถาปุม R1 ถูกกด // กําหนดสถานะของ isR1 เปน True // ถาปุม R1 ไมถูกกด // กําหนดสถานะของ isR1 เปน False

if(ps2x.Button(PSB_R2)) isR2 = true; else isR2 = false;

// ถาปุม R2 ถูกกด // กําหนดสถานะของ isR2 เปน True // ถาปุม R2 ไมถูกกด // กําหนดสถานะของ isR2 เปน False

if(ps2x.Button(PSB_TRIANGLE)) { servo(0, -1); servo(1, -1); }

// เมือปุ ่ มสามเหลียมถู ่ กกด // หยุดการทํางานของเซอรโวมอเตอรทั้งสองตัว

if(ps2x.Button(PSB_PAD_UP)) fd(90); else if(ps2x.Button(PSB_PAD_DOWN)) bk(90);

// ถาปุมขึ้นถูกกด // สังงานให ่ หุนยนต  เดินหนา // ถาปุมลงถูกกด // สังงานให ่ หุนยนต  ถอยหลัง

โปรแกรมที่ 3 ไฟล PS2Controller_RobotGripperAnalog.ino สําหรั บใชงานหุ นยนต POP-BOT XT ที่มีการติดตังชุ ้ ดมือจับ SM-Gripper และใชจอยสติกไร ๊ สายในการควบคุม (มีตอ)


20  Wireless Joystick Kit      

else if(ps2x.Button(PSB_PAD_LEFT)) sl(40); else if(ps2x.Button(PSB_PAD_RIGHT)) sr(40); else ao();

// ถาปุมซายถูกกด // สังงานให ่ หุนยนต  เลียวซ ้ าย // ถาปุมขวาถูกกด // สังงานให ่ หุนยนต  เลียวขวา ้ // ถาไมมีปุมทิศทางใดๆถูกกด // หุนยนต  หยุดเคลือนที ่ ่

if(isR1) { int a = ps2x.Analog(PSS_RX); int b = 0; glcd(3, 0, "%d ", a);

// เมือสถานะของ ่ isR1 เปน True (ถูกกด)

if(a > 140) b = map(a, 140, 255, 0, 3); else if(a < 124) b = map(a, 0, 140, -3, 0);

// เก็บคาแกน X จากปุมโยกอะนาลอกขวาไวในตัวแปร a // ประกาศตัวแปร b ใหมีคาเริมต ่ นเปน 0 // แสดงคาจากตัวแปร a ขึนบนหน ้ าจอ // ถา a มากกวา 140 // เฉลียค ่ าในชวง 140 ถึง 255 เปน 0 ถึง 3 เก็บไวในตัวแปร b // เฉลียค ่ าในชวง 140 ถึง 255 เปน -3 ถึง 0 เก็บไวในตัวแปร b

servoGrab += b; // เพิมองศาของเซอร ่ โวมอเตอรสําหรับหนีบวัตถุตามคาจากตัวแปร b servoGrab = (servoGrab > 140) ? 140 : servoGrab; // กําหนดใหคาองศาสูงสุดไดแค 140 servoGrab = (servoGrab < 40) ? 40 : servoGrab; // กําหนดใหคาองศาตํ่าสุดไดแค 40 servo(1, servoGrab); // กําหนดใหเซอรโวมอเตอรหมุนไปตามคาในตัวแปร servoGrab

} else if(isR2) { int a = ps2x.Analog(PSS_RY); int b = 0; glcd(3, 0, "%d ", a);

if(a > 140) b = map(a, 140, 255, 0, 3); else if(a < 124) b = map(a, 0, 140, -3, 0);

// เมือสถานะของ ่ isR2 เปน True (ถูกกด) // เก็บคาแกน Y จากคันโยก Analog ฝงขวาไว  ในตัวแปร a // ประกาศตัวแปร b ใหมีคาเริมต ่ นเปน 0 // แสดงคาจากตัวแปร a ขึนบนหน ้ าจอ // ถา a มากกวา 140 // เฉลียค ่ าในชวง 140 ถึง 255 เปน 0 ถึง 3 เก็บไวในตัวแปร b // เฉลียค ่ าในชวง 140 ถึง 255 เปน -3 ถึง 0 เก็บไวในตัวแปร b

servoLift += (b * -1);

// เพิ่มคาองศาของเซอรโวมอเตอรสําหรับหนีบวัตถุตามคาจาก // ตัวแปร b (คาจาก b จะเปนทิศทางตรงขามกัน) servoLift = (servoLift > 135) ? 135 : servoLift; // กําหนดใหคาองศาสูงสุดไดแค 135 servoLift = (servoLift < 35) ? 35 : servoLift; // กําหนดใหคาองศาตํ่าสุดไดแค 35 servo(2, servoLift); // กําหนดใหเซอรโวมอเตอรหมุนไปตามคาในตัวแปร servoLift

}

} delay(50);

// หนวงเวลา 50 มิลลิวินาที

โปรแกรมที่ 3 ไฟล PS2Controller_RobotGripperAnalog.ino สําหรั บใชงานหุ นยนต POP-BOT XT ที่มีการติดตังชุ ้ ดมือจับ SM-Gripper และใชจอยสติกไร ๊ สายในการควบคุม (จบ)


Wireless Joystick Kit

     21

(5) รอสักครู กลองรับสงคลืนวิ ่ ทยุจะติดตอกับจอยสติกไร ๊ สายอยางอัตโนมัติ สังเกตจาก LED สี เขียวของกลองรับสงคลืนวิ ่ ทยุติดคาง และ LED ทีตํ่ าแหนง MODE LED ของจอยสติกรุ ๊ น A ติดสวาง สวนในรุน B นัน้ LED ทีตํ่ าแหนง ANALOG จะติดคาง แสดงวา อุปกรณทังสองตั ้ วเชือมต ่ อไดแลว (6) ทําการควบคุมหุนยนตไดตามตองการ โดย  ศทางขึ้น (UP) เพื่อควบคุมใหหุนยนต  เคลื่อนทีไปข ่ างหนา  ใชปุมทิ  ใชปุมทิ  ศทางลง (DOWN) เพื่อควบคุมใหหุนยนต  เคลื่อนทีไปข ่ างหนา  ใชปุมทิ  ศทางซาย (LEFT) เพื่อควบคุมใหหุนยนต  เคลื่อนทีไปข ่ างหนา  ใชปุมทิ  ศทางขวา (RIGHT) เพื่อควบคุมใหหุนยนต  เคลื่อนทีไปข ่ างหนา

  กดปุม

R1 คาง แลวโยกปุมอะนาลอกขวาในแนวนอน  เพื่อปรับระยะการจัดวัตุถุ

 R2 คาง แลวโยกปุมอะนาลอกขวาในแนวตั  ง้ เพื่อปรับมุมของการยกแขนจับ  กดปุม

  มีขันตอนเหมื ้ อนกับการใชงานรวมกับหุนยนต  POP-BOT XT โดยใชซอฟตแวร Arduino 1.0.5 รุนที  ทํ่ าขึนสํ ้ าหรับแผงวงจร IPST-SE ดาวนโหลดไดจาก www.ipst-microbox.com สวนการเชื่อมตอ ระหวางแผงวงจร ZX-PSX2 กับแผงวงจร IPST-SE มีดังนี้  ตอขา DATA กับขาพอรต 16 ของแผงวงจร IPST-SE  ตอขา COMMAND กับขาพอรต 17 ของแผงวงจร IPST-SE  ตอขา SELECT กับขาพอรต 18 ของแผงวงจร IPST-SE  ตอขา CLOCK กับขาพอรต 19 ของแผงวงจร IPST-SE


22  Wireless Joystick Kit      

ในสวนของโปรแกรม ตองแกไขเรืองตํ ่ าแหนงของขาพอรตที่ใชในการเชื่อมตอ และเลือกไฟล ไลบรารีใหถูกตองที่สวนหัวของโปรแกรมดังนี้ #include <ipst.h> #include <PS2X_lib.h>

// เรียกใชงานไลบรารีสําหรับ IPST-SE // เรียกใชงานไลบรารีสําหรับจอยสติ๊กไรสาย PS2

#define PS2_DAT 16 #define PS2_CMD 17 #define PS2_SEL 18 #define PS2_CLK 19

// ตอขา DATA กับขาพอรต 16 // ตอขา COMMAND กับขาพอรต 17 // ตอขา SELECT กับขาพอรต 18 // ตอขา CLOCK กับขาพอรต 19


Wireless Joystick Kit

     23

      จอยสติกไร ๊ สายในชุดนี้ใชความถี่พาหในการสือสารกั ่ บกลองรับสงคลืนวิ ่ ทยุในยาน 2.4GHz มีการกําหนดความถีย่ อยที่แตกตางกัน เพื่ อใหใชงานไดพรอมกันหลายคู สําหรับจอยสติ๊กไรสายรุน นี้ รองรับไดสูงสุด 20 คู โดยมีหลักการทีสํ่ าคัญคือ ตองทําการจับคูอุปกรณทีละคู

ตัวอยาง หากมีการใชงาน 4 คูพร  อมกัน จะตองดําเนินการดังนี้ (1) ปดสวิตชจายไฟทีตัวจอยสติ๊กทุกตัว (2) จายไฟที่กลองรับสงคลืนวิ ่ ทยุของคูที่ 1 แลวเปดสวิตชจายไฟของจอยสติกไร ๊ สายตัวที่ 1

่ อติดคางทั้งทีตั่ วกลอง (3) รอจนกระทัง่ LED สีเขียวที่แสดงสถานะการเชือมต รับสงคลืนวิ ่ ทยุและตัวจอยสติกไร ๊ สาย ถึงตอนนีจอยสติ ้ กไร ๊ สายไดทําการเชือมต ่ อกับ กลองรับคลืนวิ ่ ทยุทีหุ่ นยนต  ไดเรียบรอยเปนคูที ่ 1 ใหเปดไฟเลี้ยงทิงไว ้ หากมีการปด ไฟเลียงจะทํ ้ าใหการเชื่อมตอสินสุ ้ ดลงทันที ตองนํามาจับคูใหม  (4) ดําเนินการตามขอ (2) และ (3) สําหรับจอยสติกไร ๊ สายและกลองรับสงคลืนวิ ่ ทยุคูที ่ 2 (5) ดําเนินการตามขอ (2) และ (3) สําหรับจอยสติกไร ๊ สายและกลองรับสงคลืนวิ ่ ทยุคูที ่ 3 (6) ดําเนินการตามขอ (2) และ (3) สําหรับจอยสติกไร ๊ สายและกลองรับสงคลืนวิ ่ ทยุคูที ่ 4 หากมีการตัดไฟเลี้ยงหรือการเชื่อมตอสินสุ ้ ด ควรปดสวิตชหรือปลดไฟเลี้ยงทังตั ้ วกลองรับสง คลืนวิ ่ ทยุและจอยสติ๊กไรสาย จากนั้นนํามาจับคูใหม


24  Wireless Joystick Kit      



เมือจอยสติ ่ กไร ๊ สายจับคูกับกลองรับสงคลืนวิ ่ ทยุไดแลว จอยสติกไร ๊ สายตัวอืน่ จะไมสามารถรบกวนหรือแยงชองความถีในการสื ่ อสารไปได ่ แตถาหากการสือสารหยุ ่ ดลงเนื่องจากมีการปดสวิตชหรือปลดไฟเลี้ยงจอยสติ๊กไรสาย หรือตัว จอยสติ๊กไรสายอยูนอกรั  ศมีทําการ แตทีตั่ วกลองรับสงคลืนวิ ่ ทยุยังมีไฟเลียงจ ้ ายอยู หากมีตัวจอยสติก๊ ไรสายอื่นที่วาง มีการเปดสวิตชทํางาน และอยูในรั  ศมีทําการ ตัวกลองรับสงคลืนวิ ่ ทยุจะจับคูจอยสติ๊ก ไรสายตัวที่ปรากฏเขามาใหมทันที ดังนั้ น ในกรณีทีการสื ่ อสารหยุ ่ ดลงไมวาจะเกิดจากกรณีใดๆ และในบริเวณนั้ นมีการใชงาน จอยสติ๊กไรสายในแบบเดียวกันนี้อยู เพื่อปองกันการแยงชองความถี่ไป ควรทําการปดไฟเลี้ยงกลอง รับสงคลืนวิ ่ ทยุกอน จากนั้น จึงเริมต ่ นกระบวนการในการจับคูใหมอีกครั้ง

  INNOVATIVE EXPERIMENT

Innovative Experiment Co., Ltd. 108 ซ. สุขุมวิท 101/2 ถ. สุขุมวิท แขวงบางนาน เขตบางนา กรุงเทพฯ 10260 โทรศัพท 0-274-7001-4 โทรสาร 0-2747-7005 email : tech@inex.co.th เว็บไซต : www.inex.co.th


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.