2018年5月3日木曜日

RedBear BLE nano v2 始めました。問題発生と解決

/*
問題というかクセというか、知らないと出来ないことがありました。
一つは、書き込み用のボード(DAPLink)のファームウェアの更新について。もう一つはスケッチのアップロードについて。
解決策は下の方にあります。前半は個人的にやりたいこととその思考過程なので、RedBear BLE nano v2 のファームウェアを正しくアップデートする方法だけご覧になりたい方はくるっとスクロールして下さい。
*/

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
いやはや。
時の経つのは早いもので、前回の更新から2年近く経っています。
本当に恐ろしい。
でも、まあ、生存は、していました。会社と自宅の往復+αですが、このブログから引っ越した趣味の方ではそれなりに幸せです。

さて、やりたいことが出来ました。
ロボットの眼球を動かしたい。
上下左右の動きと、物を見る距離に応じて寄り目にしたりしたいので、3軸(yaw軸×2、pitch軸×1)欲しい。ちなみにヒトの眼球ではroll軸まで少しだけど動きます。ちょっと首をかしげたりしてもブレずに見えるのはこのお陰です。上下の動きを作る筋肉はもちろん左右の目で独立しているので、もしかしたら、訓練すれば右目は上、左目は下とか可能なんでしょうか。それともそんな動きは全く不要なので支配している神経やコントロールしている脳の段階で統合されているのでしょうか。

難しく小さなモーターとポテンショメーターを使って自前のサーボモーター的な物を作ってしまうところからやりたい気持ちを抑えて、ちっこいサーボモーターを3台を使うつもりで「RCサーボ ASV-15」を3台購入済み。

スマホのアプリで目の角度を設定したい。←Bluetooth or BLEを使おう。

やることがサーボモーター3台のコントロールだけで人工知能的な要素は皆無。なのでマイクロコントローラに計算パワーは不要かと←Arduinoでいいかな。ラズパイでももっと小さいボードがあればいいんですけど、まぁ今回はArduinoで。

と、いうわけで、「スマホで動かすArduino-AndroidとBLEで電子工作-」という本を購入済み。

で、「RedBearLab BLE Nanoキット V2」を注文、到着済み。

構造部分については、なんと「Phrozen Make: LCD 3D Printer」を発注済み、到着するのを待っている状態。

で、RedBear BLE nano v2 を開封、GitHubのredbear/nRF5xページからnRF52832に行き、そのREADME.mdにあるGetting Startedの記載に従ってやってみる。

やれた気がするので、Arduino IDEのメニューから、ファイル→スケッチ例→BLE_Examples→SimpleChat をnano v2 に書き込んでみる。
Arduino IDEのメニューから、ツール→シリアルモニタ を開く。

android で、BLE Controller という赤地に白抜きのクマの顔のようなアイコンのアプリをダウンロードし、開く。一番上に Simple Chat の文字があるのでそのまま Scan ボタンをタップする。
     ・
     ・
     ・
   No BLE device was found.
     ・
     ・
     ・
!?(・_・;?

いやぁ、焦りました。あちこちイジって諦めて一晩塩漬けにして翌日一万歩歩いてからググルの神にお伺い奉ると、解決策が見えてきました。
まず、この状態になってからは、簡単なLチカさえできなくなる。つまり、Arduino IDE は書き込んだというけれど、書けてない可能性がある。または、書けているけどブートしていないという状態になって可能性。そもそもファームウェアが正しくヴァージョンアップできていないというのもあり得る。
まずはファームウェアの更新をやる。そしたら残る可能性は、前のスケッチが残っているせいか、ブートローダーが壊れているか、の一つまたは両方ということになると考えられました。

調べて実験した結果、次の手順で解決しました。
  1. DAPLink_V1.0_Interface_nRF52.bin のようなbinファイル(ファームウェア)は、GitHubからウェブブラウザでダウンロードすると壊れるというか正常に働かないファイル(?)が手に入ることがある(?)らしく、MAINTENANCE モードで MAINTENANCE ドライブにコピーしたあとで DAPLink ドライブにFAIL.TXTがあるときは、これを疑ってみる。hexファイルも同様に壊れていることがあるらしい。
    解決策としては、
    1. この記事でaustin944さんが言っていることを解読すると、GitHubを丸ごとダウンロードすると良いみたいだ。なので、あちこち調べて、GitHubを「フォーク」してからそれをzipでダウンロードし、その中からbinファイルを発見した。ブラウザからダウンロードしたものとファイルサイズが違うので、何かが違っていたのでしょう。
    2. DAPLinkボードの裏に白い文字で書いてあるヴァージョンと一致する正しいファームウェアbinファイルをMAINTENANCE ドライブにコピーして、ファームウェアの更新は完了。
  2. 新しいスケッチを書き込む前に、今入っているものを削除して、さらにブートローダーを書き直す必要があるようだ。スケッチをアップロードする度に以下の手順を繰り返す必要がある。
    1. 1つ目でダウンロードしたファイルの中に nRF52832/test/nRF52_EraseChip.hex というのがあるので、これをDAPLink ドライブにコピーする。
    2. 一旦DAPLink ドライブが消えたあとで再度出現したら、arduino IDE の「ツール」→「ブートローダーを書き込む」を行い、落ち着いて完了するまで待つ。
    3. ここでやっと新しいスケッチを書き込む準備ができたので、書き込む。

以上、これでやっと先に進める。。。



2015年6月15日月曜日

cardboard 自作(途中)

cardboard、ご存知の方はご存知のはず(あたりまえやん)

これの「モドキ」を作ったので(正確にはまだ途中ですが)、投下。
ミクさんが写っている様子)

装着するandroidはnexux6なので、相当でかくなります。

まず、レンズをどうするか。
これについては、100均で買って来た虫眼鏡を …とか、東急ハンズで売っている虫眼鏡を …とかをネットで見かけましたが、私は、これ(↓)。
博物館とかで売っている、3Dの写真や絵画が見れる、というやつです。

 これのレンズをいただきます。
正確には、レンズどころか、保持している紙ごと拝借しちゃいます。

レンズから被写体までの距離が60mmだったので、作るモノもそのように設計します。
材質は、スチレンボード、っていうのかな?


一緒にスケールを写したのでサイズがわかっていただけるかと。

ストッパーです。nexux6は上下で厚みが違うので、大変でした。



で、ミクさんを写せば、冒頭の写真のように、目の前に立体のミクさんが〜〜〜〜〜!!

問題点というか、積み残しというか、未実装というか は、こちら。

  • 外からクリックするためのギミック
  • 両端をふさぐ
  • 中を黒くする(暗いシーンを見てると、白さが邪魔になります)
  • 鼻を入れるための穴をもうちょっと広げる







2015年5月24日日曜日

ARDUINO MICRO Lチカ!


