2016年05月21日
ゲームパッドをつくろう!その6
前回お絵かき頑張りました
今回それを元にスケッチにしてみよう
結果から言うと前回のあのまんまでは無理でした
その後やってみては試すの繰り返しで
なんとか期待した動作をしてくれるものができました
「とりあえず動けばいいや」なので効率よくないですが、一応載せときます
コメントにあるように、マシューさんとうちは無関係です
タレントさんと1ファンくらい無関係ですのでお気をつけて
もっとすっきりした感じにまとめたいと思っています
「こうするといいよ」的なアドバイスや
「もっといいの作ってみたのでどうぞ」的なものは大歓迎なのでよろしくお願いします
2016/05/19
今回それを元にスケッチにしてみよう
結果から言うと前回のあのまんまでは無理でした
その後やってみては試すの繰り返しで
なんとか期待した動作をしてくれるものができました
「とりあえず動けばいいや」なので効率よくないですが、一応載せときます
コメントにあるように、マシューさんとうちは無関係です
タレントさんと1ファンくらい無関係ですのでお気をつけて
もっとすっきりした感じにまとめたいと思っています
「こうするといいよ」的なアドバイスや
「もっといいの作ってみたのでどうぞ」的なものは大歓迎なのでよろしくお願いします
// Simple example application that shows how to read four Arduino
// digital pins and map them to the USB Joystick library.
//
// NOTE: This sketch file is for use with Arduino Leonardo and
// Arduino Micro only.
//
// by Matthew Heironimus
// 2015-11-20
//↑マシューさんに感謝!
//
//下記スケッチはマシューさんの公開されているサンプル等を参考に
//みやびprojectが書いたものであり、マシューさんとは無関係です
//このスケッチに対する質問等向こうに送らないでね
//2016-5-21
//--------------------------------------------------------------------
#include "Joystick.h"
void setup() {
// Initialize Button Pins
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
// pinMode(3, INPUT_PULLUP);
// pinMode(4, INPUT_PULLUP);
// Initialize Joystick Library
Joystick.begin();
Joystick.setXAxisRotation(180);
Joystick.setYAxisRotation(180);
Joystick.setZAxisRotation(180);
Joystick.setThrottle(128);
Joystick.setRudder(128);
}
// 長押し時間 単位ms
const int LongOn = 100;
// 連打待機時間 単位ms
const int Latency = 240;
//初回通過フラグ
int f[] = {0, 0};
//短押し回数
int n[] = {0, 0};
//スイッチ押しはじめ
unsigned long FirstOn[] = {0, 0};
//スイッチ押し終わり
unsigned long LastOn[] = {0, 0};
//押下時間
unsigned long SWOntime[] = {0, 0};
//押してない時間
unsigned long OffTime[] = {0, 0};
int currentButtonState[] = {0, 0};
void loop() {
for (int i = 0; i < 2; i++) {
int ix = i * 4;//スイッチ2にボタン4~8割り当て
currentButtonState[i] = !digitalRead(i+1);
if (currentButtonState[i] == HIGH) {
if (SWOntime[i] > LongOn) {
Joystick.setButton(n[i] + ix, currentButtonState[i]);
} else if (f[i] < 1) {
FirstOn[i] = millis();//今の時間
f[i] = 1;
}
LastOn[i] = millis();
SWOntime[i] = LastOn[i] - FirstOn[i];
} else {
Joystick.setButton(n[i] + ix, currentButtonState[i]);
OffTime[i] = millis() - LastOn[i];
if (OffTime[i] > Latency) {
n[i] = 0;
} else if (f[i] > 0) {
if (n[i] < 3 ) {//2スイッチ8ボタンの場合 ボタン数-1で3 スイッチ24から8
n[i]++;
} else {
n[i] = 0;
}
f[i] = 0;
}
SWOntime[i] = 0;
}
}
delay(20);
}
Posted by miyab at 19:04│Comments(0)
│ゲームで遊ぶ
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。