การใช้งาน ZX-PSX ร่วมกับบอร์ด POP-32i

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 เปอร์เซ็นเท่านั้น เมื่อต้องการเดินหน้าให้กดปุ่ม ขึ้น , ถอยหลังกดปุ่ม ลง , เลี้ยวซ้ายกดปุ่ม ซ้าย , เลี้ยวขวากดปุ่ม ขวา

                  

         

         

Facebook Comments Box