使っているのは昨日書いた通り、「.CC」のほうのver.1.6.4です。
あらかじめ、
メニューバー:ツール - ボード で、「ARDUINO MICRO」を、
メニューバー:ツール - ポート で、「/dev/tty.usbmodem1421 (Arduino Micro)」を、
それぞれ選択しておきます。

LEDをチカチカさせることを、「Lチカ」と言うらしいですな

やってみました。
メニューバーは、ファイル - スケッチの例 - 01.Basics - Blink の順で辿ります。
Blinkのスケッチが別ウィンドウで開きます。

見つけたやってみた人のサイトによると、どうやらなんもせずに、そのままボードに書き込んでいいみたいなので、おもむろに
メニューバー:ファイル - マイコンボードに書き込む を辿るだけ。
ここまで、全部ヘルプの「初心者向けガイド」に書いてありましたね。英語だけど。

なんて簡単なんだ。
簡単すぎて拍子抜けしてしまう。

Blinkのスケッチの開いているウィンドウの下部に、「マイコンボードへの書き込みが完了しました。」と表示されています。

ボードの白色の側では、青いパイロットランプ(LED)が点灯しています。
ボードの緑色の側では、緑のLEDがチカチカ点滅してます。

すばらしい。
marvelous;splendid;excellent;wonderful
очень хорошо
très bien

très bienが一番しっくりくるかな。


ちなみに、IDEをアプリケーションフォルダに移動してから、使っています。
ボードをUSBポートに繋いだ時に、キーボードを横から見た絵のついたダイアログが出ますが、無視しました(無視していると勝手に消えましたが、それで正解なのかどうかよくわかりません)。

昨日は、箱の側面にあるデザインを「.CC」のサイトで見つけられなかったみたいなこと書きましたが、冒頭の写真にある通り、「.CC」から落としたIDEのバージョン確認用の画面の右側に、同じタイルデザインがありますね。本当に一つだったものを取り合ってる感じですね。困ったもんですわい。

2015年5月23日土曜日

ARDUINO MICRO (IDEはどっちから落とせばいいのよ?)

*結論は、「自分で決めろ」ですだ。(いちおう末尾に自分の結論があるよ)

今更感満載だけど、ARDUINOに手を出そうと思い。
ちっちゃいもの好きな私はMICROに飛びついた。

LEONARDOを小さくした…」って書いてあったし


で、買って帰って開けてびっくり

ARDUINO.ORGから新しいIDEをダウンロードしてねーというステッカーがベタリと貼ってある。。。

このボード自身は、「.cc」と「.org」のどちらにも載っている。
http://www.arduino.cc/en/Main/Products
http://arduino.org/products

で、こんな記事を見つけました。
makezine.jpさんの記事:Arduino戦争:グループ分裂、そして新製品の登場
mag.switch-science.comさんの記事:Arduinoの内部分裂についてなるほどなるほど。
冒頭の写真の箱の方に見えるデザインは、「.org」でみつけることができました


差し当たって問題なのは、どちらのサイトからIDEをダウンロードすればいいのかということ。同じなのかな。

「.cc」からのダウンロードは、非常に遅くて、
arduino-1.6.4-macosx.zip14.0 KB/秒 - 129 MB 中 38.2 MB(残り 2 時間)などと言って、全く終わりません。
「.org」からのダウンロードは数秒で終わりました。
arduino-1.7.3.org-macosx-java7.zipでした。

買ってきたボードの裏側には、「MADE IN ITALY WWW.ARDUINO.CC」とプリントされている。なのに「ARDUINO.ORGからダウンロードしろ」というステーッカーが貼られているなんて、とんだ混乱ぶりである。


自分としては、製品に「MADE IN ITALY WWW.ARDUINO.CC」とプリントしているのだから「.cc」側のものだと考える、あるいは、作ってるのが「.org」だとしても基盤のプリントが変更されていないということは混乱前のものであり、「.cc」側からダウンロードしたものを使おうと思う。
回線めちゃ細やけど。
寄付せえへんかったんがあかんかったんかな。

もお、まだダウンロードでけへんし、どっちやねん!てなるし、使うとこまで到達でけへんわ…



2015年5月7日木曜日

SZCC-302WH 故障 & 代替機=TQ-MC06RB

この記事(nexus6を2,000円前後のQiワイヤレス給電機で充電できました)でお伝えしていましたQi充電台ですが、壊れました。
動いていたのは約3ヶ月間くらいだったでしょうか。
匂いを嗅ぐと、電子基板が焼けた時の特有の匂いがしました。

今は黒い丸い薄いの(笑)使っています。型番はTQ-MC06RBと書かれています。
写真とってませんが↓これが形的に近いです。が、本当にそっくりなのがたくさん出回っているので、確証はありません。

(画像はQi 充電パッド GMYLE 無接点「Qi」規格対応円形ワイヤレス充電器 [ブラック]から無断拝借すみません)
このTQ-MC06RBは、表裏ともゴムになっていて滑りません。
こわれたやつより小さいですが、滑らない分安定感と安心感があります。

2015年1月27日火曜日

Nexus6 自作Qi対応ワイヤレス給電機能付きクレードル



前回の投稿で予告(?)していた、新ガジェット恒例のクレードルを作ろうプロジェクトです!
今回はこれまでと違い、QIワイヤレス給電機を使います。



使用感:非常に快適です。
位置決め済でクレードルの幅もピッタリサイズなので、コトンと置くだけで正確に充電されます。ズレてないかなという心配から開放されました。
USBコネクタがクタクタになるという心配からも当然ですが開放されました。
手軽さに加え、安心が2つも手に入って、幸せっす(笑)

まずは写真をどぞ:
 


  
  
 

作り方:
前回の投稿でご紹介した円形のQi対応ワイヤレス給電機(YMSM-C-WH)のケースを「ブリッ」と剥きまして(笑)、中身を取り出します。
接着剤もネジも使われていません。工具不要ですが、小さめのマイナスドライバーやギターのピックなどがあると幸せかもしれません。
フチを持って上面をグッと押すと底がちょっと浮くので、すかさず浮いたところからこじ開けます。

ケース(spigen の Nexus 6 Case Thin Fit)入りのnexus6の幅に合わせて、本ブログのクレードル制作ではお馴染みのLaQを使って、クレードル本体を作ります。
今回のデザインは、上の写真をご参照ください。
デザインが決まったところで、給電機本体を収める位置を決めましょう。

うすい塩ビのシートで、コイル保護の目的も兼ねた位置決めと本体支持を主目的にした簡易ケースを工作します。
LaQだけでは正確な位置にコイルを収めるのが難しいためです。
どんな形にするかはクレードル本体の構造や大きさによって異なりますから、紹介しません。接写もなしです。


組み合わせて、動作確認、下側が浮いてくるのを防ぎ、さらなる安定感を求めて、透明なL字アングルを下部に両面テープで貼り付けます。

出来上がり!



写真では周りが明るくて見えにくいのですが、背面で光る給電機からの灯りが透明なケースのフチに回り込んで正面から見えるので夜に部屋を真っ暗にすると綺麗です。
オフィス用にもう一つ作ろうかと検討中です。

