Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright (c) 2014 Innovative Experiment Co.,Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
- /*
- * โปรแกรมทดสอบการทำงานของจอยสติ๊กไร้สายกับบอร์ด IPST-SE
- *
- * ใช้ทดสอบการติดต่อกับจอยสติ๊กไร้สายที่ทำงานเข้ากันได้กับจอยสติ๊ก PS2
- * โดยมีหน้าจอแสดงผลตรงกับปุ่มต่างๆ บนตัวจอยสติ๊ก หากไม่มีการกดปุ่ม สัญลักษณ์ทั้งหมดจะเป็นสีเทา
- * เมื่อกดปุ่มใดๆ บนจอยสติ๊ก สัญลักษณ์ของปุ่มๆ นั้นๆ บนจอแสดงผลจะแสดงสีออกมา (สีแตกต่างกันไปในแต่ละปุ่ม)
- * หากโยกปุ่มอะนาลอก จะมีการแสดงพิกัดของปุ่มอะนาลอกด้วยจุดสีแดง
- */
- #include <ipst.h> // เรียกใช้งานไลบรารีสำหรับ IPST-SE
- #include <PS2X_lib.h> // เรียกใช้งานไลบรารีสำหรับ PS2 Controller
- #define PS2_DAT 16 // ต่อขา DATA เข้ากับขาพอร์ต 16
- #define PS2_CMD 17 // ต่อขา COMMAND เข้ากับขาพอร์ต 17
- #define PS2_SEL 18 // ต่อขา SELECT เข้ากับขาพอร์ต 18
- #define PS2_CLK 19 // ต่อขา CLOCK เข้ากับขาพอร์ต 19
- #define GLCD_DKGRAY colorRGB(10, 20, 10) // กำหนดค่าสีเทาเข้ม
- #define GLCD_GRAY colorRGB(27, 54, 27) // กำหนดค่าสีเทา
- #define GLCD_DKGREEN colorRGB(0, 50, 0) // กำหนดค่าสีเขียวเข้ม
- #define GLCD_ORANGE colorRGB(31, 40, 0) // กำหนดค่าสีส้ม
- PS2X ps2x; // ประกาศตัวแปรสำหรับจอยสติ๊ก
- int oldLX = 0; // เก็บค่าตำแหน่งพิกัด X ก่อนหน้าของปุ่มอะนาลอกซ้าย
- int oldLY = 0; // เก็บค่าตำแหน่งพิกัด Y ก่อนหน้าของปุ่มอะนาลอกซ้าย
- int oldRX = 0; // เก็บค่าตำแหน่งพิกัด X ก่อนหน้าของปุ่มอะนาลอกขวา
- int oldRY = 0; // เก็บค่าตำแหน่งพิกัด Y ก่อนหน้าของปุ่มอะนาลอกขวา
- void setup()
- {
- delay(1000); // หน่วงเวลา 1 วินาทีเพื่อรอให้บอร์ดพร้อมทำงาน
- glcdClear(); // เคลียร์ภาพทั้งหมดบนหน้าจอแสดงผล
- glcdMode(1); // กำหนดให้หน้าจอแสดงผลเป็นแนวนอน
- glcdFillScreen(GLCD_WHITE); // กำหนดพื้นหลังของหน้าจอเป็นสีขาว
- setTextBackgroundColor(GLCD_WHITE); // กำหนดพื้นหลังของตัวหนังสือเป็นสีขาว
- setTextColor(GLCD_BLACK); // กำหนดตัวหนังสือเป็นสีดำ
- glcd(0, 0, "Connecting"); // แสดงข้อความเพื่อให้รู้ว่ากำลังทำการเชื่อมต่อกับจอยสติ๊ก
- initController(); // เรียกฟังก์ชั่นเชื่อมต่อกับจอยสติ๊ก
- }
- void loop()
- {
- ps2x.read_gamepad(false, false); // อ่านข้อมูลจากจอยสติ๊ก PS2
- checkButtonCircle(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มวงกลม
- checkButtonCross(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มกากบาท
- checkButtonSquare(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มสี่เหลี่ยม
- checkButtonTriangle(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มสามเหลี่ยม
- checkButtonUp(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มขึ้น
- checkButtonDown(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มลง
- checkButtonLeft(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มซ้าย
- checkButtonRight(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่มขวา
- checkButtonL1(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม L1
- checkButtonL2(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม L2
- checkButtonL3(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม L3
- checkButtonR1(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม R1
- checkButtonR2(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม R2
- checkButtonR3(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม R3
- checkButtonSelect(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม SELECT
- checkButtonStart(); // เรียกฟังก์ชั่นตรวจสอบการกดปุ่ม START
- checkAnalogL(); // เรียกฟังก์ชั่นตรวจสอบตำแหน่ง XY ของปุ่มอะนาลอกซ้าย
- checkAnalogR(); // เรียกฟังก์ชั่นตรวจสอบตำแหน่ง XY ของปุ่มอะนาลอกขวา
- delay(50); // หน่วงเวลา 50 มิลลิวินาที
- }
- void initController() { // ฟังก์ชั่นสำหรับเชื่อมต่อกับจอยสติ๊ก PS2
- while(true) // วนการทำงานเพื่อรอการเชื่อมต่อกับจอยสติ๊ก
- {
- // กำหนดขาเชื่อมต่กับจอยสติ๊ก โดยมีการเก็บค่าที่ส่งกลับมาเป็น Integer เพื่อรู้ว่าเชื่อมต่อได้หรือไม่
- int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false);
- if(error == 0) // กรณีที่เชื่อมต่อได้ (Error = 0)
- {
- initGlcd(); // เตรียมภาพบนหน้าจอ
- break; // ออกจาก while(true)
- }
- delay(500); // หน่วงเวลา 500 มิลลิวินาทีเพื่อรอการเชื่อมต่อครั้งต่อไปในกรณีที่เชื่อมต่อไม่สำเร็จ
- }
- }
- void initGlcd() // ฟังก์ชั่นเตรียมภาพบนหน้าจอเมื่อเริ่มต้นทำงาน
- {
- glcdClear(); // เคลียร์ภาพบนหน้าจอ
- setTextColor(GLCD_RED); // กำหนดตัวอักษรเป็นสีแดง
- glcd(0, 7, "PlayStation 2"); // แสดงคำว่า PlayStation 2 ที่แถวแรกสุดตรงกลาง
- setTextColor(GLCD_BLUE); // กำหนดตัวอักษรเป็นสีแดง
- glcd(1, 9, "Controller"); // แสดงคำว่า Controller ที่แถวที่สองตรงกลาง
- setTextColor(GLCD_BLACK); // กำหนดตัวอักษรเป็นสีแดง
- glcd(2, 13, "OK"); // แสดงคำว่า OK ที่แถวที่สามตรงกลาง
- drawButtonUpOff(); // เรียกฟังก์ชั่นวาดปุ่มขึ้นที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonDownOff(); // เรียกฟังก์ชั่นวาดปุ่มลงที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonLeftOff(); // เรียกฟังก์ชั่นวาดปุ่มซ้ายที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonRightOff(); // เรียกฟังก์ชั่นวาดปุ่มขวาที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonCircleOff(); // เรียกฟังก์ชั่นวาดปุ่มวงกลมที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonSquareOff(); // เรียกฟังก์ชั่นวาดปุ่มสี่เหลี่ยมที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonCrossOff(); // เรียกฟังก์ชั่นวาดปุ่มกากบาทที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonTriangleOff(); // เรียกฟังก์ชั่นวาดปุ่มสามเหลี่ยมที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonR1Off(); // เรียกฟังก์ชั่นวาดปุ่ม R1 ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonR2Off(); // เรียกฟังก์ชั่นวาดปุ่ม R2 ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonR3Off(); // เรียกฟังก์ชั่นวาดปุ่ม R3 ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonL1Off(); // เรียกฟังก์ชั่นวาดปุ่ม L1 ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonL2Off(); // เรียกฟังก์ชั่นวาดปุ่ม L2 ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonL3Off(); // เรียกฟังก์ชันวาดปุ่ม L3 ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonSelectOff(); // เรียกฟังก์ชั่นวาดปุ่ม SELECT ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawButtonStartOff(); // เรียกฟังก์ชั่นวาดปุ่ม START ที่ยังไม่ถูกกด (เป็นภาพสีเทา)
- drawAnalogBorder(); // เรียกฟังก์ชั่นวาดกรอบสี่เหลี่ยมสำหรับแสดงพิกัด XY ของปุ่มอะนาลอก
- }
- void checkButtonUp() // ฟังก์ชั่นตรวจสอบการกดปุ่มขึ้น (UP)
- {
- if(ps2x.ButtonPressed(PSB_PAD_UP)) // ถ้าปุ่มขึ้นถูกกด
- {
- drawButtonUpOn(); // เรียกฟังก์ชั่นวาดปุ่มขึ้นเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_PAD_UP)) // ถ้าปุ่มขึ้นยังไม่ถูกกด
- {
- drawButtonUpOff(); // เรียกฟังก์ชั่นวาดปุ่มขึ้นเมื่อไม่ถูกกด
- }
- }
- void drawButtonUpOn() // ฟังก์ชั่นวาดภาพปุ่มขึ้นเมื่อถูกกด
- {
- glcdFillRect(25, 29, 10, 12, GLCD_DKGRAY);
- glcdPixel(26, 40, GLCD_WHITE);
- glcdPixel(27, 40, GLCD_WHITE);
- glcdPixel(26, 39, GLCD_WHITE);
- glcdPixel(35, 40, GLCD_WHITE);
- glcdPixel(34, 40, GLCD_WHITE);
- glcdPixel(35, 39, GLCD_WHITE);
- }
- void drawButtonUpOff() // ฟังก์ชั่นวาดภาพปุ่มขึ้นที่ไม่ถูกกด
- {
- glcdFillRect(25, 29, 10, 12, GLCD_GRAY);
- glcdPixel(26, 40, GLCD_WHITE);
- glcdPixel(27, 40, GLCD_WHITE);
- glcdPixel(26, 39, GLCD_WHITE);
- glcdPixel(35, 40, GLCD_WHITE);
- glcdPixel(34, 40, GLCD_WHITE);
- glcdPixel(35, 39, GLCD_WHITE);
- }
- void checkButtonDown() // ฟังก์ชั่นตรวจสอบการกดปุ่มลง
- {
- if(ps2x.ButtonPressed(PSB_PAD_DOWN)) // ถ้าปุ่มลงถูกกด
- {
- drawButtonDownOn(); // เรียกฟังก์ชั่นวาดปุ่มลงเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_PAD_DOWN)) // ถ้าปุ่มลงไม่ถูกกด
- {
- drawButtonDownOff(); // เรียกฟังก์ชั่นวาดปุ่มลงเมื่อไม่ถูกกด
- }
- }
- void drawButtonDownOn() // ฟังก์ชั่นวาดปุ่มลงเมื่อถูกกด
- {
- glcdFillRect(25, 60, 10, 12, GLCD_DKGRAY);
- glcdPixel(26, 60, GLCD_WHITE);
- glcdPixel(27, 60, GLCD_WHITE);
- glcdPixel(26, 61, GLCD_WHITE);
- glcdPixel(35, 60, GLCD_WHITE);
- glcdPixel(34, 60, GLCD_WHITE);
- glcdPixel(35, 61, GLCD_WHITE);
- }
- void drawButtonDownOff() // ฟังก์ชั่นวาดปุ่มลงเมื่อไม่ถูกกด
- {
- glcdFillRect(25, 60, 10, 12, GLCD_GRAY);
- glcdPixel(26, 60, GLCD_WHITE);
- glcdPixel(27, 60, GLCD_WHITE);
- glcdPixel(26, 61, GLCD_WHITE);
- glcdPixel(35, 60, GLCD_WHITE);
- glcdPixel(34, 60, GLCD_WHITE);
- glcdPixel(35, 61, GLCD_WHITE);
- }
- void checkButtonLeft() // ฟังก์ชั่นตรวจสอบการกดปุ่มซ้าย
- {
- if(ps2x.ButtonPressed(PSB_PAD_LEFT)) // ถ้าปุ่มซ้ายถูกกด
- {
- drawButtonLeftOn(); // เรียกฟังก์ชั่นวาดปุ่มซ้ายเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_PAD_LEFT)) // ถ้าปุ่มซ้ายไม่ถูกกด
- {
- drawButtonLeftOff(); // เรียกฟังก์ชั่นวาดปุ่มซ้ายเมื่อไม่ถูกกด
- }
- }
- void drawButtonLeftOn() // ฟังก์ชั่นวาดปุ่มซ้ายเมื่อถูกกด
- {
- glcdFillRect(10, 45, 12, 10, GLCD_DKGRAY);
- glcdPixel(22, 45, GLCD_WHITE);
- glcdPixel(21, 45, GLCD_WHITE);
- glcdPixel(22, 46, GLCD_WHITE);
- glcdPixel(22, 54, GLCD_WHITE);
- glcdPixel(21, 54, GLCD_WHITE);
- glcdPixel(22, 53, GLCD_WHITE);
- }
- void drawButtonLeftOff() // ฟังก์ชั่นวาดปุ่มซ้ายเมื่อไม่ถูกกด
- {
- glcdFillRect(10, 45, 12, 10, GLCD_GRAY);
- glcdPixel(22, 45, GLCD_WHITE);
- glcdPixel(21, 45, GLCD_WHITE);
- glcdPixel(22, 46, GLCD_WHITE);
- glcdPixel(22, 54, GLCD_WHITE);
- glcdPixel(21, 54, GLCD_WHITE);
- glcdPixel(22, 53, GLCD_WHITE);
- }
- void checkButtonRight() // ฟังก์ชั่นตรวจสอบการกดปุ่มขวา
- {
- if(ps2x.ButtonPressed(PSB_PAD_RIGHT)) // ถ้าปุ่มขวาถูกกด
- {
- drawButtonRightOn(); // เรียกฟังก์ชั่นวาดปุ่มขวาเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_PAD_RIGHT)) // ถ้าปุ่มขวาไม่ถูกกด
- {
- drawButtonRightOff(); // เรียกฟังก์ชั่นวาดปุ่มขวาเมื่อไม่ถูกกด
- }
- }
- void drawButtonRightOn() // ฟังก์ชั่นวาดปุ่มขวาเมื่อถูกกด
- {
- glcdFillRect(38, 45, 12, 10, GLCD_DKGRAY);
- glcdPixel(39, 45, GLCD_WHITE);
- glcdPixel(40, 45, GLCD_WHITE);
- glcdPixel(39, 46, GLCD_WHITE);
- glcdPixel(39, 54, GLCD_WHITE);
- glcdPixel(40, 54, GLCD_WHITE);
- glcdPixel(39, 53, GLCD_WHITE);
- }
- void drawButtonRightOff() // ฟังก์ชั่นวาดปุ่มขวาเมื่อไม่ถูกกด
- {
- glcdFillRect(38, 45, 12, 10, GLCD_GRAY);
- glcdPixel(39, 45, GLCD_WHITE);
- glcdPixel(40, 45, GLCD_WHITE);
- glcdPixel(39, 46, GLCD_WHITE);
- glcdPixel(39, 54, GLCD_WHITE);
- glcdPixel(40, 54, GLCD_WHITE);
- glcdPixel(39, 53, GLCD_WHITE);
- }
- void checkButtonR1() // ฟังก์ชั่นตรวจสอบการกดปุ่ม R1
- {
- if(ps2x.ButtonPressed(PSB_R1)) // ถ้าปุ่ม R1 ถูกกด
- {
- drawButtonR1On(); // เรียกฟังก์ชั่นวาดปุ่ม R1 เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_R1)) // ถ้าปุ่ม R1 ไม่ถูกกด
- {
- drawButtonR1Off(); // เรียกฟังก์ชั่นวาดปุ่ม R1 เมื่อไม่ถูกกด
- }
- }
- void drawButtonR1On() // ฟังก์ชั่นวาดปุ่ม R1 เมื่อถูกกด
- {
- setTextBackgroundColor(GLCD_DKGRAY);
- glcdFillRect(149, 10, 10, 8, GLCD_DKGRAY);
- setTextColor(GLCD_WHITE);
- glcd(1, 21, " R1");
- }
- void drawButtonR1Off() // ฟังก์ชั่นวาดปุ่ม R1 เมื่อไม่ถูกกด
- {
- setTextBackgroundColor(GLCD_GRAY);
- setTextColor(GLCD_WHITE);
- glcdFillRect(149, 10, 10, 8, GLCD_GRAY);
- glcd(1, 21, " R1");
- }
- void checkButtonR2() // ฟังก์ชั่นตรวจสอบการกดปุ่ม R2
- {
- if(ps2x.ButtonPressed(PSB_R2)) // ถ้าปุ่ม R2 ถูกกด
- {
- drawButtonR2On(); // เรียกฟังก์ชั่นวาดปุ่ม R2 เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_R2)) // ถ้าปุ่ม R2 ไม่ถูกกด
- {
- drawButtonR2Off(); // เรียกฟังก์ชั่นวาดปุ่ม R2 เมื่อไม่ถูกกด
- }
- }
- void drawButtonR2On() // ฟังก์ชั่นวาดปุ่ม R2 เมื่อถูกกด
- {
- setTextBackgroundColor(GLCD_DKGRAY);
- setTextColor(GLCD_WHITE);
- glcdFillRect(149, 0, 10, 8, GLCD_DKGRAY);
- glcd(0, 21, " R2");
- }
- void drawButtonR2Off() // ฟังก์ชั่นวาดปุ่ม R2 เมื่อไม่ถูกกด
- {
- setTextBackgroundColor(GLCD_GRAY);
- setTextColor(GLCD_WHITE);
- glcdFillRect(149, 0, 10, 8, GLCD_GRAY);
- glcd(0, 21, " R2");
- }
- void checkButtonR3() // ฟังก์ชั่นตรวจสอบการกดปุ่ม R3
- {
- if(ps2x.ButtonPressed(PSB_R3)) // ถ้าปุ่ม R3 ถูกกด
- {
- drawButtonR3On(); // เรียกฟังก์ชั่นวาดปุ่ม R3 เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_R3)) // ถ้าปุ่ม R3 ไม่ถูกกด
- {
- drawButtonR3Off(); // เรียกฟังก์ชั่นวาดปุ่ม R3 เมื่อไม่ถูกกด
- }
- }
- void drawButtonR3On() // ฟังก์ชั่นวาดปุ่ม R3 เมื่อถูกกด
- {
- setTextBackgroundColor(GLCD_DKGRAY);
- setTextColor(GLCD_WHITE);
- glcdFillRect(149, 120, 10, 8, GLCD_DKGRAY);
- glcd(12, 21, " R3");
- }
- void drawButtonR3Off() // ฟังก์ชั่นวาดปุ่ม R3 เมื่อไม่ถูกกด
- {
- setTextBackgroundColor(GLCD_GRAY);
- setTextColor(GLCD_WHITE);
- glcdFillRect(149, 120, 10, 8, GLCD_GRAY);
- glcd(12, 21, " R3");
- }
- void checkButtonL1() // ฟังก์ชั่นตรวจสอบการกดปุ่ม L1
- {
- if(ps2x.ButtonPressed(PSB_L1)) // ถ้าปุ่ม L1 ถูกกด
- {
- drawButtonL1On(); // เรียกฟังก์ชั่นวาดปุ่ม L1 เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_L1)) // ถ้าปุ่ม L1 ไม่ถูกกด
- {
- drawButtonL1Off(); // เรียกฟังก์ชั่นวาดปุ่ม L1 เมื่อไม่ถูกกด
- }
- }
- void drawButtonL1On() // ฟังก์ชั่นวาดปุ่ม L1 เมื่อถูกกด
- {
- setTextBackgroundColor(GLCD_DKGRAY);
- setTextColor(GLCD_WHITE);
- glcd(1, 0, " L1 ");
- }
- void drawButtonL1Off() // ฟังก์ชั่นวาดปุ่ม L1 เมื่อไม่ถูกกด
- {
- setTextBackgroundColor(GLCD_GRAY);
- setTextColor(GLCD_WHITE);
- glcd(1, 0, " L1 ");
- }
- void checkButtonL2() // ฟังก์ชั่นตรวจสอบการกดปุ่ม L2
- {
- if(ps2x.ButtonPressed(PSB_L2)) // ถ้าปุ่ม L2 ถูกกด
- {
- drawButtonL2On(); // เรียกฟังก์ชั่นวาดปุ่ม L2 เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_L2)) // ถ้าปุ่ม L2 ไม่ถูกกด
- {
- drawButtonL2Off(); // เรียกฟังก์ชั่นวาดปุ่ม L2 เมื่อไม่ถูกกด
- }
- }
- void drawButtonL2On() // ฟังก์ชั่นวาดปุ่ม L2 เมื่อถูกกด
- {
- setTextBackgroundColor(GLCD_DKGRAY);
- setTextColor(GLCD_WHITE);
- glcd(0, 0, " L2 ");
- }
- void drawButtonL2Off() // ฟังก์ชั่นวาดปุ่ม L2 เมื่อไม่ถูกกด
- {
- setTextBackgroundColor(GLCD_GRAY);
- setTextColor(GLCD_WHITE);
- glcd(0, 0, " L2 ");
- }
- void checkButtonL3() // ฟังก์ชั่นตรวจสอบการกดปุ่ม L3
- {
- if(ps2x.ButtonPressed(PSB_L3)) // ถ้าปุ่ม L3 ถูกกด
- {
- drawButtonL3On(); // เรียกฟังก์ชั่นวาดปุ่ม L3 เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_L3)) // ถ้าปุ่ม L3 ไม่ถูกกด
- {
- drawButtonL3Off(); // เรียกฟังก์ชั่นวาดปุ่ม L3 เมื่อไม่ถูกกด
- }
- }
- void drawButtonL3On() // ฟังก์ชั่นวาดปุ่ม L3 เมื่อถูกกด
- {
- setTextBackgroundColor(GLCD_DKGRAY);
- setTextColor(GLCD_WHITE);
- glcd(12, 0, " L3 ");
- }
- void drawButtonL3Off() // ฟังก์ชั่นวาดปุ่ม L3 เมื่อไม่ถูกกด
- {
- setTextBackgroundColor(GLCD_GRAY);
- setTextColor(GLCD_WHITE);
- glcd(12, 0, " L3 ");
- }
- void checkButtonCircle() // ฟังก์ชั่นตรวจสอบการกดปุ่มวงกลม
- {
- if(ps2x.ButtonPressed(PSB_CIRCLE)) // ถ้าปุ่มวงกลมถูกกด
- {
- drawButtonCircleOn(); // เรียกฟังก์ชั่นวาดปุ่มวงกลมเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_CIRCLE)) // ถ้าปุ่มวงกลมไม่ถูกกด
- {
- drawButtonCircleOff(); // เรียกฟังก์ชั่นวาดปุ่มวงกลมเมื่อไม่ถูกกด
- }
- }
- void drawButtonCircleOn() // ฟังก์ชั่นวาดปุ่มวงกลมเมื่อถูกกด
- {
- glcdCircle(140, 48, 6, GLCD_RED);
- }
- void drawButtonCircleOff() // ฟังก์ชั่นวาดปุ่มวงกลมเมื่อไม่ถูกกด
- {
- glcdCircle(140, 48, 6, GLCD_GRAY);
- }
- void checkButtonCross() // ฟังก์ชั่นตรวจสอบการกดปุ่มกากบาท
- {
- if(ps2x.ButtonPressed(PSB_CROSS)) // ถ้าปุ่มกากบาทถูกกด
- {
- drawButtonCrossOn(); // เรียกฟังก์ชั่นวาดปุ่มกากบาทเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_CROSS)) // ถ้าปุ่มกากบาทไม่ถูกกด
- {
- drawButtonCrossOff(); // เรียกฟังก์ชั่นวาดปุ่มกากบาทเมื่อไม่ถูกกด
- }
- }
- void drawButtonCrossOn() // ฟังก์ชั่นวาดปุ่มกากบาทเมื่อถูกกด
- {
- glcdLine(118, 58, 130, 70, GLCD_BLUE);
- glcdLine(130, 58, 118, 70, GLCD_BLUE);
- }
- void drawButtonCrossOff() // ฟังก์ชั่นวาดปุ่มกากบาทเมื่อไม่ถูกกด
- {
- glcdLine(118, 58, 130, 70, GLCD_GRAY);
- glcdLine(130, 58, 118, 70, GLCD_GRAY);
- }
- void checkButtonSquare() // ฟังก์ชั่นตรวจสอบการกดปุ่มสี่เหลี่ยม
- {
- if(ps2x.ButtonPressed(PSB_SQUARE)) // ถ้าปุ่มสี่เหลี่ยมถูกกด
- {
- drawButtonSquareOn(); // เรียกฟังก์ชั่นวาดปุ่มสี่เหลี่ยมเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_SQUARE)) // ถ้าปุ่มสี่เหลี่ยมไม่ถูกกด
- {
- drawButtonSquareOff(); // เรียกฟังก์ชั่นวาดปุ่มสี่เหลี่ยมเมื่อไม่ถูกกด
- }
- }
- void drawButtonSquareOn() // ฟังก์ชั่นวาดปุ่มสี่เหลี่ยมเมื่อถูกกด
- {
- glcdRect(102, 43, 12, 12, GLCD_MAGENTA);
- }
- void drawButtonSquareOff() // ฟังก์ชั่นวาดปุ่มสี่เหลี่ยมเมื่อไม่ถูกกด
- {
- glcdRect(102, 43, 12, 12, GLCD_GRAY);
- }
- void checkButtonTriangle() // ฟังก์ชั่นตรวจสอบการกดปุ่มสามเหลี่ยม
- {
- if(ps2x.ButtonPressed(PSB_TRIANGLE)) // ถ้าปุ่มสามเหลี่ยมถูกกด
- {
- drawButtonTriangleOn(); // เรียกฟังก์ชั่นวาดปุ่มสามเหลี่ยมเมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_TRIANGLE)) // ถ้าปุ่มสามเหลี่ยมไม่ถูกกด
- {
- drawButtonTriangleOff(); // เรียกฟังก์ชั่นวาดปุ่มสามเหลี่ยมเมื่อไม่ถูกกด
- }
- }
- void drawButtonTriangleOn() // ฟังก์ชั่นวาดปุ่มสามเหลี่ยมเมื่อถูกกด
- {
- glcdLine(117, 40, 131, 40, GLCD_DKGREEN);
- glcdLine(117, 40, 124, 28, GLCD_DKGREEN);
- glcdLine(131, 40, 124, 28, GLCD_DKGREEN);
- }
- void drawButtonTriangleOff() // ฟังก์ชั่นวาดปุ่มสามเหลี่ยมเมื่อไม่ถูกกด
- {
- glcdLine(117, 40, 131, 40, GLCD_GRAY);
- glcdLine(117, 40, 124, 28, GLCD_GRAY);
- glcdLine(131, 40, 124, 28, GLCD_GRAY);
- }
- void checkButtonSelect() // ฟังก์ชั่นตรวจสอบการกดปุ่ม SELECT
- {
- if(ps2x.ButtonPressed(PSB_SELECT)) // ถ้าปุ่ม SELECT ถูกกด
- {
- drawButtonSelectOn(); // เรียกฟังก์ชั่นวาดปุ่ม SELECT เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_SELECT)) // ถ้าปุ่ม SELECT ไม่ถูกกด
- {
- drawButtonSelectOff(); // เรียกฟังก์ชั่นวาดปุ่ม SELECT เมื่อไม่ถูกกด
- }
- }
- void drawButtonSelectOn() // ฟังก์ชั่นวาดปุ่ม SELECT เมื่อถูกกด
- {
- glcdFillRect(62, 65, 12, 9, GLCD_ORANGE);
- }
- void drawButtonSelectOff() // ฟังก์ชั่นวาดปุ่ม SELECT เมื่อไม่ถูกกด
- {
- glcdFillRect(62, 65, 12, 9, GLCD_GRAY);
- }
- void checkButtonStart() // ฟังก์ชั่นตรวจสอบการกดปุ่ม START
- {
- if(ps2x.ButtonPressed(PSB_START)) // ถ้าปุ่ม START ถูกกด
- {
- drawButtonStartOn(); // เรียกฟังก์ชั่นวาดปุ่ม START เมื่อถูกกด
- }
- else if(ps2x.ButtonReleased(PSB_START)) // ถ้าปุ่ม START ไม่ถูกกด
- {
- drawButtonStartOff(); // เรียกฟังก์ชั่นวาดปุ่ม START เมื่อไม่ถูกกด
- }
- }
- void drawButtonStartOn() // ฟังก์ชั่นวาดปุ่ม START เมื่อถูกกด
- {
- glcdLine(84, 65, 84, 73, GLCD_ORANGE);
- glcdLine(85, 65, 85, 73, GLCD_ORANGE);
- glcdLine(86, 65, 86, 73, GLCD_ORANGE);
- glcdLine(87, 66, 87, 72, GLCD_ORANGE);
- glcdLine(88, 66, 88, 72, GLCD_ORANGE);
- glcdLine(89, 66, 89, 72, GLCD_ORANGE);
- glcdLine(90, 67, 90, 71, GLCD_ORANGE);
- glcdLine(91, 67, 91, 71, GLCD_ORANGE);
- glcdLine(92, 67, 92, 71, GLCD_ORANGE);
- glcdLine(93, 68, 93, 70, GLCD_ORANGE);
- glcdLine(94, 68, 94, 70, GLCD_ORANGE);
- glcdLine(95, 68, 95, 70, GLCD_ORANGE);
- glcdPixel(96, 69, GLCD_ORANGE);
- }
- void drawButtonStartOff() // ฟังก์ชั่นวาดปุ่ม START เมื่อไม่ถูกกด
- {
- glcdLine(84, 65, 84, 73, GLCD_GRAY);
- glcdLine(85, 65, 85, 73, GLCD_GRAY);
- glcdLine(86, 65, 86, 73, GLCD_GRAY);
- glcdLine(87, 66, 87, 72, GLCD_GRAY);
- glcdLine(88, 66, 88, 72, GLCD_GRAY);
- glcdLine(89, 66, 89, 72, GLCD_GRAY);
- glcdLine(90, 67, 90, 71, GLCD_GRAY);
- glcdLine(91, 67, 91, 71, GLCD_GRAY);
- glcdLine(92, 67, 92, 71, GLCD_GRAY);
- glcdLine(93, 68, 93, 70, GLCD_GRAY);
- glcdLine(94, 68, 94, 70, GLCD_GRAY);
- glcdLine(95, 68, 95, 70, GLCD_GRAY);
- glcdPixel(96, 69, GLCD_GRAY);
- }
- void checkAnalogL() // ฟังก์ชั่นตรวจสอบค่าจากปุ่มอะนาลอกซ้าย
- {
- int x = ps2x.Analog(PSS_LX); // อ่านค่าแกน X ของปุ่มอะนาลอก
- int y = ps2x.Analog(PSS_LY); // อ่านค่าแกน Y ของปุ่มอะนาลอก
- if(x != oldLX || y != oldLY) // ถ้า X หรือ Y มีค่าไม่เท่ากับของเดิมที่เก็บไว้ในตัวแปร oldLX และ oldLY
- {
- oldLX = map(oldLX, 0, 255, 26, 54); // ให้ลบภาพเดิมออก แล้ววาดใหม่ให้เป็นพิกัด XY ล่าสุดของปุ่มอะนาลอกซ้าย
- oldLY = map(oldLY, 0, 255, 82, 110);
- glcdPixel(oldLX, oldLY, GLCD_WHITE);
- glcdCircle(oldLX, oldLY, 1, GLCD_WHITE);
- oldLX = x;
- oldLY = y;
- x = map(x, 0, 255, 26, 54);
- y = map(y, 0, 255, 82, 110);
- glcdPixel(x, y, GLCD_RED);
- glcdCircle(x, y, 1, GLCD_RED);
- }
- }
- void checkAnalogR() // ฟังก์ชั่นตรวจสอบค่าจากปุ่มอะนาลอกขวา
- {
- int x = ps2x.Analog(PSS_RX); // อ่านค่าแกน X ของปุ่มอะนาลอก
- int y = ps2x.Analog(PSS_RY); // อ่านค่าแกน Y ของปุ่มอะนาลอก
- if(x != oldRX || y != oldRY)
- {
- oldRX = map(oldRX, 0, 255, 106, 134); // ลบภาพเดิมออก แล้ววาดใหม่ให้เป็นพิกัด XY ล่าสุดของปุ่มอะนาลอกขวา
- oldRY = map(oldRY, 0, 255, 82, 110);
- glcdPixel(oldRX, oldRY, GLCD_WHITE);
- glcdCircle(oldRX, oldRY, 1, GLCD_WHITE);
- oldRX = x;
- oldRY = y;
- x = map(x, 0, 255, 106, 134);
- y = map(y, 0, 255, 82, 110);
- glcdPixel(x, y, GLCD_RED);
- glcdCircle(x, y, 1, GLCD_RED);
- }
- }
- void drawAnalogBorder() // ฟังก์ชั่นวาดกรอบแสดงค่าของปุ่มอะนาลอก
- {
- glcdRect(24, 80, 33, 33, GLCD_GRAY); // วาดกรอบสำหรับปุ่มอะนาลอกซ้าย
- glcdRect(104, 80, 33, 33, GLCD_GRAY); // วาดกรอบสำหรับปุ่มอะนาลอกขวา
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement