キーボードとしてPCに認識させよう

こんにちは、インターン生の岡島と申します。

皆さん、音ゲーは好きですか?
よく遊びますか??
作ってみたくないですか???

ゆるーく電子工作未経験の人がコントローラーを作れるようになることを目的として、
電子工作初心者が書いていきます。

前回は、複数のボタンを繋げ、押されたら光らせてみました。

今回は、Arduino Unoにちょっと手を加えて、USBキーボードにしましょう!

こちらのサイト( http://techi.mydns.jp/?p=229 ) 非常に丁寧でわかりやすいのですが、それでも初心者の僕が
理解に苦しんだポイントを書いていきます。

そもそも、Arduino UNOに乗っているマイコンチップはATmega328Pというものです。
しかし、もう一つ、ATmega16U2というマイコンチップも乗っています。
ATmega328Pはスケッチの処理をしてくれる役割を持っていると思ってください。
ATmega16U2はUSBシリアルコンバータという役割があります。

ATmega328Pにスケッチを書き込みたいけどATmega328PにはUSBシリアルコンバーターという機能はありません。(PC→USB→ここで止まっちゃう →ATmega328P)

だから、ATmega16U2が代わりに通信をしてATmega328PにPCからUSB経由でスケッチを送ってくれています。(PC→USB→ATmega16U2→ATmega328P)

では、スケッチの通信をUSBでPCに送るためには?
そうです、受け取る通信をしているATmega16U2に、送る通信をさせればいいのです。(PC←USB←ATmega16U2←ATmega328P)

ATmega16U2には、初期状態(スケッチを書き込める状態)では、スケッチを書き込むためのファームウェアが入っています。
今回やるのは、このスケッチを書き込むためのファームウェアを書き換えて、USBキーボードのとして振る舞うようなものに書き換えれば、
Arduino UNOをUSBキーボードに作り変えることができるのです。

Atmel FLIPを使ってATmega16U2のファームウェアを書き換えます。
FLIP 3.4.7 for Windows (Java Runtime Environement included)を下記サイトからダウンロードします。
https://www.microchip.com/developmenttools/ProductDetails/FLIP

書き換えるファームウェアをGitHubから入手します。
https://github.com/coopermaa/USBKeyboard/tree/master/firmware

あとは、先ほど紹介したページ通りにやればオッケーですが、以下にポイントだけ書きます。

ATmega16U2に、書き換えるためにはArduino UnoをATmega16U2で起動しなければなりません。
通常、USBを刺しただけではATmega328Pで起動してしまいます。
そこで、USBに刺した状態で6つのピンの内、この2つのピン(↓の☆の部分)を銅線やら何かで繋げると、Arduino UnoがATmega16U2で再起動します。
                               ☆・・
                           (電源) ☆・・

ATmega16U2のファームウェアを書き換えて、USBキーボードにした場合は先ほど説明した通り、
ATmega328Pにスケッチを書き込めません。
そのため、スケッチを書いてからやることをオススメします。
また、ATmega16U2は頻繁にファームウェアを更新することは想定されていないので、100回程度やると壊れます。

再び、スケッチを書き込みたい場合は、ATmega16U2のファームウェアを”Arduino-usbserial-atmega16u2-Uno-Rev3.hex”に再度書き換えてください。

Arduino,PCが破損しても責任は負えません、配線等は各自よく調べたうえで実行しましょう!

第一回 お触り、Arduino IDEのインストール
第二回 LED光らせる?(Lチカに挑戦!)
第三回 スイッチを繋げてみよう!
第四回 押したらボタン、光るようにする…?
最終回 キーボードとしてPCに認識させよう

今回で以上です。

それではまたどこかでお会いしましょう!

さようならー!!

興味を持たれた方はお気軽にお問い合わせください。

押したらボタン、光るようにする…?

こんにちは、インターン生の岡島と申します。

皆さん、音ゲーは好きですか?
よく遊びますか??
作ってみたくないですか???

ゆるーく電子工作未経験の人がコントローラーを作れるようになることを目的として、
電子工作初心者が書いていきます。

前回は、スイッチを使ってLEDを点灯させました。

今回は、複数のボタンを繋げ、押されたら光らせてみましょう!

それでは、早速回路を組み立てましょう!
必要なものはこちら↓
・Arduino Uno本体
・LED
・照光式押しボタン薄型60φ正方形(【OBSA-60UK】)
・LHS-H(OBSA-LHS1F-LN用のハーネス)
・ジャンプワイヤー(オス・オス)
・ブレッドボード
・抵抗
・USB-Type B

まず、2つのボタンを繋げます。

照光式押しボタン薄型60φ正方形におすすめのスイッチは【OBSA-LHS1F-LN】です。(標準で付いてる)
OBSA-LHS1F-LNは上部にLEDを付けられます。
これにより、容易にボタンを光らせることが可能です。

OBSA-LHS1F-LNのLEDを改造します。
OBSA-LHS1F-LNについているLEDは12Vです。
Arduino Unoで扱える電圧ではないので5VのLEDに差し替える改造をします。

改造手順
1,OBSA-LHS1F-LNの先端部分のヘッド球を外す
2,LEDの足がヘッド球の下側で折り曲げられているのでまっすぐに伸ばす
3,LEDの部分と支えの部分を分離させる(ペンチでLED部分をつかむとやりやすい)
4,5V以下のLEDに差し替える(+,-注意)
5,先ほど抜いたLEDのように足を折り曲げる(足が長い場合は切ってもいい)
6,OBSA-LHS1F-LNに戻す(+,-注意)
以上

OBSA-LHS1F-LNの側面を見ると、コネクタ接続部分の役割が書いてあります。
上から
・プラス
・マイナス
・NO (スイッチに流す電流の入り口みたいなイメージ)
・COM(スイッチに流す電流の出口みたいなイメージ)
です。

回路は以下のとおりです。

かなり複雑ですが、頑張って回路が出来たらArduino IDEを起動しましょう!
以下のプログラムを書いてみてください

const int SWITCH1=1; // スイッチを繋げたのは1番ピン
const int SWITCH2=0; // スイッチを繋げたのは0番ピン
const int LED1 =3; // LED1を刺すのは3番ピン
const int LED2 =2; // LED2を刺すのは2番ピン

uint8_t keyData[8] = { 0, 0, 0, 0, 0, 0, 0 };

// void setup(){}は、起動時に一回のみ走るプログラムです。
 void setup() {
pinMode(SWITCH1,INPUT) ; // SWITCH1の接続ピンをデジタル入力に設定
pinMode(SWITCH2,INPUT) ; // SWITCH2の接続ピンをデジタル入力に設定
pinMode(LED1,OUTPUT) ; // LED1の接続ピンをデジタル出力に設定
pinMode(LED2,OUTPUT) ; // LED2の接続ピンをデジタル出力に設定
Serial.begin(9600); // シリアル通信準備
delay(2000);
}

// void loop(){}は、繰り返し走るプログラムです。
void loop() {
if (digitalRead(SWITCH1) == HIGH) { //スイッチ1の状態を調べる
digitalWrite(LED1 ,HIGH) ; //スイッチ1が押されているならLED1を点灯,シリアル通信で”a”を送信
keyData[2] = 0x04; // ‘a’キー
Serial.write(keyData, 8); // キーの入力を送信(make)
keyData[2] = 0x00;
Serial.write(keyData, 8); // キーの解放を送信(break)
}
else {
digitalWrite(LED1,LOW) ; //スイッチ1が押されていないならLED1を消灯
}

if (digitalRead(SWITCH2) == HIGH) { //スイッチ2の状態を調べる
digitalWrite(LED2 ,HIGH) ; //スイッチ2が押されているならLED2を点灯,シリアル通信で”b”を送信
keyData[2] = 0x05; // ‘b’キー
Serial.write(keyData, 8); // キーの入力を送信(make)
keyData[2] = 0x00;
Serial.write(keyData, 8); // キーの解放を送信(break)
}
else {
digitalWrite(LED2,LOW) ; //スイッチ2が押されていないならLED2を消灯
}
}

キーコードはこちらのサイトがわかりやすいと思います。( http://www.freebsddiary.org/APC/usb_hid_usages.php )
7番の keybordの欄を参考にしてください。

それでは書き込みましょう!

ボタンを押すとボタンのLEDが光りましたか?
シリアルモニターというArduino IDEのツールを開いてください。
ちゃんと通信できていますか?
おめでとうございます。

うまくいかなかった場合は、回路を確認したり、スケッチが正しいかを確認しましょう。

Arduino,PCが破損しても責任は負えません、配線等は各自よく調べたうえで実行しましょう!

第一回 お触り、Arduino IDEのインストール
第二回 LED光らせる?(Lチカに挑戦!)
第三回 スイッチを繋げてみよう!
第四回 押したらボタン、光るようにする…?
最終回 キーボードとしてPCに認識させよう

今回は以上です。
次回、Arduino Unoをキーボードに改造します。
それでは次の記事、キーボードとしてPCに認識させよう でお会いしましょう!

興味を持たれた方はお気軽にお問い合わせください。

スイッチを繋げてみよう!

こんにちは、インターン生の岡島と申します。

皆さん、音ゲーは好きですか?
よく遊びますか??
作ってみたくないですか???

ゆるーく電子工作未経験の人がコントローラーを作れるようになることを目的として、
電子工作初心者が書いていきます。

前回は、LEDとArduino Unoを使ってLEDを点滅させました。

今回は、音ゲーコントローラーの肝であるスイッチの入力をやります。
しっかりと入力が得られているかを確認するために、スイッチが押されたらLEDが光る、といったものを作ります。

それでは、早速回路を組み立てましょう!
必要なものはこちら↓
・Arduino Uno本体
・LED
・スイッチ(オススメはタクトスイッチ)
・ジャンプワイヤー(オス・オス)
・ブレッドボード
・10kΩの抵抗
・USB-Type B

スイッチとはなんぞ?
ざっくり解説すると、スイッチは押すと回路が繋がり電流が流れるものです。

_/_ ←押す前   ___ ←押してる時
今回は、説明用に手ごろなタクトスイッチを使って説明しますが、音ゲーコントローラーに使うなら三和電子のボタンをオススメします。
(第一回の時に紹介したもので使用しているのは、照光式押しボタン薄型60φ正方形【OBSA-60UK】)

まずは、LEDのプラス(アノード)を13番のピンに刺し、LEDのマイナス(カソード)をGNDピンに刺します。
後は、画像のようにつなげます。

回路が出来たらArduino IDEを起動しましょう!
以下のプログラムを書いてみてください

const int LED =13; // LEDを刺すのは13番ピン
const int SWITCH=0; // スイッチを繋げたのは0番ピン

// void setup(){}は、起動時に一回のみ走るプログラムです。
void setup() {
pinMode(SWITCH,INPUT) ; //スイッチの接続ピンをデジタル入力に設定
pinMode(LED ,OUTPUT) ; //LEDの接続ピンをデジタル出力に設定
}

// void loop(){}は、繰り返し走るプログラムです。
void loop() {
if (digitalRead(SWITCH) == HIGH) { //スイッチの状態を調べる
digitalWrite(LED ,HIGH) ; //スイッチが押されているならLEDを点灯
}
else {
digitalWrite(LED ,LOW) ; //スイッチが押されていないならLEDを消灯
}
delay(20); // チャタリングを防止する為に20ms待つ
}

それでは書き込みましょう!

スイッチを押すとLEDが光りましたか?
おめでとうございます。
如何でしょうか?思ったより簡単で楽しいでしょう?

うまくいかなかった場合は、回路を確認したり、タクトスイッチの場合は向きが正しいかを確認しましょう。

押した時にLEDが僅かに点滅した場合、チャタリングが起きている可能性があります。
押した時の振動で回路をつなぐ部分が引っ付いたり離れたりして起こる現象です。
それを回避するために、今回はdelay()を使っています。
delay()の引数(ミリ秒)を増やせば解消されます。

抵抗が必要な理由は?
スイッチから0番への線、そして抵抗がならんでいます。
なぜ直接GNDにつなげず、抵抗を挟むのか?
答えは、この抵抗がないと0番の値が不安定になってしまうからです。
それで生じる誤反応を防ぐために付けています。(プルダウン抵抗といいます)

Arduino,PCが破損しても責任は負えません、配線等は各自よく調べたうえで実行しましょう!

第一回 お触り、Arduino IDEのインストール
第二回 LED光らせる?(Lチカに挑戦!)
第三回 スイッチを繋げてみよう!
第四回 押したらボタン、光るようにする…?
最終回 キーボードとしてPCに認識させよう

今回は以上です。
次回、ボタンを光らせる為に私が行ったやり方と複数個のスイッチの繋げ方を書きます。
それでは次の記事、押したらボタン、光るようにする…?でお会いしましょう!

興味を持たれた方はお気軽にお問い合わせください。

インターンシップへの申し込み・お問い合わせ先

toiawase-(1) (1)

メールでのお問い合わせは、下記フォームに入力して送信してください。

ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

LED光らせる?(Lチカに挑戦!)


こんにちは、インターン生の岡島と申します。
皆さん、音ゲーは好きですか?
よく遊びますか??
作ってみたくないですか???
ゆるーく電子工作未経験の人がコントローラーを作れるようになることを目的として、
電子工作初心者が書いていきます。
今回はLEDとArduino Unoを使ってLEDを点滅させちゃいましょう!!
LEDを点滅させる、通称”lチカ”は、プログラムでいうところのHelloWorldのようなものです。
LEDがちゃんと点滅するということは、Arduino Unoがきちんと動作するということになります。
それでは、早速回路を組み立てましょう!
必要なものはこちら↓
・Arduino Uno本体
・LED
・USB-Type B
Arduino Unoには0~13番のデジタルI/Oピンと0~5番のアナログINピンがあります。
デジタルピンの3,5,6,9,10,11番はアナログ出力としても使えます。
例えば、つまみを回した分だけLEDが明るくなる、または暗くなる物を作るときにアナログ入力とアナログ出力のピンを使います。
今回は単純な点滅なので13番のデジタルPINとGNDを使います。
LEDには長さの違う線が二本あります。
長いほうがプラス側で短いほうがマイナス側です。(プラスとマイナスを間違えるとLEDが壊れてしまうので注意です)
LEDの長いほう(プラス側)を13番のピンに刺し、
LEDの短いほう(マイナス側)をGNDピンに刺します。
Arduino IDEを起動しましょう!
以下のプログラムを書いてみてください
const int LED =13; // LEDを刺すのは13番ピン
// void setup(){}は、起動時に一回のみ走るプログラムです。
void setup(){
pinMode(LED,OUTPUT); // 13番ピンを出力モードに設定する
}
// void loop(){}は、繰り返し走るプログラムです。
void loop(){
digitalWrite(LED,HIGH); // 13ピンの出力をON digitalWrite(反映するピンの番号,HIGH or LOW);
delay(1000); // 1秒待つ delay(待たせたい時間、単位はミリ秒);
digitalWrite(LED,LOW); // 13ピンの出力をOFF digitalWrite(反映するピンの番号,HIGH or LOW);
delay(1000); // 1秒待つ delay(待たせたい時間、単位はms);
}
上記プログラムが書けたらコンパイルしましょう!ちなみに書いたプログラムのことをスケッチと呼びます。
左上のチェックマークをクリックしてください。
異常があれば教えてくれます。
PCのUSBポートにArduino Unoを接続しましょう!
そして、書いたスケッチを書き込むためのの設定をします。
メニューバーのツール→マイコンボード→Arduino Unoを選択してください。
メニューバーのツール→シリアルポート→Arduino Unoを繋げたポートを選択してください。(ポートはデバイスマネージャで確認できます)
それでは書き込みましょう!
先ほどクリックしたチェックマークの右隣の矢印のマークをクリックしましょう!
Arduino Unoの接続したLEDが点滅したらOKです!おめでとうございます!
如何でしょうか?思ったより簡単で楽しいでしょう?
Arduino,PCが破損しても責任は負えません、配線等は各自よく調べたうえで実行しましょう!
第一回 お触り、Arduino IDEのインストール
第二回 LED光らせる?(Lチカに挑戦!)
第三回 スイッチを繋げてみよう!
第四回 押したらボタン、光るようにする…?
最終回 キーボードとしてPCに認識させよう
今回は以上です。
それでは次の記事、スイッチを繋げてみよう!でお会いしましょう!
興味を持たれた方はお気軽にお問い合わせください。

お触り、Arduino IDEのインストール

こんにちは、インターン生の岡島と申します。
皆さん、音ゲーは好きですか?
よく遊びますか??
作ってみたくないですか???
ゆるーく電子工作未経験の人がコントローラーを作れるようになることを目的として、
電子工作初心者が書いていきます。

今回から5回に分けて、自作音ゲーコントローラーを作成する為に必要な事をお伝えしたいと思います!
ちなみに私が実際に作ったものがこちらになります。↓

このコントローラーに必要な準備物は以下の通りです。
・ベニヤ板(コントローラーパネル部分)
・木の板(コントローラーパネルを支える部分)
・照光式押しボタン薄型60φ正方形(【OBSA-60UK】)
・LHS-H(OBSA-LHS1F-LN用のハーネス)
・フェーダー(【EVA-JQKR15A14】POT SLIDE 10K OHM .25W 100MM)
☆抵抗(大体100本セットで売ってます、10kΩくらい)
☆ブレッドボード
☆ジャンプワイヤー(ブレットボード等の配線に使用)
☆Arduino Uno(一番使いやすい気がする…)
☆USB-Type B (Arduino UnoとPCの通信に使用)

”☆”のついてるものは必須です。(メインとして解説していく部分になります)

コントローラー作成の流れとしては
プログラムを書く→Arduino Unoに書き込む
→スイッチやら繋げる→Arduino UnoをPCにUSBデバイスとして認識させる

今回は、Arduino Unoにプログラムを書き込むためのツール(Arduino IDE)をインストールしましょう!
Arduino の公式サイトにあります→https://www.arduino.cc/en/Main/Software

使用する言語はC言語です。
if();がわかれば十分だと思います(今回は割愛!)

こんな感じでゆるーく未経験の人がコントローラーを作れるようになることを目的として書いていきます。
アナログ入力(可変抵抗)についてはお話しません。

Arduino,PCが破損しても責任は負えません、配線等は各自よく調べたうえで実行しましょう!

第一回 お触り、Arduino IDEのインストール
第二回 LED光らせる?(Lチカに挑戦!)
第三回 スイッチを繋げてみよう!
第四回 押したらボタン、光るようにする…?
最終回 キーボードとしてPCに認識させよう

今回は以上です。
それでは次の記事、LED光らせる?(Lチカに挑戦!)でお会いしましょう!

興味を持たれた方はお気軽にお問い合わせください。