いよいよ終盤にさしかかった。
ArduinoのPSXLibraryのダウンロード











RaspberryPiの環境下で作成した。
ダウンロードしたZipファイルをXarchiveで解凍する。
端末から
sudo cp -r /home/pi/Downloads/PsX /usr/share/arduino/libraries/
PsXの中にはexamplesもついているので、それで、まずテストを行うとよいかもしれない。
プレステのコネクタ
____________
[①②③|④⑤⑥|⑦⑧⑨]
―――――――――
①・・・data
②・・・command
③・・・7.2V DUALSHOCK
④・・・GND
⑤・・・3.3V
⑥・・・attention
⑦・・・clock
⑧・・・none
⑨・・・acknowlodge
ソースコードは以下の通り。
#include <Psx.h>
#include <Servo.h>
#define dataPin 8
#define cmndPin 9
#define attPin 11
#define clockPin 10
//#define OPEN 0
//#define CLOSE 90
Psx Psx;
unsigned int data = 0;
int deg = 90;
int ang = 90;
int clip = 90;
Servo robo0;
Servo robo1;
Servo robo2;
Servo robo3;
Servo robo4;
void setup(){
robo0.attach(2,600,1500);
robo1.attach(3,544,1500);
robo2.attach(4,544,1500);
robo3.attach(5,544,1500);
robo4.attach(6,544,1500);
Psx.setupPins(dataPin, cmndPin, attPin, clockPin, 10);
// Serial.begin(9600);
// robo0.write(90);
robo1.write(90);
delay(10);
robo2.write(90);
delay(10);
robo3.write(90);
delay(10);
robo4.write(90);
delay(10);
}
void loop(){
data = Psx.read();
//Serial.println(data);
if (data & psxUp)
{
deg = deg + 1;
robo1.write(deg);
delay(10);
robo2.write(deg);
delay(10);
robo3.write(deg);
delay(10);
}
else if (data & psxDown)
{
deg = deg - 1;
robo1.write(deg);
delay(10);
robo2.write(deg);
delay(10);
robo3.write(deg);
delay(10);
}
else if (data & psxLeft)
{
ang = ang - 1;
robo4.write(ang);
delay(10);
}
else if (data & psxRight)
{
ang = ang + 1;
robo4.write(ang);
delay(10);
}
else if (data & psxX)
{
clip = clip - 1;
robo0.write(clip);
delay(0);
}
else if (data & psxO)
{
clip = clip + 1;
robo0.write(clip);
delay(0);
}
delay(20);
}
注)電源は大容量のモノを用意しないとUSBからの給電では動作が不安定だった。
}
注)電源は大容量のモノを用意しないとUSBからの給電では動作が不安定だった。