1.การใช้งาน PSX ร่วมกับบอร์ด POP-32i
ไลบรารีสามารถดาวน์โหลดได้ที่ https://inex.co.th/store/software/PsxLib.zip
1.1 ติดตั้งไลบรารี PsxLib สามารถดาวร์โหลดได้ที่ จากนั้นทำการเพิ่มด้วยไฟล์ zip ดังรูป
1.2 เลือกไฟล์ไลบรารี ที่ได้ดาวน์โหลดไว้ก่อนหน้านี้ คือ PsxLib.zip
1.3 รอสักครู่หากติดตั้งสำเร็จให้สังเกตที่หน้าต่างส่วน Output จะมีข้อความว่า Library installed
2.ต่อวงจร ZX-PSX ร่วมกับ POP-32i
การต่อวงจรโดยใช้สาย JST3AA-8 ระหว่าง ZX-PSX และ POP-32i ดังต่อไปนี้
3.ทดสอบอ่านค่าจากการกดปุ่มจอยสติ๊ก
3.1.เปิดตัวอย่างที่มีชื่อว่า PSX_Example
3.2 upload โปรแกรม PSX_Example ลงบอร์ด POP-32i
3.3 เปิด Serial Monitor ขั้นตอนแรก ก่อนอื่นให้ตรวจสอบสาย USB ได้ต่อช่อง HID (ช่อง USB type-C ข้างล่างของบอร์ด POP-32i) อยู่หรือไม่ จากนั้นเลือกหมายเลข COM Port ให้เรียบร้อยดังรูป
3.4 เปิด Serial Monitor ตั้งค่า baud rate เท่ากับ 9600 ดังรูป จากนั้นกดปุ่ม reset บอร์ด POP-32i ใหม่อีกครั้งรอสักครู่ หน้าต่างจะแสดงข้อความดังรูป
ทดสอบด้วยการกดปุ่มต่างๆ บนจอยสติ๊กโดยค่าประจำปุ่มจะแสดงที่ Key และปุ่มหมุนแอนาลอกซ้ายจะใช้ค่า AnLx และ AnLy ส่วนปุ่มหมุนแอนาลอกขวาจะใช้ AnRx และ AnRy เป็นตัวกำหนดดังรูป
ตัวอย่างการประยุกต์ควบคุมหุ่นยนต์
ตัวอย่างจะควบคุมหุ่นยนต์ 4 ล้อโดยการใช้ปุ่ม ขึ้น-ลง , ซ้าย-ขวา เป็นตัวควบคุมทิศทาง พร้อมกับใช้ปุ่มสามเหลี่ยมและปุ่มกากบาทเป็นตัวเพิ่มหรือลดความเร็ว
รูปภาพแสดงตำแหน่งการต่อมอเตอร์เข้ากับบอร์ด POP-32i
โปรแกรม PSX_POP32_4WD_Robot.in
#include <POP32.h> #include <PsxLib.h> Psx Psx; #define dataPin PA0 #define commandPin PA1 #define selectPin PA2 #define clockPin PA3 int speed = 50; unsigned int data = 0; void setup() { Psx.setupPins(dataPin, commandPin, selectPin, clockPin, 10); oled.textSize(5); oled.text(0, 0, " %d ", speed); oled.display(); } void loop() { data = Psx.read(); if (data & 4096) { speed = speed + 10; speed = constrain(speed, 10, 100); oled.text(0, 0, " %d ", speed); oled.display(); beep(); delay(250); Psx.read(); } if (data & 16384) { speed = speed - 10; speed = constrain(speed, 10, 100); oled.text(0, 0, " %d ", speed); oled.display(); beep(); delay(250); Psx.read(); } if (data & 16) { FD(speed); } else if (data & 64) { BK(speed); } else if (data & 32) { SR(speed); } else if (data & 128) { SL(speed); } else { AO(); } delay(10); }
อธิบายการทำงาน
เมื่อโปรแกรมเริ่มทำงาน ค่าความเร็วเริ่มต้นจะถูกกำหนดไว้ 50 เปอร์เซ็น และมีการแสดงออกหน้าจอ OLED ด้วย หากต้องการเพิ่มความเร็วให้กดปุ่ม สามเหลี่ยม หรือหากต้องการลดความเร็วให้กดปุ่ม กากบาท โดยการเพิ่มหรือลดความเร็ว สามารถทำได้ครั้งละ 10 เปอร์เซ็นและจะกำหนดให้อยู่ในช่วง 10 ถึง 100 เปอร์เซ็นเท่านั้น เมื่อต้องการเดินหน้าให้กดปุ่ม ขึ้น , ถอยหลังกดปุ่ม ลง , เลี้ยวซ้ายกดปุ่ม ซ้าย , เลี้ยวขวากดปุ่ม ขวา