2015年1月10日土曜日

nexus6を2,000円前後のQiワイヤレス給電機で充電できました

結論から言うと、YMSM-C-WHと書かれたQiワイヤレス給電機でクリアケース(後述)に入れたままのnexus6を充電できました。
また、SZCC-302WHでもnexus6を充電できることを確認しました。
※AZCC-302WHはその後壊れました。

正月2日、nexus6を買ってしまいました。

nexus6はQi(チー)でワイヤレス充電できるということだし、
毎日充電のために小さなUSBを抜き差しするのは面倒くさいし、
前のスマホみたいにコネクタがクタクタになってもイヤなので…


アキバのあきばお~2号店で、怪しいワイヤレス給電機を入手!
中国製というだけで怪しいと言ってはいけません!
使えればOKでしょう

直径61mm、厚さ12mm (定規で測ったので誤差があるかも)
付属のUSBケーブルは綺麗だし(某リンゴを真似したような…)まあまあでしょう。
入力電源はスマホと同じマイクロUSBで供給しますが、電源アダプターは付属しません。


充電するものを載せる前は赤く光ります

裏側はそこはかとなく滑り止めのような黒い部分があります。

今回は、nexus6に付いてきた電源アダプターを挿しました。

バッテリー残り55%の状態から使用して4時間ほどで99%の表示になりました。

nexus6の下側3分の1くらいのトコを円の中央に置く感じで使えました。
多少ズレても給電されていました。
nexus6本体下の青く見える部分は給電中を表す 光です。

さらに横から見ると、不安定な状態であることがわかります。


充電中は暖かくなっていたようですが、99%になっていた4時間後にはすっかり冷めていました。1日使っただけなのではっきりしたことは言えないかもしれませんね。

nexus6の下側3分の1くらいのトコロにコイルがあるらしいことは知っていました。
なのに、なぜこんな小さなものを入手したかというと、毎度新しいガジェットを入手したら作ってしまう、お手製充電クレードルに組み込もうと思ったからです。
できたらこのブログにアップします(誰が待ってるんだ?笑)。


実は、もう一台買っていました。

こちらはnexus5とnexus6で充電できることを確認しました。
置く場所はnexus5なら中央でOK、nexus6でも中央で充電されました。

やはりACアダプタは付属しません。ビニール袋に入って売っていました。袋には七色のパイナップル(笑)の絵が!袋のバーコードのシールに印刷されている SZCC-302WH はおそらく型番でしょう。

こちらは今回、PS VitaのACアダプタを使っています。

値札には2,300円のシールがありました。
本体には型番もなにも記載されていません。非常に軽いです。裏は排熱用と思われる網状の部分があります。
充電中は緑のLEDが光ります。赤のパイロットランプは点きっぱなしです。
本体サイズや入力、出力の電圧やアンペア数はさすがに記載されていますが…

ちなみに、nexus6に使用しているクリアケースは spigen の Nexus 6 Case Thin Fit の Crystal clear です。


2014年8月27日水曜日

homebrew + MORSE リベンジ その2 MORSE インストール失敗したでござる

さて、昨日の続きです。
昨日、blender3.4.0がインストールできたので、今日はいよいよMORSEのインストールです。

MORSEのページ(macにインストール)に従って、ターミナルに入力してエンター…
brew tap morse-simulator/morse

Warning: Already tapped!
え?
気にせずに次!
brew install morse-simulator
-- Configuring incomplete, errors occurred!
See also "/tmp/morse-simulator-RYoWzR/CMakeFiles/CMakeOutput.log".

READ THIS: https://github.com/Homebrew/homebrew/wiki/troubleshooting
If reporting this issue please do so at (not Homebrew/homebrew):

  https://github.com/morse-simulator/homebrew-morse/issues

うぇ!


sudo chown -R $taichis-air-13 /usr/local

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4/lib/pkgconfig

brew install morse-simulator
-- Configuring incomplete, errors occurred!以下同文

あ、あかん。
わからん。
昼休み終了!
本日は失敗!!

2014年8月26日火曜日

homebrew + MORSE リベンジ その1 (python 3.4.0のインストールまで)

Blender のversionが2.71になり、pythonのversionが3.4.0になっていたので、以前あきらめていたMORSEを導入してみようと思います。

With Homebrew on OSX

この↑ページに従ってやってみます。

なんと!「ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"」が、早速動かない…

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"」で動きました(出典)。
すると、すでにインストールされてるよーというメッセージが。
それに従って再インストールを行います。ここは問題なし。

その後、お決まりの「brew doctor」。

python is symlinked to python3 pythonを削除しきれていなかったようです。
Broken symlinks were found. Remove them with `brew prune`: こちらを先にやってみて、もういちどドクターを呼びましょう。

もう一度出ましたpython is symlinked to python3。ptyhon3関係のファイルは削除してあるので、.bash_profile からpython関係のパス指定を削除して、ターミナルを再起動してみます。そんで、もいちどドクター!
Your system is ready to brew.
しめしめ(笑)

ではpythonをインストーーーールと行きたいところですがblender用にversionをあわせなければなりません。今回は3.4.0です。最上部のMORSEのページによると
The provided hash can be found by running: brew versions python3」ということなので「brew versions python3」をターミナルで実行してみると「Warning: brew-versions is unsupported and will be removed soon.You should use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions」な〜んて言われますが、分かんないし、目的の 3.4.0    git checkout b7b038f /usr/local/Library/Formula/python3.rb は表示されてるんで、さっさと次にいきます。

またこのMORSEのページに従って
cd /usr/local
「git checkout b7b038f /usr/local/Library/Formula/python3.rb」をターミナルに入力&エンター。しかる後に、「brew install python3」以下同文。


 /usr/local/Cellar/python3/3.4.0_1: 3721 files, 64M

できたみたいですね〜

念のため
「python --version」
Python 2.7.5

「python3 --version」

Python 3.4.0

よいよい!

今日はここまで

2014年5月6日火曜日

ビデオテクスチャーのデモファイルを置きます

以前このブログで書いた記事「Blender 2.49RC で ゲームモードでの「鏡」が作れる!」に対して、コメントをいただきました。

そこで、video texture を用いたblenderファイルを公開しようと思います。
2.66で作ったファイルですが、2.70aでも動きました。リンクは下記。

上記の記事を書いた後で私が作った(といっても、その記事に載っているチュートリアルからコピペのpythonスクリプトが入っていますが…)ものです。

イモムシみたいなキャラクターの左右の目として、カメラを2台使用しています。

画面中に左右の目に対応した2枚のスクリーンを配置しているので、カメラからの画像を確認することが出来ます。

マウスを3Dペインに置いて「p」のキーを押せばゲームモードになります。
イモムシには「j」「l」「u」「o」の各キーにちょっと動くように仕掛けをしているので、頭が動いてカメラも動いて、スクリーンに映る画像も変わるので確認できると思います。

