Arduino使ってパタポン2を半自動化した話

はじめに

パタポンっていうゲームがある。 どんなゲームか簡単に言うと、リズムに合わせてコマンドを打って蛮族を操作する2Dリズムアクションゲーム

(パタポン PV)

パタポンは楽しくて好きなんだけどこのゲームの大きな特徴の、"リズムにあわせてコマンドを打つ"っていうのがすっごく下手でゲームを楽しめない!!

なので電子工作の力を借りて 楽をする Pataponを簡略化するものを作った!

f:id:panchiga:20150728023950j:plain

続きを読む

CherryMXキースイッチでストラップを作ろう

はじめに

自分の好きな色の軸をいつでも触りたいよね。じゃあつくろう!f:id:panchiga:20150601222313j:plain

準備

  • ストラップのひもから金具の部分(なかったらいらないストラップからむしる)
  • 好きな色の軸(千石電商でバラ売りしてる)
  • ニクロム
  • はんだごて
  • はんだ

作成

赤軸スイッチの写った写真の青丸の部分が実はいい感じに隙間がある。 f:id:panchiga:20150601230416j:plain

ここにニクロム線を通してストラップでいい感じにくっつけると完成。やったね!

完成品1号は青軸。カチカチ音が単品だといい感じ。 f:id:panchiga:20150531223742j:plain

スイッチとして使うつもりがなかったら後ろのスイッチとして使うための金属部分は刺さって痛いだけなので曲げたり切ったりしよう。

まとめ

スイッチだけ買えば後は家にあるものだけで作れると思う。180円くらいで素敵ストラップ作れると考えれば作る価値はあると思う。自分的には大変満足の行く出来だった。

スイッチなことを活かして、押したら光らせるようにするとかすると楽しいかも?

他にもいくらでも作りようはあると思うので楽しもう。

感想

ケータイにつけてたのしい!ってできてよかった。緑軸とかで作りたい。

キーキャップの印字とか自分で出来たらもっと楽しそうだなあって思った。

"D","V","O","R","A","K"ってそれぞれ印字された奴持ち歩いたら…だっさいなあ…

iphoneにくっつけてホームボタンとかパワーボタンとかの機能持たせたい。

ネイルアート自慢の次は絶対にキースイッチストラップ自慢が来るね。絶対に来るね。

rubyでループ中に配列の要素を消すと全部見てくれない問題

f:id:panchiga:20150531002115p:plain

はじめに

ruby使ってて配列の要素がいらない値だったら消去したいなって思った。

each使ってやったら最終的に配列の中は思ってた値とは違った値が取れてなんだこれってなったので書いた。

コードと動作

gist56ee98442dc747b26f67

このコードで望んだ出力結果は

1 4

だけど実際は

1 3 4

あれ?3消えて無くない??

ちなみに.eachのところを.timesに書き換えても同じ。

原因

[1,2,3,4]から2を削除したら[1,3,4]となる。

だけどカウンタの値は2のまま。次に進んだら新しい配列の3つ目、つまり4を見てしまうためだと思われる。

解決策

.eachが先頭から順に見ていくので、後ろから見ていく.reverse_eachを使えば幸せ。

やったね。

gist78fc964f3e034b8b0d81

出力結果は

1 4 

感想

神の作ったと思っていたruby様も人が作ったものなんだなって感じた。いや、神はこんな書き方をしないから凡人が合わせるしかないのかもしれない。

何はともあれ解決できてよかった。

前の記事の続きのモーターを動かす奴はしばらく触ってない。

DCモーターを制御する

f:id:panchiga:20150415001316p:plain

はじめに

DCモーターの回転速度を制御することは出来るのかなと思い、ググってみた。すると出来るっぽいという事がわかったので早速やってみようと思った。どうやってやったっけなってなった時に思い出せる様に書いておく。

 

使ったもの

TA7267BPについて

f:id:panchiga:20110428133509j:plain

モータードライバ。

