== ギタコンの自作 試作3
=== 試作3の内容
* ボタンをタクトスイッチから、それっぽいボタンに変えます。
* ボタンの数を増やします。
* Pickをボタンではなく、アナログスティックにしてみます。
[[PageOutline(start=3)]]
=== 試作3で使うもの一覧
試作1で使ったものに加えて、以下を使います。
追加費用は、合計で 2000円+発送費用くらい?? (交換/追加するボタンの数による)
||名称||値段||(参考)通販コード||
||それっぽいタクトスイッチを、必要な個数分だけ。[[br]][[br]]私にはボタン候補としてこれくらいしか見つけることができませんでした。ブレッドボードに載せられるもっといいボタンがあれば、ぜひ教えてください。[[br]][[br]]なおこの写真には、タクトスイッチだけでなく、次の項目のジョイスティックも含まれています。[[Thumb(IMG_3632_.jpg, size=240x84)]] ||1個160円程度||マルツオンラインにて[[br]][https://www.marutsu.co.jp/pc/i/9556/ KC901TCアカ] [[br]][https://www.marutsu.co.jp/pc/i/9567/ KC901TCミドリ] [[br]][https://www.marutsu.co.jp/pc/i/9557/ KC901TCアオ] [[br]][https://www.marutsu.co.jp/pc/i/9565/ KC901TCキ] [[br]][https://www.marutsu.co.jp/pc/i/9566/ KC901TCシロ] ||
||2軸ジョイスティックモジュール x1 ||1個780円程度||秋月電子にて[[br]][http://akizukidenshi.com/catalog/g/gM-06807/ M-06807] ||
=== ボタンの追加
試作1と2で、4つのボタンを使うために、Arduino Microの、12,11,10, 9番ピンを既に使用しています。ボタンの数を増やす場合は、8,7,6,5..というように、使うピンを増やしてださい。
その上で、スケッチを変更してください。
例えば、ボタンを2個増やす場合(8,7ピンを追加で使用する場合)は、以下のようにスケッチを修正します(赤字部)。
{{{ html
<pre>
Joystick_ Joystick(
JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
<s>4</s><font color="red">6</font>, 0, // Buttons, Hat Switch Count <font color="red">ボタンの数を4から6に増やす</font>
false, false, false, // X,Y,Z Axis
false, false, false, // Rx, Ry, Rz Axis
false, false, // rudder, throttle
false, false, false // accelerator, break, steering
);
void setup() {
// Initialize Button Pins
<font color="red"> pinMode(7, INPUT_PULLUP); // 追加
pinMode(8, INPUT_PULLUP); // 追加
</font> pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
// Initialize Joystick Library
Joystick.begin();
}
// Constant that maps the phyical pin to the joystick button.
const int pinToButtonMap = <s>9</s><font color="red">7</font>; <font color="red">// 9を7に変更</font>
// Last state of the button
int lastButtonState[<s>4</s><font color="red">6</font>] = {0,0,0,0<font color="red">,0,0</font>}; <font color="red">// 4を6に変更し、0を2つ追加</font>
unsigned long lastButtonChangedTime[<s>4</s><font color="red">6</font>] = {0,0,0,0<font color="red">,0,0</font>}; <font color="red">// 4を6に変更し、0を2つ追加</font>
void loop() {
// Read pin values
for (int index = 0; index < <s>4</s><font color="red">6</font>; index++) <font color="red">// 4を6に変更</font>
{
int currentButtonState = !digitalRead(index + pinToButtonMap);
if (currentButtonState != lastButtonState[index])
{
unsigned long t;
t = millis();
if (t > lastButtonChangedTime[index] + 10)
{
Joystick.setButton(index, currentButtonState);
lastButtonState[index] = currentButtonState;
lastButtonChangedTime[index] = t;
}
}
}
delay(1);
}
</pre>
}}}
配線の説明は不要ですよね。ボタンを2個増やす場合は、Arduino Leonardoの7,6番ピンを、それぞれ追加するボタンにつなぎます。ボタンのもう片方の端子は、どちらもGNDにつなぎます。(試作1の配線と全く同じ。)
=== アナログスティックの追加
後日執筆予定。