このzipファイルから保存してください。
スクリプトは内蔵されていると思います。

なにかBlenderのpythonに足りないものがあったら、インストールしてくださいね


2014年4月15日火曜日

blenderでフルインストールしたpythonを使ってみました。

問:
blenderに同梱されるミニマム版のpythonではなく、フルインストールしたpythonを使うにはどうしたらいいでしょうか。osは OS X 10.9.2、blender 2.70a

答:
フルインストールしたpythonへのシンボリックリンクをblenderのpythonのあるパスにおいてください。詳しくは下記参照のこと。



2014年3月3日月曜日

ffx_hd-r 200回雷避けの秘訣

ファイナルファンタジーX HDリマスター、昨年末からやってます。

ほぼ、あまねく世の中で言われている通りなんですが

  1. 「エンカウントなし」の装備をつける
  2. グアドサラムから雷平原に入ってすぐのクレーター(?)っぽいやつが大小2つ並んでいるうちの右側の小さい方の、手前側のちょっと高くなっているあたりで雷を待つ
  3. 画面の上側8割ほどを隠してしまう(画面奥の雷に反応しないように。画面の外も上側は覆うこと。ティーダの靴だけ見えればOK)
  4. 暗い部屋でやる(画面への映り込みを避け、雷の光に敏感になるため)
  5. 消音する(光以外の刺激をなくすことでより鋭敏になれる)

これで200回の雷避けを達成しました。

======================================
昔、無印のをPS2でやったのですが、そのときいなかったヘレティックなんとか、とかが出てきて瞬殺されたり、と、いろいろ大変なのですが…
会社の行き帰りに遊びたくて、Vita版をやってます。

実はもう1月終わり頃のことですが、200回連続の雷よけに成功したのが地味にうれしかったのを思い出したので、書きましょう。

FF10 HD 『雷避け』におすすめの場所落雷連続200回避攻略のコツから一部抜粋

視覚遮断で集中力アップ
上記ポイントでは、画面奥で『落雷避け』とは関係のないダミーのフラッシュが延々発生している。
成否の判断は、画面が白くなったらボタンを押すことなので、ダミーを見ないように画面左下、右下、なんなら上半分を遮断しても良い。
頭では全然違うとわかっていても、反射的にボタンを押してしまうことによるミスを防止できます。

ここに書かれていたのが参考になると思い、Vitaの画面の上側ほとんどを覆い隠すために紙の裏側を黒く塗って折り曲げ、輪ゴムで留める、という遮蔽版を昼休みに作成しました。
さすがに電車の中では恥ずかしかったので使えず、帰ってから使いました。

頭の中で数えながらよけていたので、220回はよけないと数え間違いとかあったら嫌だなと思いつつやっていたんですが…199(おお、いい感じ)、200(やったーーー)、にひゃくi <どーん、バン、バタバタ>
200回丁度しか避けられず。心折れそうになりながら確かめに旅行公司へ向かうと、建物の前に宝箱が。「150回おめでとうのラストエリクサー×4」、「200回の火星の聖印」!トロフィーも獲得できました。旅行公司内のテーブルにある記録をみると、なんと、200回ぴったり!

199回しかできてなかったら、、、と思うと、恐ろしいかぎりです。

どこかのサイトに書かれていましたが、タイマーを使うことで「自分では数えない」というのもへんな緊張をしないためには有用かと思います。

また、単に雷を避けているだけの地味な画面を何十分もつきあってみてくれる奇特なパートナーがいる人は、その人に数えてもらうのもいいでしょう。。。

ffx_hd-r とれとれチョコボ0:0:0成功の秘訣

ファイナルファンタジーX HDリマスター、昨年末からやってます。

とれとれチョコボ0:0:0については、動画も解説も有用なものが世の中にたくさんあるので参考になります。
ここではググった範囲で見なかったアドバイスを少し書きたいと思います。

  1. 風船の数も鳥の数も気にせず「思い通りにチョコボを操縦する」ことに専念する
  2. ネガティブな感情、感想を持たない(「失敗だ」「くっそー」「なんでここで鳥が来るかな」「うっわー、きれいに風船を避けちゃったよ」などなどのネガティブな感情や感想を持つと、学習効果が上がりにくくなります)
  3. 暗い部屋でやる(画面への映り込みを避け、少しでも集中力を上げるため)
  4. 消音する(自機チョコボの向き、風船の位置、鳥の飛来角度や距離、チョコボ屋の位置など、集中すべきことが多いと思う方には効果があるかと思います)

これでとれとれチョコボ0:0:0を達成しました。

======================================
昔、無印のをPS2でやったのですが、そのときいなかったヘレティックなんとか、とかが出てきて瞬殺されたり、と、いろいろ大変なのですが…
会社の行き帰りに遊びたくて、Vita版をやってます。

会社の行き帰りで合計1日1時間弱という挑戦で2週間目に突入したある夜。
ふと、ネガティブな感想、感情があると学習効果が上がらないという記事を昔どこかで読んだ気がして、結果を気にしないようにし始めました。
ピアノを練習する素人は右手だけ、左手だけ、と練習を重ねて、最後に両手で練習しますが、それと同じように、風船を取るだけ、鳥を避けるだけ、と順に練習しようと思って風船を取っていました。が、すぐに、チョコボを思うように操作できていないことに気づきました。で、まずは操作に慣れるべし、と思って(結果を気にせず)数回やって、音を消そう!と思いついて、消音してからの1回目で、成功しました。
計算前のタイムは忘れましたが、風船13個、鳥0羽でした。

2月最後の土曜日の夜のことでした。
0:0:0になっても、計算結果がマイナスの数にならないと聖印はもらえないらしく、2回も0:0:0で もらえない結果になりくやしくて仕方なかったもんです。



2013年12月12日木曜日

新しいバージョンのBlender(2.69)に対して行ったこと

Blender 2.69をダウンロードしました。

やっぱり自作のPythonスクリプトを動かすためには、なんかが足りないようです。

ググる先生を検索していると過去の自分の記事を発見しました。

新しいバージョンのBlenderに対して行ったこと


今回も同じことを行うことで無事動きました。

すぐに忘れる脳には、やっぱり必要なんだな。ブログ。

しかし、なんだな。なんにも作業が進まないのに、Blenderのバージョンだけが上がっていくという…


2013年12月1日日曜日

SDCCによるFX2LPのFirmware開発に再挑戦 その3 (コンパイル成功)

今回はコンパイルに成功しました。

前回までの細かさとは打って変わって、非常に大雑把になってます。
ごめんなさい。


使ったもの:
SDCC-3.3.0
MinGW   mingw32-base
   msys-base   


http://sourceforge.net/projects/fx2lib/ からダウンロードした fx2lib-src-0.1.tgz 
pfenrirさんちで公開されているヘッダファイルとmakefile



前回、嫌んなっちゃったんで、ちょっと違うことをしてみます。