左のピンから

  1. in1 (Arduinoのanalog出力その1)
  2. in2 (Arduinoのanalog出力その2)
  3. out1 (DCモータの+か-)
  4. GND
  5. out2 (DCモータの-か+)
  6. Vs
  7. Vcc

 

動作電源電圧範囲 : VCC (opr) = 6~18V、VS (opr) = 0~18V

データシート(http://akizukidenshi.com/download/ta7267bp.pdf)

 

回路

f:id:panchiga:20150414235609p:plain

 

参考サイト(PIC AVR 工作室別館 ”arduinoの館 - 接続くん DCモーターの接続”)

で書かれていた回路を再現しようとしてこんな感じになりました。

回路分かる人が見たら呆れそう…

 

コード

gist14db2c4a99707a511026

 

動作

参考サイトのコードをコピって分岐書き換えただけ。

スイッチ押してる間は動く。離すと止まる。

速度を書き換えると速さが変わる。そんな感じ。

 

感想

一応動かす事ができたが理解が浅い。こんな回路作り続けてたら絶対にパーツを壊すと思う。だが何を調べたらいいのか分からないみたいな状態でもある。師匠がほしい…

 

作りたいものがあるのだがその1歩としてやった。次はブラウザからシリアル通信で回転速度の変更を試す予定。

参考

nekosan0.bake-neko.net

 

 

HHKB Pro2を修理したらキーボードになって幸せな話

はじめに

約1年前に友人にHHKB professional2(以下HHKB Pro2)を頂いた。

HHKB Pro2とは、キーボードにちょっとでも興味があったら知らない人はいないであろう、超有名な超打ちやすいと噂の静電容量無接点式キーボード。

f:id:panchiga:20150226022625j:plain

PFU Happy Hacking Keyboard Professional2 墨 英語配列 静電容量無接点 USBキーボード Nキーロールオーバー UNIX配列 WINDOWS/MAC両対応 ブラック PD-KB400B

 

頂いた経緯として、USBコネクタが壊れて使えない状態になってしまい、修理頼むくらいだったら新しいの買うって事になって、捨てるならもらえないか?って感じで頼んだら頂けた。うれしい!

あっさり治せるかと思ったけど意外とそうでもなくて1年放置してたけどふと思い立って昨日直してみたら直ったので手順でも書いておこうと思う。

 

準備

 

修理前の状況

HHKBのミニUSB端子が取れてそれを直そうとしたせいで基板の"4"のパターンが剥がれている状況だった。

f:id:panchiga:20131022141334j:plain

掃除もしていなかったのでまあ汚い。キーキャップが乗ってる方取り外して水でジャバジャバしたら引いた…

こんな感じでジャンクって言葉が似合う感じの状態だった。

 

修理した手順

手順といっても単純で、

  1. HHKBをドライバーでバラす
  2. USBコネクタの刺さってる(刺さっていた)基板を取り外す
  3. 新たなUSBコネクタをくっつける
  4. 直った!やったぜ!

という感じ。

ついでにキーボードの掃除もしたが、"キーボード 掃除"とかでググって出てきた物を参考にした。

 

実践

今回取れていたのはUSBコネクタなわけだが、USB端子には5本の線がある。今回完全にどうしようもないところまで壊れていた部分はいわゆる"4"の部分で、"ID"という役割を果たしてる部分だった。

 

PinFunction
1V_BUS
2D-
3D+
4ID
5GND

f:id:panchiga:20150226145418j:plain

 

この端子はどうやらぱそこんを介さないでUSB機器同士でやりとりする場合に使われるものらしくて*1、あれ?今回関係なくないか?て思って完全に無視してそこには半田付けを行わないで他の部分を半田で固定した所、なんか動いた

 

f:id:panchiga:20150225160753j:plain

端子一つ一つがすごい小さいのでハンダ付け不慣れな手にはなかなかきつかった。

 

 なんて幸せな音なんだ…

 

まとめ

  • ハンダ付けちょっとうまくなった…?
  • 写真をちょいちょい撮っておかないとブログで見せられなくて寂しい
  • キーボード掃除すると新品みたいになって最高って感じ
  • USBのピン4はあまり意味が無い

 

感想

ゴミとして捨てられていたHHKB Lite2を拾ったのが1年半前で、その何ヶ月か後にジャンクなHHKB Pro2もらって、今使ってるTruly Ergonomic買って、この1年半はキーボードの期間だったなと思う。

余談だが、キーボードの上段のQWERTなんちゃらって行、並び替えると"POWER" と "QUIT" が作れて筋肉配列っぽいのが作れる。"Y"は余る。

QWERTなんちゃら配列が見るのも嫌な人はキーキャップ並び替えて遊ぼう!!!!

 

おまけ

Truly Ergonomicに慣れすぎて板チョコな配列がめっちゃつらい! エンターとBSとTABが遠くてとてもつらい!!

使えるようになったのはいいけどどうしたもんか…

2015年プログラム書き初め

 

はじめに

一昨年は書き初めにCで素数を出力するプログラムを作った。60行くらいでできて、役にも立たないあんまり面白くないものだった。

去年は書き初め何にしようか考えてたら2月になってたから書いてない。

それで今年は役に立つものを作ろうと思った。

 

f:id:panchiga:20150102044246p:plain

作業中に動画を流すということをよくやるのだが、某動画サイトを見てる時に一つの動画が終わった後次の動画に変えるために一度作業を中断して、また作業に戻って集中し直す。

これが微妙にめんどくさかった。

なのでこれを、また自動化した。

 

プログラムの流れ

1. 某動画サイトのURLを入れる

  • input site url:
  • ここで正しいURLを入れられればちゃんと動く

2. 見たいタイトルを正しく入力する

  • input PERFECT title:
  • 大文字とか小文字とかの処理をしてないのでこれもまた正しく入力しないと動かない

3. どこからどこまで見るかを決める

  • input 1 or 2の部分
  • -> 1を入力すると"1から25"
  • -> 2を入力すると自分で範囲を決められる

4. 1つの動画が終わったら次の動画に遷移する

5. 最期の動画が終わるとプログラムが終了する

 

コード

gist62d1eb2b2eb378a2b016

 

まとめ

  • Seleniumはすごい便利
  • 自動化最高
  • やっぱりrubyはいいなあ…

 

感想

*1の役に立つものを作れる様になったので成長を感じる…

本当は日記帳でも作ろうかなあって思ってたんだけど思ったよりjavascript難しくて1日じゃ絶対終わらないぞっていうことで急遽今回のものになった。

 

ところで動画見ながら作業ってたぶん絶対はかどらないですよね。

 

最期に今年の抱負です。

f:id:panchiga:20150102044203p:plain

 

参考

RubyでSeleniumを使ってスクレイピング - Qiita

Selenium WebDriver

ruby - Selenium-Webdriver: Get attributes after finding an element - Stack Overflow

Web書道.com

 

*1:自分

DDRの難易度を移動距離で評価し直してみた

 

クリスマスでも音ゲーやってる皆さんこんにちは。

この記事は音ゲーマー達の発信所(4枠目)の24日目の記事です。 

#音ゲーマー達の発信所 (4枠目) Advent Calendar 2014 - Adventar

 

前の人: op31_lyricism

次の人: R7iF

  

今回はDanceDanceRevolutionについての記事を書きました。

f:id:panchiga:20141224020255p:plain

 

はじめに

「Spanish snowy dance激が15なわけがない! 詐欺だ!」とか「FLOWER鬼は17レベルもない! 逆詐欺だ!!!」的な、表記されているレベルに見合っていないのではないか?って曲があると思う。

 

もしも「俺は15レベルならもしかしたらクリア出来るかも知れないけど、16は無理…」って人が16レベル相当の15レベル曲をプレイしてしまったら結果はたぶん悲しい事になると思う。

 

そこで、「曖昧なレベルって言う基準じゃなくてもっと明確な基準を作ればいいんだ」って事で今回は移動量を基準にしてむずいランキングを作りました~。

 

計算方法

単純に移動距離だけだとノーツ数多いやつが勝つに決まってるので、BPMなども加味して考えたのが以下の式。

 

疲れる度 += (今のBPM * 2ノーツの距離 * 四分の何倍か) / 2ノーツの隙間

疲れる度を求めたあと、偏差値を求める。

 

用語について

2ノーツの距離: 前に(右|左)足で踏んだノーツと今(右|左)足で踏んだノーツとの距離

  • 上→下など、反対の位置は56cm
  • 上→右など、隣の位置は40cm
  • 上→上など、縦連は足をあげる高さとして30cm
  • ジャンプはパターン分け直すのめんどかったので全部80cm

2ノーツの隙間: 上と同様にその隙間

gistadefa2394c90c3eda7c6

だったら"2"みたいな

四分の何倍か

八分なら四分の2倍速いから"2"みたいな

 

DDRの譜面は基本的に交互に踏むようにできてるのだが、たまに交互に踏もうとすると回転しないといけない時がある。

しかし、そういう場合とかを考えるとちょっとめんどいので、今回は腰のねじりに制限のない人を想定して作った。

 

#腰のねじりに制限無さそうな人 

f:id:panchiga:20141224194528j:plain

流れ

1. ddr_travel.rb移動距離を求める。

2. 1で求めた値をtravel.csvに追加していく

3. すべての曲が終わったらcalc_std.rb偏差値を求める

4. 3で求めた値をresult.csvに書き込む

5. result.csvを偏差値順に並び替える

 

コード

rubyで書いた。ちょっと長いのでリンクを。

わあいスパゲッティ~~~

 

対象曲

たまたま持ってた1stからX3までと嘆きの樹。

激譜面鬼譜面のみ。

合計745譜面!

 

むずいランキング

全文はここのall_result.csvで公開。

all_result.csv (https://github.com/panchiga/DDR_travel/blob/master/all_result.csv)

今は20レベル表記だが、旧曲だと10レベル表記なのでたまに10とか9が不思議なところにいるのがすごい嫌。Xからだけだと寂しいし仕方ないね…

あと、今は入ってない曲とかコースとかかな?が入っちゃってるけど分かる人が楽しむ感じで。

 

全部出すと本文より長くなりそうだったので上位30曲を順に並べた。

 

gist63e058505a2b4946748c

 

結果を見てみて

足19曲、両曲とも堂々の偏差値100超え!!!!!!

すごい!!

足18曲がやっぱりすごいけどそこに混じってくる16とか17はなんなんだろう

NEPHILIM DELTAがトップ30に入ってるのがちょっと面白い。運動量だけで言えば確かに疲れるから納得はできる。

Δ MAXどっちも17のくせして顕著な差がでたね…

FLOWER鬼(元17)、これ見る限りでは888激(14)より弱いね

 

課題点

ソフランとストップをどうしたら難しさとして数値に正しく出せるかを考えたい

・フリーズ踏みながらもう片足で捌くみたいなのの場合を今回考慮してないのでそのへんも課題点

・DPの対応も出来ないことはなさそうだし次の課題だ 

まとめ

  • 足19はやっぱりおかしかった
  • 偏差値的な値は分かりやすい
  • 10段階と20段階を混ぜると危ない
  • オブジェクト指向できてない!
  • rubyのコピーちょっとなんなんだ

感想

わりと正しい感じの値が出てよかったなあと。ただ、レベル毎にソートしてグラフを出したかったんだけどそれが出せなかったのが残念。

趣味で書くプログラムは本当に楽しいなあ…楽しかったなあ…

コードレビューお願いします!お願いします!コードレビューじゃなくても、もっといい計算式とかあるよって人、コメント待ってます。

 

最期に

Aizuアドベントカレンダーに参加させて頂いて記事を書いたら燃え上がって、人気ブロガー気分味わえて楽しかったです。見てない人は見てね!!

FF10の雷除けを自動化した話 - panchiga's blog