スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Arduinoを、PS2ワイヤレスコントローラで動かす(2)

とりあえず動かしてみたプログラムを紹介します。

今回は

・ 十字キー+LRキーは押されている間走行を続ける
・ ○△□×キーは、押されたタイミングで一回だけ動作
・ スタート/セレクトキーは今回動作無し
・ 振動は無し(デュアルショックなのに・・・w)

で作っています。

<<<<< 参考プログラム >>>>>

#include // PS2コントローラ対応ライブラリ読み込み

PS2X ps2x; // コントローラクラスを生成

int error = 0; // エラー変数とタイプ識別は今回使っていません
byte type = 0;
byte vibrate = 0;


void Front() // 前進
{
analogWrite(5,0);
digitalWrite(9,HIGH);
analogWrite(6,0);
digitalWrite(8,HIGH);
}

void LTurn() // 左旋回
{
analogWrite(5,0);
digitalWrite(9,HIGH);
analogWrite(6,250);
digitalWrite(8,LOW);
}

void LFTurn() // 左前方カーブ
{
analogWrite(5,0);
digitalWrite(9,HIGH);
analogWrite(6,0);
digitalWrite(8,LOW); //125
}

void LBTurn() // 左後方カーブ
{
analogWrite(5,250);
digitalWrite(9,LOW);
analogWrite(6,0); //125
digitalWrite(8,LOW);
}

void RTurn() // 右旋回
{
analogWrite(5,250);
digitalWrite(9,LOW);
analogWrite(6,0);
digitalWrite(8,HIGH);
}

void RFTurn() // 右前方カーブ
{
analogWrite(5,0);
digitalWrite(9,0); //125
analogWrite(6,0);
digitalWrite(8,HIGH);
}

void RBTurn() // 右後方カーブ
{
analogWrite(5,0); //125
digitalWrite(9,LOW);
analogWrite(6,250);
digitalWrite(8,LOW);
}

void Rear() // 後進
{
analogWrite(5,250);
digitalWrite(9,LOW);
analogWrite(6,250);
digitalWrite(8,LOW);
}

void Stop()
{
analogWrite(5,255);
digitalWrite(9,HIGH);
analogWrite(6,255);
digitalWrite(8,HIGH);
}

void setup()
{
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);

Serial.begin(57600);

}

void loop()
{
ps2x.read_gamepad(false, vibrate); // コントローラのバイブレーション機能を使用できるようにしておきます

// if(ps2x.Button(PSB_START))
// {
// }
// if(ps2x.Button(PSB_SELECT))
// {
// }

if(ps2x.Button(PSB_PAD_UP))
{ // Front
Front();
delay(50);
}
if(ps2x.Button(PSB_PAD_RIGHT))
{ // Right
RTurn();
delay(50);
}
if(ps2x.Button(PSB_PAD_LEFT))
{ // Left
LTurn();
delay(50);
}
if(ps2x.Button(PSB_PAD_DOWN))
{ // Rear
Rear();
delay(50);
}
if(ps2x.Button(PSB_L1))
{
LFTurn();
delay(50);
}
if(ps2x.Button(PSB_R1))
{
RFTurn();
delay(50);
}
if(ps2x.Button(PSB_L2))
{
LBTurn();
delay(50);
}
if(ps2x.Button(PSB_R2))
{
RBTurn();
delay(50);
}


if (ps2x.NewButtonState()) // 新しくボタンが押された時の処理(押しっぱなしは1回のみ入力)
{
if(ps2x.Button(PSB_GREEN))
{
Front();
delay(50);
}
if(ps2x.Button(PSB_RED))
{
RTurn();
delay(50);
}
if(ps2x.Button(PSB_PINK))
{
LTurn();
delay(50);
}
if(ps2x.Button(PSB_BLUE))
{
Rear();
delay(50);
}

}

Stop();
delay(30);
}

楽天市場/スーパーwifi

お得なスーパーwifi

さて、稼ぎますか!

楽天市場/お勧め

楽天市場/ホビー

楽天トラベル

amazon/パソコン周辺機器

検索フォーム

更新カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

最新記事

携帯用QRコード

QR

Amazon:通販

amazon/TVゲーム

amazon/模型関係

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。