http://sourceforge.net/projects/fx2lib/ から、 fx2lib-src-0.1.tgz をダウンロードしました。

tgzファイルなんですが、ググってみると、解凍コマンドがわかりましたので、MinGWのコンソールで解凍できました。
コマンドはhttp://uguisu.skr.jp/Windows/tar.htmlを参考にさせていただきました。

私はSDCCでのコンパイル用に「C:\SDCC」というフォルダを作っていたので、そこに解凍してできた「fx2lib」というフォルダとその内容をすべて「C:\SDCC\fx2lib」として保存しました。


makefileのINCLUDESのところに「C:\SDCC\fx2lib\include」、LIBSのところに「C:\SDCC\fx2lib\lib」を設定しました。

で、makeすると、これがない、あれがない、こんな命令知らない、といろいろ言われるので、対応します。
なんだか覚えてませんが、なかったものは前回までにpfenrirさんちから頂いたファイルをコピーしました。なぜコピーしたかというと、なにか変更しなくちゃならなくなったら、元のファイルをいじりたくなかった、というだけですので、本来はINCLUDESやLIBSのパスに加えるだけでいいと思います。

他にも xdata は判りません、みないなのもあったと思いますが、すべて前回までに知っていたところだったので問題なく対応出来ました。

すると、どうでしょう。
makeがエラーを吐くことなく終わりました!

最終的には
Intel Hex file to EZ-USB Binary file conversion utility
Copyright (c) 2012-2013, Cypress Semiconductor Inc.
4979 Bytes written.
Total Code Bytes = 4726
Conversion completed successfully.
ということで、できたようです。

ただ、ここまで来ても、「make 1> ./build_by_sdcc/make.txt 2>&1」で保存しておいたファイルを見るとerrorが吐かれていたりするので検索して確認し、対応し、回避しています。



次回以降は実際にfx2lpのeepromに書き込んで動作確認します。






SDCCによるFX2LPのFirmware開発に再挑戦 その2

注意: ただの駄文です。
    結局、今回はSDCCによるFX2LPのFirmware開発は成功していません。



前回、SDCCさんは ezusb.lib がお気に召さなかったので、再度pfenrirさんちから取得しなおして、make。

今度は

Multiple definition of _EUSB
Multiple definition of _EA
memory overlap at 0x0 for RSEG1
memory overlap at 0x1 for RSEG1

と言われたので探してみると、私が fx2regs.h をいじった形跡が…

2箇所、
390行目付近:
sbit EA    = 0xA8+7;

480行目付近:
sbit EUSB    = 0xE8+0;

を、はじめはコメントされていたのに、復活していました。

で、これを再度コメントアウトして、makeすると…

fw.c:210: error 20: Undefined identifier 'EUSB'
fw.c:216: error 20: Undefined identifier 'EA'

おお、これ、見たことある。これを言われたから fx2regs.h をいじったんだった…

ん? 活かしてもダメ、コメントにしてもダメ。いったい、どうすれば?

よく見ると、fx2regs.incが、fx2regs.hと同じフォルダにあります。
このfx2regs.incは、pfenrirさんのものです。
が、fx2regs.hは↓のものでした。
https://raw.github.com/stefanrauch/bel_projects/master/cy7/cyfx2usbuart/fx2regs.h

このfx2regs.hの中でコメントアウトされていたEUSBとEAの2群を復活して、make clean
make。

Multiple definition of _EIEX6
Multiple definition of _EI2C
Multiple definition of _EIPX4
Multiple definition of _EIPX5
Multiple definition of _EIPX6
Multiple definition of _PI2C
Multiple definition of _EUSB
Multiple definition of _PUSB
Multiple definition of _EA
Multiple definition of _ES0
Multiple definition of _ET0
Multiple definition of _ES1
Multiple definition of _ET1
Multiple definition of _ET2
Multiple definition of _EX0
Multiple definition of _EX1
Multiple definition of _EIEX4
Multiple definition of _EIEX5
memory overlap at 0x0 for RSEG1
memory overlap at 0x1 for RSEG1
memory overlap at 0x2 for RSEG1
memory overlap at 0x3 for RSEG1
memory overlap at 0x4 for RSEG1
memory overlap at 0x5 for RSEG1
memory overlap at 0x6 for RSEG1
memory overlap at 0x7 for RSEG1
memory overlap at 0x8 for RSEG1
memory overlap at 0x9 for RSEG1
memory overlap at 0xA for RSEG1
memory overlap at 0xB for RSEG1
memory overlap at 0xC for RSEG1
memory overlap at 0xD for RSEG1
memory overlap at 0xE for RSEG1
memory overlap at 0xF for RSEG1
memory overlap at 0x10 for RSEG1
memory overlap at 0x11 for RSEG1

今度はこんなに~

とりあえず「EIEX6」が含まれているファイルを探すと、次の4ファイルありました。
ezregs.h
ezregs.inc
ez2regs.h
ez2regs.inc

ezregsとez2regsの両方が使われてるってことかな。

ところが、ezregsを呼び出しているファイルを探すと、存在しません。
が、ez2regsの両ファイルには
If you modify the register definitions below, please regenerate the file
    "ezregs.inc" which includes the same basic information for assembly inclusion.
と書いてあるので、誰かが呼んでいるのだろうと思うことにして、

ezregsの両ファイルから、さきの2群をもう一度コメントアウト。

同じのが出る~~
では、ezregsとez2regsの計4ファイルからコメントアウトしてみましょう。


fw.c:210: error 20: Undefined identifier 'EUSB'

もう、面倒になってきちゃった(苦笑)

2013年11月18日月曜日

SDCCによるFX2LPのFirmware開発に再挑戦 その1

(本投稿中、「&」や「>」、「\\\」といった表示がありますが、直しても直しても戻ってしまうので諦めました。それぞれ1バイト文字の&、>、¥のことです。すみません)


FX2LP(EZ-USB)を使った「変なキーボード」の制作ですが、
どうにも、フリー版のプログラムサイズの問題に引っかかってしまい。
数年前にも挑戦して挫折した、SDCCによるコンパイルに、再挑戦してみます。


まずは、pfenrirさんちの記事のサンプルをkeilでコンパイルしてみます。
pfenrirさん、ありがとうございます。勝手に使ってます。すみません。

最近のμVisionで開くと、いろいろパスが変わっていますので、修正します。
Target 1 の Source Group 1 に入っているファイルもパスが変わっていてペケ印がついていますので、これにも対応します。

Options for Tariget 'Target1' の Output タブの下部、Run User Program の1つ目に、通常、
C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.0\Bin\hex2bix -i -f 0xC2 -o bulkloop.iic bulkloop.hex
のように入れますが、このファイルの指定時にコンパイルするフォルダを指定します↓
C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.0\Bin\hex2bix -i -f 0xC2 -o .\build_by_keil\bulkloop.iic .\build_by_keil\bulkloop.hex


