#include //Vcc5v-紫(6) G-茶(8)もつなぐ()は互換機のピン #define CLOCK 2 //青(4) #define LATCH 1 //黄(3) #define DATA 0 //緑(2) #define CENTER 127 uint8_t joyData[8]; byte padStatus; byte padOldStatus; void setup() { pinMode(LATCH, OUTPUT); pinMode(CLOCK, OUTPUT); pinMode(DATA, INPUT); padOldStatus = 0; padStatus = 0xff; } void loop() { padStatus = readData(); if(padStatus != padOldStatus) { joyData[0] = CENTER; joyData[1] = CENTER; if(!bitRead(padStatus,4)) joyData[1] = 0; //上 else if(!bitRead(padStatus,5)) joyData[1] = 255; //下 if(!bitRead(padStatus,6)) joyData[0] = 0; //左 else if(!bitRead(padStatus,7)) joyData[0] = 255; //右 joyData[6] = ~padStatus & 0xf; //ボタン padOldStatus = padStatus; //ジョイスティックの値をセット DigiJoystick.setValues(joyData); } DigiJoystick.delay(50); } 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; }