2012年11月24日土曜日
2012年11月18日日曜日
Pixelmatorで文字の輪郭を描く。
スクリーンショットへ文字を入れたりするときは、文字に輪郭を付けておくと、背景と混ざらなくて良い。
Skitchなんかだと、デフォルトで太めの輪郭が入るしね。同じことをPixelmatorでやってみた。
2012年11月17日土曜日
2012年11月10日土曜日
2012年11月9日金曜日
Eagleのimport-bmp.ulpで読み込める画像を作る
Pixelmatorから書き出したBitmapは、import-bmp.ulpで読めないっぽい。→ 参考
Too many pixels y direction Anzahl der Pixel in Y zu grossなんて言われる。 Imagemagickで変換してみる。
convert logo.jpg -colors 2 logo_small.bmpconvertで減色指定したり、eagleのimport-bmp.ulpで読み込むときに色を指定したりできるけど、やっぱりPixelmatorとかで白黒のデータを作ってしまうのが、直感的で良い。
2012年10月24日水曜日
brew cleanupしてもkeg-onlyなパッケージが残る。
$ brew cleanup Warning: Skipping (old) keg-only: /usr/local/Cellar/cairo/1.10.2 Warning: Skipping (old) keg-only: /usr/local/Cellar/cairo/1.12.2ってなる。 一部のパッケージが、/usr/local/libにあるシンボリックリンクでなくて、/usr/local/Cellar配下にインストールされたものを直接参照しちゃったりしてるためらすぃ。なので、この場合cairoを参照するライブラリを探す。
$ brew uses cairo abiword clutter gerbv gtk+ libgaiagraphics pdf2svg cairomm cogl ggobi gtk+3 pango py2cairo
--installed
を付けると、インストール済みのものを絞り込める。
$ brew uses --installed cairo cairomm gtk+ pangoなので、
$ brew uninstall cairomm gtk+ pango $ brew install cairomm gtk+ pangoしたら、
$ brew cleanup Removing: /usr/local/Cellar/cairo/1.10.2... Removing: /usr/local/Cellar/cairo/1.12.2...で綺麗になりましたとさ。 ここを参考にしたけど、そのまんまだとダメだったわー。
2012年9月26日水曜日
2012年9月17日月曜日
カードケース作った。
TSUTAYAで見かけた雑誌のおまけ。
革は切ってあるし、縫い穴も開いてるし、ほんと縫うだけ。
トコノールといかいうので磨くと良いらしいが、そこまで資機材が揃っていないので、塗ったところで終了。
なんか革ズレちゃったのよね。
2012年8月17日金曜日
FusionPCBで基板を作ってみた。
SeeedStudioにFusionPCBを2件発注してみた。2件とも注文内容は以下のとおり。
- Fusion PCB Service (PCB08511P) = $9.90
- PCB Qty. 10
- Layer 2
- PCB Thickness 1.6mm
- PCB Dimension 5cm Max*5cm Max
- PCB Color Green
- Surface Finish Hasl
- E-Test 50% E-test
- Registered Air Parcel (Weight: 0.08kg. Delivery Time: 0-30 days): $3.86
SeeedStudioからの情報
注文1 | 注文2 | |
---|---|---|
8/3(金) | 発注、支払い、データ送信 | |
8/6(月) | ステータスが"In production"に | 発注、支払い、データ送信 |
8/7(火) | ステータスが"In production"に | |
8/15(水) | ステータスが"Shipped"に | ステータスが"Shipped"に |
8/16(木) | ステータスが"Traceable"に | ステータスが"Traceable"に |
郵便局からの情報
SeeedStudioのサイトからはHK Postの追跡サービスに飛べるようになっているが、JPでも同様の追跡ができるので、JPで追跡するのが便利。注文1 | 注文2 | |
---|---|---|
8/16 18:27 | 引受(HongKong) | 引受(HongKong) |
8/18 15:31 | 国際交換支店から発送(KOWLOON D) | |
8/18 15:32 | 国際交換支店から発送(KOWLOON D) | |
8/19 17:13 | 国際交換支店に到着(成田国際空港支店) | |
8/19 18:23 | 国際交換支店に到着(成田国際空港支店) | |
8/20 09:00 | 通関手続中(成田国際空港支店) | 通関手続中(成田国際空港支店) |
8/20 13:23 | 国際交換支店から発送(成田国際空港支店) | 国際交換支店から発送(成田国際空港支店) |
8/21 6:55 | 到着(XXX支店) | 到着(XXX支店) |
2012年8月15日水曜日
debなところでEagle6
Eagle6をdebな環境(DebianとかUbuntuとか)で動かそうと(インストールしようと)すると、ライブラリ足らずでインストールできない。
ここにあるとおりで。パーミッションとかインストール先は、お好みででで。
$ wget ftp://ftp.cadsoft.de/eagle/program/6.0/eagle-lin-6.0.0.run $ sed -e '1,/^__DATA__$/d' eagle-lin-6.0.0.run > eagle-lin-6.0.0.tar.bz2 $ tar xvjf eagle-lin-6.0.0.tar.bz2 $ cd eagle-6.0.0/bin $ wget http://dl.dropbox.com/u/4295670/eagle_libs.tar.bz2 $ tar xvjf eagle_libs.tar.bz2 $ mv eagle eagle.orig $ echo 'LD_LIBRARY_PATH="$(dirname "$0")" "$(dirname "$0")/eagle.orig" $@' > eagle $ chmod a+x eagle
2012年8月11日土曜日
Damosが吐いたソース
ヘッダ
#ifndef CRUISECONTROL_H_ #define CRUISECONTROL_H_ #include#ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct { <09>double desiredSpeed; <09>double actualSpeed; } CruiseControl_Input; typedef struct { <09>double power; } CruiseControl_Output; void CruiseControl_initialize(void); void CruiseControl_execute(const CruiseControl_Input *input, CruiseControl_Output *output); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* CRUISECONTROL_H_ */
実装
#include#include "CruiseControl.h" typedef struct { double sum[2]; uint_fast8_t sum_index; } CruiseControl_DiscreteIntegrator_Context; typedef struct { CruiseControl_DiscreteIntegrator_Context CruiseControl_DiscreteIntegrator; } CruiseControl_Context; typedef struct { double data[2]; } CruiseControl_Vector; static CruiseControl_Context CruiseControl_context; void CruiseControl_initialize(void) { /* DiscreteIntegrator */ { CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index = 0; { CruiseControl_context.CruiseControl_DiscreteIntegrator.sum[CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index] = 0.0; } } } void CruiseControl_execute(const CruiseControl_Input *input, CruiseControl_Output *output) { double CruiseControl_Sum_y; double CruiseControl_Gain_y; double CruiseControl_DiscreteIntegrator_y; int32_t CruiseControl_Constant_y; double CruiseControl_Sum2_y; double CruiseControl_Saturation_y; uint_fast8_t CruiseControl_Compare_y; double CruiseControl_Switch_y; /* * Compute outputs */ /* Sum */ { CruiseControl_Vector sum_input = { { input->desiredSpeed, input->actualSpeed } }; { CruiseControl_Sum_y = (1.0 * sum_input.data[INT32_C(0)] + -1.0 * sum_input.data[INT32_C(1)]); } } /* Gain */ { { CruiseControl_Gain_y = 0.1 * CruiseControl_Sum_y; } } /* DiscreteIntegrator */ { { CruiseControl_DiscreteIntegrator_y = CruiseControl_context.CruiseControl_DiscreteIntegrator.sum[CruiseControl_context.CruiseControl_DiscreteIntegrator.s } } /* Constant */ { { CruiseControl_Constant_y = INT32_C(0); } } /* Sum2 */ { CruiseControl_Vector sum2_input = { { CruiseControl_Gain_y, CruiseControl_DiscreteIntegrator_y } }; { CruiseControl_Sum2_y = (1.0 * sum2_input.data[INT32_C(0)] + 1.0 * sum2_input.data[INT32_C(1)]); } } /* Saturation */ { { double ifresult; if (CruiseControl_Sum2_y > 1.0) { ifresult = 1.0; } else { double ifresult2; if (CruiseControl_Sum2_y < -1.0) { ifresult2 = -1.0; } else { ifresult2 = CruiseControl_Sum2_y; } ifresult = ifresult2; } CruiseControl_Saturation_y = ifresult; } } /* Compare */ { { CruiseControl_Compare_y = CruiseControl_Sum2_y == CruiseControl_Saturation_y; } } /* Power */ { output->power = CruiseControl_Saturation_y; } /* Switch */ { { double ifresult; if (CruiseControl_Compare_y) { ifresult = CruiseControl_Sum_y; } else { ifresult = ((double) (CruiseControl_Constant_y)); } CruiseControl_Switch_y = ifresult; } } /* * Update states */ /* DiscreteIntegrator */ { { CruiseControl_context.CruiseControl_DiscreteIntegrator.sum[(CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index + 1) % 2] = CruiseControl_c } CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index = (CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index + 1) % 2; } }
2012年7月5日木曜日
2012年7月1日日曜日
イヤホンのケーブルを作ったよ
愛用のShure-315のケーブルが断線気味。頭を傾ければカサカサと。買い替えるかなーって見ると、どれも5,000円オーバー。ちょっとなー。というわけで、自分で作ってみたさ。
材料
以下、揃えた。ケーブルは2m買って90cmで仕上げた。- MMCXコネクタ(ケーブル用)[MMCX-JC174B]
- HPC-26T ヘッドフォン用PCOCC-A平行ケーブル
- 3.5ステレオミニプラグ S
- PETチューブ レッド 3.175mm (1/8インチ)
- 熱収縮チューブ(ダイソーにあったやつ)
作ったもの
全体は90cmになるようにしたかったんだけど、両端を加工したら少し短くなった。まぁそりゃそうだ。 耳側。そこら辺にあったクリップを伸ばして芯にした。ちょっと固い気もするけど。使ったケーブルが、すごく柔らかいので、多分チューブを被っていない部分で断線しそうな気がする。 U字の分岐。熱収縮チューブで補強しただけ。赤いPETチューブは、細いほう(耳側)と太いほう(ジャック側)で、同じ太さのもの。 ジャック側。今回は、一番お安いもので。思ったより綺麗に仕上がったし、ジャックも良いものにすれば良かったかも。やってみて
今回は、純正品の断線があったところから始まっているので音質とかよりも、短過ぎず長過ぎず、ちょっとカッコ良い感じを意識して作った。実は、熱収縮チューブを入れ忘れたところとか、末端処理を真面目にしていなかったりと、見えないところがグデグデになってしまっている。耳側のほうまで、PETケーブルを被せたけど、左右で擦れ合って、ガサガサうるさいかも。これは失敗。
音質は、全体的にクリアになって、レベルが一段上がったのかなー?という感じ。真面目に聞き比べてないのだけど。ま、全部合わせて、2000円もあれば、お好みに作れることが分かったのが良かった。また時間のあるときに作ってみようと思う。
2012年5月5日土曜日
2012年4月20日金曜日
空を飛んで、空飛ぶものがやってきた。
quadcopterのパーツ類を揃えようと思って、まずはラジコン系パーツ。
買ったもの
- HXT 2mm Gold Connector w/ Protector (10pcs/set)
- Turnigy 3mm Philips Head Screwdriver
- Turnigy 5.5mm Hex Socket Screwdriver
- HobbyKing 6A ESC 0.5A UBEC
- 3x2 Propeller (Counter Rotating) (5Pcs/Bag)
- 3x2 Propellers (5Pcs/Bag)
- Hard Steel Tweezer Set
- Hobbyking Fiberglass Micro Quadcopter Frame
- Turnigy 1811 Brushless Motor 2000kv
- 5x3 Propellers (Standard and Counter Rotatin
着弾するまで
- 4月2日に発注。
- 4月5日に発送。
- 4月7日に着弾。
着弾したよ
以外と小振りな梱包やった。 で、中身の半分はエアクッション。底側にエアクッションは無かったなー。 でーん。2012年4月15日日曜日
無安定マルチバイブレータを空中配線してみた。
ちょっと見た目重視でLEDをチカチカさせたかったので空中配線で無安定マルチバイブレータを作ってみた。
空中配線といっても、ほぼ二次元に配置。真ん中が電源。クリップでつまんでいるのがGND。GNDは対角線上にもう一本ある。
ブレッドボードにセット!!電源は、LEDをドライブできて、トランジスタの定格5Vを越えない範囲であれば良いので、CR2032(3V)を使ってみた。
動かすと、こんな感じ。
背景が白ってカッコ良く撮れるね。
2012年4月5日木曜日
QuartzComposerが無ぁぁぁい!!
Xcodeを4.3にしたら、Quartz Composerが無くなっちゃったよ。
別パッケージになったので、ダウンロードしろや、ということらしい。
Downloads for Apple DevelopersなるところからGraphics Tools for Xcode - March 2012を選択してダウンロード。
メデタシ、メデタシ。
2012年3月13日火曜日
台湾を出国したみたい。
発送されて着々と手元に近付いている。
まず、お願したところのログ。
3月1日に発注して、その直後にガーバーとか送った。バタバタしててシルクにオーダー番号入れるの忘れたけど、作ってもらえたみたい。ラッキー。2日に"In production"になってるけど、3日に
Dear customer, Your PCB is under processing, If the file and design meets requirements, they will be processed and shipped in 4-6 working days. Thanks monkeyっつうメールが来た。「もし、要求を満たしているのであれば、、、」ってことは、2日の段階では未だ作ってなかったってことかね? その後は何も連絡もなく、7日に発送。まぁ、何かが出来上がったのでしょう。香港郵政サンのトラッキングナンバーが振られたので確認。
- 受け取ったよ。
- 出国するよ。(税関かな?)
- 出国したよ。
2012年3月4日日曜日
LPCXpressoを切ってみた。
まずは、購入時にジャンプしてある半田を外してみた。
おりゃおりゃと、ひたすら吸わせていくと、
綺麗に取れました。っと。でわ、次は、ターゲットとデバッガを切断しちゃいまっせ。今回は、ダイヤモンドカッターで切ります。
軽ぅくなぞってみたり、ぐいっと押し込んでみたり、、、
なんだか、デバッガのほうに寄り過ぎた。
あわわー、ちょっとやり過ぎた。
2012年2月23日木曜日
ADS1102CALを買ってみた
オシロスコープを海の向こうの隣国から買ってみた記録。Attenなどという聞いことも無いメーカーさんの、ADS1102CALというやつ。まぁ、デュアルチャネルで、USBメモリへの保存もできるから、無いよりかは格段に作業効率が上がるはず。
年明け早々の1月2日にオーダー。で、1月8日に発送。以降DHLさんが頑張る。
中国→香港→日本ですね。で、国内は佐川が持ってきました。そういえば、国内に入ったところでDHLから中身の確認があった。通関を通すためだってね。で、その時に「時間帯指定できますか?」と聞いたら、「私の業務じゃないから、カスタマセンターに電話してね」と。で、通関通ったのを確認したあたりで電話。荷物番号伝えると「確認しまーす。。。その荷物は、佐川に受け渡したよ。こちらから佐川に連絡できるけど、どうする?」「佐川の荷物番号教えて」ということで佐川的な荷物番号をゲット。あとは、普通の宅配便と同じ。帰宅後を指定して届けてもらいました。というわけでドーンッ!!
怪しい黒いビニールに包まれていた。
でビリビリとビニールを剥してみると、、、そこには、オシロの箱が。うしし。って、一緒に買ったものは、どこ?超音波センサとジャンプワイヤ買ったんだけどなー。別便なのかなー。そんな連絡何もないし。って、見てみるとオシロの箱が開いておる。まさか。。。
いたっ!!って、オシロ開けたんかい!!仮にも計測機器でっせ。。。まぁ、全ての品が無事届いたから良しとしよう。
LPCXpresso IDEでアセンブラ単位のステップ実行
いつもどおりデバッグを始めるよね。
で、デバッグビューのツールバーには、ステップインとステップオーバーがある。ステップインは、関数内に入る。
ステップオーバーは、関数内を実行してしまい、次の行に進む。
まぁ、ここら辺までは、良いよね。でもさ、OSとかのデバッグとか、インラインアセンブラで書いた部分をデバッグしようとすると、これだと事足りないわけですよ。C言語で書いたプログラムをディスアセンブルしたものの機械語を一つずつステップ実行したいとかなるわけです。そこで、コレ。
押してみると、ビューが変わる。
ディスアセンブルしたものが見えてますね。このままステップオーバーすると、
おぉ。これぞまさに1ステップ!!
そんなわけで、アセンブラ1行ずつをステップ実行する方法でした。
2012年2月21日火曜日
MacでLPCXpresso使いたいのだー。
LPCXpressoの開発をVirtualMachine上でやってみた。
Mac向けの環境が無いんだからしょうがない。
Linuxでは動くので、VirtualBox上でDebianを動かして、そこでやってみた。
- VirtualBoxのインストール
- Debianのインストール
- LPCXpresso-IDEのインストール
登録:
投稿 (Atom)