で、コンパイルすると、
C:\CYPRESS\USB\CY3684_EZ-USB_FX2LP_DVK\1.0\TARGET\INC\LPREGS.INC(266): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
などと言われますので、その部分をコメントアウトします。

もう一度コンパイルすると、

エラーなくできました。iicファイルもできています。

他にもなんかいじくったかもしれませんが、記憶が曖昧で書けない…

はじめ、hexファイルが出来なくて困っていたんですが、projectのoptionを開いてチェックボックスのチェックを一旦外してOKしてからまた入れる、というのを繰り返したら、できました。

FX2LPにダウンロードしてまでは確認していませんが、もらってきたソースでiicファイルまで動くことが確認できました。





では、同じソースを、SDCCを使ってコンパイルしましょう。


準備:
まずは、SDCC-3.3.0 をインストールしました。

次に、mingw-get-setup.exe をインストールしました。
さらに、 C:\MinGW\bin にある mingw-get.exe を起動し、
All Packages
    MinGW
        MinGW Base System
にある、 mingw32-base のチェックボックスをクリックして、"Mark for Installation" を選び、メニュー Installation - Apply Changes を選んでインストールしました。
同様に、
    MSYS
        MSYS Base System
にある、msys-base をインストールしました。

MSYSのシェルは、
C:\MinGW\msys\1.0\msys.bat を開くと起動しました。



pfenrirさんちで公開されているヘッダファイルをまとめて一つのフォルダに保存し、makefileの中ではじめに参照するように設定します。


MSYSシェルを起動してmakefileのあるフォルダまでcdで移動して、makeコマンドを発行しました。

こんなん出ました:
sed: -e expression #2, char 17: unknown option to `s'

おそらく、makefileの
cat tempfile | sed -e 's/^+.*//g' -e 's/[^\.]*\.rel/$(BUILD_DIR)\/&/g' >> $(BUILD_DIR)/depend.inc; \
の部分から来ていると思うのですが、なんだかわかりません。

(以下、素人による原因究明過程ですんでひと目で問題点がお分かりになる方には単なる駄文長文ですね。ごめんなさい。)


ここで、このtempfileの内容を取得したものを示しますね。
fw.rel: fw.c c:/SDCC/pfenrir_inc/fx2.h c:/SDCC/pfenrir_inc/fx2regs.h \
c:/SDCC/pfenrir_inc/syncdly.h
+ c:\PROGRA~1\SDCC\bin\sdcpp.exe -nostdinc -Wall -MM -I"c:/SDCC/pfenrir_inc" -obj-ext=.rel -D__SDCC_MODEL_SMALL -DSDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -DSDCC_FLOAT_REENT -D__SDCC=3_3_1 -DSDCC=331 -D__SDCC_REVISION=8894 -DSDCC_REVISION=8894 -D__SDCC_mcs51 -DSDCC_mcs51 -D__mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "c:\Program Files\SDCC\bin\..\include\mcs51" -isystem "c:\Program Files\SDCC\bin\..\include" "fw.c"
periph.rel: periph.c c:/SDCC/pfenrir_inc/fx2.h \
c:/SDCC/pfenrir_inc/fx2regs.h c:/SDCC/pfenrir_inc/syncdly.h
+ c:\PROGRA~1\SDCC\bin\sdcpp.exe -nostdinc -Wall -MM -I"c:/SDCC/pfenrir_inc" -obj-ext=.rel -D__SDCC_MODEL_SMALL -DSDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -DSDCC_FLOAT_REENT -D__SDCC=3_3_1 -DSDCC=331 -D__SDCC_REVISION=8894 -DSDCC_REVISION=8894 -D__SDCC_mcs51 -DSDCC_mcs51 -D__mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "c:\Program Files\SDCC\bin\..\include\mcs51" -isystem "c:\Program Files\SDCC\bin\..\include" "periph.c"

「cat」はファイルの中身を表示するコマンドらしいので、続く「|」によって「sed」にファイルを渡しているようです。
なので、基本的な「sed」の使い方に則って
sed -e 's/^+.*//g' -e 's/[^\.]*\.rel/./build_by_sdcc\/&/g' tempfile > ./build_by_sdcc/depend.inc
のように書いても同じことができるはず。
やってみると、同じエラーが出ますね。

1つ目の変換指定だけにして実行すると、エラーなく動きました。
sed 's/^+.*//g'  ./build_by_sdcc/tempfile.txt > ./build_by_sdcc/depend.inc

検索文字列の指定は「^」は行頭を指すので、行頭に'+'があって、「.*」は任意の文字がゼロ個以上ということ、
置換文字列は指定されていないので見つけたら削除するとうことになります。
最後の「g」は見つけたものすべてを変換せよということらしいです。
合計すると実行結果は
fw.rel: fw.c c:/SDCC/pfenrir_inc/fx2.h c:/SDCC/pfenrir_inc/fx2regs.h \
 c:/SDCC/pfenrir_inc/syncdly.h
periph.rel: periph.c c:/SDCC/pfenrir_inc/fx2.h \
 c:/SDCC/pfenrir_inc/fx2regs.h c:/SDCC/pfenrir_inc/syncdly.h
となるのは理解出来ました。


問題の2つ目の変換指定「s/[^\.]*\.rel/./build_by_sdcc\/&/g」について。
検索文字列は、「\.」が任意の文字ではなくてピリオドそのものを指し、「[^\.]」なのでピリオドではない1文字、後ろに「*」があるので「[^\.]*」はピリオドではない長さゼロ以上の文字列、
「\.rel」は文字列'.rel'そのものを指す。合計してウィンドウズのワイルドカード的に書くと'*.rel'ということですね。
置換文字列は、あれ?どこからどこまでだ?
「./build_by_sdcc\/&」かな?でも、sedは検索文字列と置換文字列、オプションの区切りにスラッシュを使うのでこのままじゃダメな気がする。

「s/[^\.]*\.rel/\.\/build_by_sdcc\\\/&/g」にしてみたら、エラーはでなくなりました。
しかーーし、
2つ目のだけを実行したファイルを見ると
./build_by_sdcc\/fw.rel: fw.c c:/SDCC/pfenrir_inc/fx2.h c:/SDCC/pfenrir_inc/fx2regs.h \
 c:/SDCC/pfenrir_inc/syncdly.h
+ c:\PROGRA~1\SDCC\bin\sdcpp.exe -nostdinc -Wall -MM -I"c:\SDCC\./build_by_sdcc\/pfenrir_inc" -obj-ext=.rel -D__SDCC_MODEL_SMALL -DSDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -DSDCC_FLOAT_REENT -D__SDCC=3_3_1 -DSDCC=331 -D__SDCC_REVISION=8894 -DSDCC_REVISION=8894 -D__SDCC_mcs51 -DSDCC_mcs51 -D__mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "c:\Program Files\SDCC\bin\..\include\mcs51" -isystem "c:\Program Files\SDCC\bin\..\include"  "fw.c"
./build_by_sdcc\/periph.rel: periph.c c:/SDCC/pfenrir_inc/fx2.h \
 c:/SDCC/pfenrir_inc/fx2regs.h c:/SDCC/pfenrir_inc/syncdly.h
