#include Joystick_ Joystick = Joystick_(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD, 4, 0, true, true, false, false, false, false, false, false, false, false, false); //Vcc5v-紫 G-茶もつなぐ #define CLOCK 6 //青 #define LATCH 5 //黄 #define DATA 4 //緑 byte padStatus; byte padOldStatus; void setup() { pinMode(LATCH, OUTPUT); pinMode(CLOCK, OUTPUT); pinMode(DATA, INPUT); Joystick.begin(); Joystick.setXAxisRange(-1, 1); Joystick.setYAxisRange(-1, 1); padOldStatus = 0xff; } void loop() { padStatus = readData(); if (padStatus != padOldStatus) { Joystick.setYAxis(0); Joystick.setXAxis(0); if (!bitRead(padStatus,4)) Joystick.setYAxis(-1); //上 if (!bitRead(padStatus,5)) Joystick.setYAxis(1); //下 if (!bitRead(padStatus,6)) Joystick.setXAxis(-1); //左 if (!bitRead(padStatus,7)) Joystick.setXAxis(1); //右 Joystick.setButton(0, !bitRead(padStatus,0)); //A Joystick.setButton(1, !bitRead(padStatus,1)); //B Joystick.setButton(2, !bitRead(padStatus,2)); //Select Joystick.setButton(3, !bitRead(padStatus,3)); //Start padOldStatus = padStatus; } } byte readData() { byte data; digitalWrite(LATCH, LOW); digitalWrite(CLOCK, LOW); digitalWrite(LATCH, HIGH); delayMicroseconds(12); digitalWrite(LATCH, LOW); for (int i = 0; i < 8; i++) { bitWrite(data, i, digitalRead(DATA)); digitalWrite(CLOCK, HIGH); delayMicroseconds(12); digitalWrite(CLOCK, LOW); delayMicroseconds(12); } return data; }