+ c:\PROGRA~1\SDCC\bin\sdcpp.exe -nostdinc -Wall -MM -I"c:\SDCC\./build_by_sdcc\/pfenrir_inc" -obj-ext=.rel -D__SDCC_MODEL_SMALL -DSDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -DSDCC_FLOAT_REENT -D__SDCC=3_3_1 -DSDCC=331 -D__SDCC_REVISION=8894 -DSDCC_REVISION=8894 -D__SDCC_mcs51 -DSDCC_mcs51 -D__mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "c:\Program Files\SDCC\bin\..\include\mcs51" -isystem "c:\Program Files\SDCC\bin\..\include"  "periph.c" 
./build_by_sdcc\/fw.rel …「\/」なんて、どんなパスだよ、ということで
「s/[^\.]*\.rel/\.\/build_by_sdcc\/&/g」とするとできました。

(ということは、「&」は検索文字列そのものを指しているみたいですね。だって、発見した'fw.rel'が消えずにあるので)

上記を合わせて、コマンドは
もとの
cat tempfile | sed -e 's/^+.*//g' -e 's/[^\.]*\.rel/$(BUILD_DIR)\/&/g' >>  $(BUILD_DIR)/depend.inc; \
から
sed -e 's/^+.*//g' -e 's/[^\.]*\.rel/\.\/build_by_sdcc\/&/g' .tempfile >> ./build_by_sdcc/depend.inc; \
になるでしょう。

 make 1> ./build_by_sdcc/make.txt 2>&1
とコマンド発行して結果を取得しましょう。

ちなみに ./build_by_sdcc/depend.inc はこんな感じです。c:/SDCC/p.....って、変なパスだなぁ。これで動くのかね?
./build_by_sdcc/fw.rel: fw.c c:/SDCC/pfenrir_inc/fx2.h c:/SDCC/pfenrir_inc/fx2regs.h \
 c:/SDCC/pfenrir_inc/syncdly.h
./build_by_sdcc/periph.rel: periph.c c:/SDCC/pfenrir_inc/fx2.h \
 c:/SDCC/pfenrir_inc/fx2regs.h c:/SDCC/pfenrir_inc/syncdly.h

makeは、sedのあとで上の depend.inc をインクルードして実行するわけですが…
なんか、sdccさんは、ソースファイルの内容がお気に召さないご様子です…
sdcc -c -V --debug --opt-code-speed --model-small -I"C:\SDCC\pfenrir_inc" -I"c:\program files\sdcc\include" -I"C:\Keil\C51\INC" -I"C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.0\Target\Inc" -I..//include -o build_by_sdcc/fw.rel fw.c
+ c:\PROGRA~1\SDCC\bin\sdcpp.exe -nostdinc -Wall -I"C:\SDCC\pfenrir_inc" -I"c:\program files\sdcc\include" -I"C:\Keil\C51\INC" -I"C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.0\Target\Inc" -I"..//include" -obj-ext=.rel -D__SDCC_MODEL_SMALL -DSDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -DSDCC_FLOAT_REENT -D__SDCC=3_3_1 -DSDCC=331 -D__SDCC_REVISION=8894 -DSDCC_REVISION=8894 -D__SDCC_mcs51 -DSDCC_mcs51 -D__mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "c:\Program Files\SDCC\bin\..\include\mcs51" -isystem "c:\Program Files\SDCC\bin\..\include"  "fw.c"
sdcpp.exe: fatal error: when writing output to : Invalid argument
C:/SDCC/pfenrir_inc/fx2.h:166: syntax error: token -> 'BOOL' ; column 16
心配した変なファイルパスは通っているようですね。スゴイ変な感じ。ありがたいけど。

fx2.hは、結局、
https://raw.github.com/stefanrauch/bel_projects/master/cy7/cyfx2usbuart/fx2.h
から取得したものを使用しました。

fx2.hの"BOOL"がお気に召さないのは、SDCCが"bit"を解釈してくれない(型として持ってない?)ので、
typedef bit             BOOL;
の前に、
#define bit __bit
が追加されています。"__bit"とするとわかってくれるみたいです。

さらに、
extern code BYTE   USB_AutoVector;
でエラーが出ました。
SDCCでは"__code"と書くべきらしいので、直前に
#define code __code
が追加されています。

fx2regs.hも、結局
https://raw.github.com/stefanrauch/bel_projects/master/cy7/cyfx2usbuart/fx2regs.h
を取得して使用しました。

xcode at (0xE400) hogehoge;
のようなところは
__xdata __at(0xE400) hogehoge;
と書くと良いようで、
#define at __at
#define xdata __xdata
が追加されています。


fx2sdly.hも
https://raw.github.com/stefanrauch/bel_projects/0d04410aaf9fdf08728649f722dc5bae1083dc65/cy7/softuart/fx2sdly.h
から取得して使用しました。

その他、
intrins.h
の冒頭部分を
#ifndef _nop_
#ifndef SDCC //added 2013-11-17
#define _nop_() { \
  _asm \
    nop \
  _endasm; \
}
#else//added 2013-11-17 bigin
#define _nop_() { \
  __asm \
    nop \
  __endasm; \
}
#endif//added 2013-11-17 end
#endif
としました。


makefileにある"AS = asx8051"なんですが、どうやら名前が変わったようです。
"AS = sdas8051"とすることで動きました。


fw.c の
//-----------------------------------------------------------------------------
// Interrupt Functions For SDCC
//-----------------------------------------------------------------------------
#ifdef SDCC
の下に、
#ifndef interrupt
#define interrupt __interrupt
#endif
を追加しました。

fw.c と periph.cで、
#include "syncdly.h"
をコメントアウトして
#include "fx2sdly.h"
を足しました。


他にもちょこちょこと触った気がしますが
細かくは覚えてなくて(汗)


この段階でのmakeの結果は
export PATH=/usr/bin:/usr/local/bin:$PATH; \
rm -f ./build_by_sdcc/depend.inc; \
for i in fw.c periph.c; do \
sdcc -E -MMM -I../pfenrir_inc -V  $i 1>> tempfile; \
if ! [ $? = 0 ]; then \
rm -f tempfile; \
exit 1; \
fi; \
done; \
#cat tempfile | sed -e 's/^+.*//g' -e 's/[^\.]*\.rel/./build_by_sdcc\/&/g' >> ./build_by_sdcc/depend.inc; \
sed -e 's/^+.*//g' -e 's/[^\.]*\.rel/\.\/build_by_sdcc\/&/g' tempfile > ./build_by_sdcc/depend.inc; \
cat tempfile > ./build_by_sdcc/tempfile.txt; \
rm -f tempfile
export PATH=/usr/bin:/usr/local/bin:$PATH; \
cp USBJmpTb.asm ./build_by_sdcc/; \
cd ./build_by_sdcc; \
sdas8051 -plosgff USBJmpTb.asm
export PATH=/usr/bin:/usr/local/bin:$PATH; \
cp dscr.asm ./build_by_sdcc/; \
cd ./build_by_sdcc; \
sdas8051 -plosgff dscr.asm
export PATH=/usr/bin:/usr/local/bin:$PATH; \
sdcc -V --debug --model-small --xram-loc 0xe000 --xram-size 0x200 --iram-size 0x100 -I../pfenrir_inc -o build_by_sdcc/bulkloop.hex -L ../pfenrir_lib -l ezusb build_by_sdcc/fw.rel build_by_sdcc/periph.rel build_by_sdcc/USBJmpTb.rel build_by_sdcc/dscr.rel
?ASlink-Error-Bad offset in library file ../pfenrir_lib/ezusb.lib(discon)
+ c:\PROGRA~1\SDCC\bin\sdld.exe -nf "build_by_sdcc/bulkloop.lk"
+ c:\PROGRA~1\SDCC\bin\sdld.exe -nf "build_by_sdcc/bulkloop.lk" returned errorcode 1
make: *** [build_by_sdcc/bulkloop.hex] Error 1
なんでしょうねぇ。
exusb.lib が気に入らないんでしょうか。









2013年10月28日月曜日

先週末のfirmware実験 USB (funny keyboard v2b) やっとアナログジョイスティックが動いたよ

さてさて、firmware実験です。

前回、トラックボールモジュールにコりたので、アナログジョイスティックにする、と宣言していたわけですが、
やっと回路を組み直して、実験に成功しました。

まあ、失敗やら二度手間やらは下に書くとして、

今後やることは


  1. スティックを丸く回してるのに、画面上ではマウスカーソルが四角く動くので、その改善。
  2. CapsLock等のインジケータの実装
  3. スクロールマウスへの拡張
  4. Ctrl+C Ctrl+v Ctrl+x の送出を単独のキーで行う


といったところでしょうか。
もちろん、普段使うためにはケースというか、外装をしっかりかっこよくする必要がある、なんて思いますが。

1番のは、当然といえば当然ですが、アナログジョイスティックの棒は、くるくる動かすと、丸く動きます。ゲームコントローラーでも、そうですよね。四角く動いて四隅のカドで引っかかる、なんてことはないわけです。そこがなんとまあ、落とし穴でした。
上下、左右の端までスティックを倒したときは、その出力は最大または最小近くまでになりますねー。
しかし、斜め45度のときは、ルート2の逆数(1/(2)^0.5)にしかならないんですね。


しかし、カーソルの見た目の速度は縦、横それぞれの成分のベクトルの足し算のはずなので、
それぞれがルート2の逆数だとしても足せば1になりそうなもの。

実際には、ななめにカーソルを動かすと、縦だけ、横だけの場合よりもゆっくり動きます。

しかし、くりくりとスティックを回すと四角く動くという…

うーん、単にADコンバータからの出力をカーソルの移動量に変換するときの、300から400までは+2として扱う、という幅の置き方の問題なのかもしれません。



で、失敗談など…

左手側にひっつける、FX2LPから線を引き出すための基板(ハンダ付け、仮組み 先週末の変なキーボード3)をもう一回作りなおしたりして。
ADコンバータのGNDと電源を間違えて変なニオイさせてみたり。

ADコンバータに接続するFX2のピンの入出力設定は、自分で設定していたら動かなくて。
defaultのままでよかったみたい。

左手側にひっつける、FX2LPから線を引き出すための基板(ハンダ付け、仮組み 先週末の変なキーボード3)については、FX2LPのモジュール基板から出ているコネクタではポートごとにピンが並んでなかったりして、配線の確認時に苦労するんですが、それが済んでしまえばどこからどの線が出ていようが全く関係ありません。
なので、前回作成したものは、なんでもいいから引き出しやすいように作ってみた、というものでした。
が、やっぱり、「調子悪いなぁ、外さなきゃわかんないなぁ」ということが結構あったり、何度確認しても不安だったりして、配線引き出し用の基板は、工作のしやすさよりもヒューマンフレンドリーさを重視することにしました。
さらに、前回までは使わない線まで一生懸命引き出していたのですが、今回はパスっと割愛。

後日写真載せますね。
作ってすぐ実験したくて、写真撮るの忘れてました。

ADコンバータMCP3002のデータシートには、4ピンにはVSS (SSは添字で小さい)、8ピンにはVDD/VREF(DDとREFは添字)と書いてあるのですがどっちがGNDか、わかりにくい。なんだか適当に「こっちだろ」と思い込んで接続していたら、電子部品特有のきな臭いニオイがしてきます。
触ったら… 熱い!!! お亡くなりになったかどうか確かめてませんが、とりあえずもうひとつ持っていたので交換して実験継続。

以上

2013年10月9日水曜日

Blenderに入れたら便利そうなaddon

Blenderに入れたら便利そうなaddonを。
まだ入れて使ってないので、感想は後日。

情報元は「Blenderアドオン図鑑 - tomo@web - Google Sites」です
ありがとうございます。

Measure Panel
体積を計算できるらしい。
ゲームエンジンで動かす物の重さを体積を元に決めたりできるかも。

Instructions

Interface/Menu Overview
Once enabled, you can find the menu for this script in the properties panel. "N" key.
Scripts 3D interaction Measure Panel.jpg
This script adds a line between two points, either the cursor & a selected object or two selected objects.
The script returns the value (distance/length) of the line in the script interface & in the 3D view.





API Navigator
スクリプト書くときに重宝するかも
UsageYou can browse through the tree structure of the api. Each child object appears in a list
that tries to be representative of its type. These lists are :
   * Items (for an iterable object)
   * Item Values (for an iterable object wich only support index)
   * Modules
   * Types
   * Properties
   * Structs and Functions
   * Methods and Functions
   * Attributes
   * Inaccessible (some objects may be listed but inaccessible)
The lists can be filtered to help search in the tree. Just enter the text in the filter section. It is also possible to explore other modules. Go to the root and select it from the list of available modules. It will be imported dynamically.

In the text section, some information is displayed. The type of the object, what it returns, and its docstring. We could hope that these docstrings will be as descriptive as possible. This text data block named api_doc_ can be toggled on and off with the Escape key.



時間なくて2つしか見れなかった…

2013年9月25日水曜日

ちょっと電子工作は一休みです…

なんで一休みか、というと、
9月14日にモンハン4が発売になり、3DSに突き刺して使うカードが手に入らなかったので
同日ダウンロードしました。
それからというもの、狩りの毎日です。  といってもこれまでと変わらないんですが。

頭の中にはアナログジョイスティックの配線の仕方がぐるぐる回ってるんですが。
次はフルフルに行くか、リオレイアさんにしておくか…のほうが強くぐるぐるしてる感じです。

体は一つしかないもんなぁ、という秋の夜長です。

では~