13/12/29: ATmegaの書き込みが2回目以降できなくなる

1回目は書き込みできるのに、2回目以降、FuseとLockBitは書けるのにプログラムだけ書けない、という現象に遭遇。いろいろ確認した結果、ISPでつかうSPIにぶらさがっているSlaveデバイス中にSSがアクティブHのやつがいたので、そいつが悪さをしていた(MISOに信号を出していた)のが原因の模様。Slaveデバイスを切り離したら書き込みOK。しかしプログラムだけ書き込めない、とか、1回目だけ書き込める、とか、実に紛らわしい。

13/12/28: Win8で、デフォルト保存先をSkyDriveでなくする

勝手にONになっているが、デフォルト保存先をSkyDriveでなくする設定のやりかた。

http://snow-white.cocolog-nifty.com/first/2013/11/windows-81-skyd.html

http://ciao.aoten.jp/ciao/2013/07/office-2013skyd.html

13/12/26: トースターでリフローの温度計測

ダミー基板に熱電対をカプトンテープで張り付ける、というのが現実的か。 http://www3.big.or.jp/~schaft/hardware/reflow/page004.html

13/12/26: XBeeのS1とS2

今まで違いがよくわかってなかったので整理。

  • S1 : IEEE802.15.4規格。1対1や1対nの通信ができる。ブロードキャストはDL=ffff
  • S2 : ZigBee規格。1個のコーディネータが必表。メッシュネットワークを組んでパケットの中継とかをしてくれる。

※(13/12/27追記)S1でのブロードキャスト通信は、DH=0、DL=FFFF(0x0000FFFF)にする。PAN IDは同じに設定しておく。ちなみにX-CTU ver6.2だと、DH=0に設定できない(買い込んでも前の値が残っている)っぽい。X-CTU ver5.2なら大丈夫。

http://mag.switch-science.com/2012/07/20/startup_xbee_s1/

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1481510089

13/12/21: Androidの急速充電

D-(2)とD+(3)を200Ω(またはショートでもOK?)でつなぐと急速充電になる。

13/12/20: Arduinoのブートローダをコマンドラインから書き込む

このあたりでできそう。stk500は,「13/10/16: AVRISPmkIIでコマンドラインから書き込み」あたりを参照。(ただしプログラムの書き込みがうまくいかない・・・AVRStudioからも書き込めなくなってしまった・・・)

http://playground.arduino.cc/Learning/Burn168

13/12/19: VisualC# Express2010で,ファイル保存ダイアログの表示でハング(OSごと)する

このあたりに解決策がある。

http://www.datazx.cn/Forums/ja-JP/bbb113e0-dc54-41fc-a1cc-c70efecea739/action?threadDisplayName=os

this.openFileDialog1.ShowHelp = true;

とするとよい,という謎の解決策もある模様。

13/12/19: ArduinoIDEからATmegaへのブートローダの書き込み方

大きく次の二つがある、ということらしい。 (ArduinoIDEでは、あたかもAVRISPmkIIで書き込めるみたいな選択肢があるが、標準ではできない模様)

13/12/18: 微弱無線機の送信出力の測り方

http://members2.jcom.home.ne.jp/seisuke-y/WeakWave.html

13/12/18: Eagleでメタルマスク用のガーバーデータをつくる

http://www.oyabunn.com/wordpress/eagle/%E3%83%A1%E3%82%BF%E3%83%AB%E3%83%9E%E3%82%B9%E3%82%AF%E7%94%A8%E3%82%AC%E3%83%BC%E3%83%90%E3%83%87%E3%83%BC%E3%82%BF%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95

http://yuki-sato.com/wordpress/2014/02/16/eagle%E3%81%A7%E3%83%A1%E3%82%BF%E3%83%AB%E3%83%9E%E3%82%B9%E3%82%AF%E7%94%A8%E3%82%AC%E3%83%BC%E3%83%90%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B/

13/12/16: Windowsインストーラの作成

VisualC# ExpressとかだとVisualStudioからインストーラをつくれないが、フリーウエアのWiX Editあたりが便利そう。 http://www.02.246.ne.jp/~torutk/windows/wixandwixedit.html

(2013/12/17追試)このあたりの使い方が詳しい。→http://d.hatena.ne.jp/sakurai_youhei/20100818/1282153247

13/12/13: ArduinoのanalogWriteとタイマ

あたりまえといえば当たり前だけど、ArduinoのanalogWriteはTimerのPWMを使っているので、タイマを自分でいじる場合は、どのピンがどのTimerを使っているか、に注意。(これではまった)

13/12/11: Arduinoのprintln()の改行コード

CR+LF、という仕様とのこと。 http://auxin01.wordpress.com/2012/07/11/arduino_crlf/

13/12/11: ArdunoIDEではまった2点(といってもC言語一般の話)

1つめはArduinoに限った話ではないけど、ビットシフト演算子の優先度の話。BCDの変換で

 (d / 10) << 4 + (d % 10);

と書くと、<<は+より優先度が低いので、(4+d%10)ビットシフトされてしまう。

 ((d / 10) << 4) + (d % 10);

と書くのが吉。

あとこれもありがちだけど、グローバル変数とローカル変数で同じ名前の変数を宣言していてもエラーは出ない。が、別の変数領域のどっちをアクセスするか、どうもコンパイラ依存っぽいので、やっぱりさけるべき。

13/12/11: Arduino Pro 3.3V8MHzのFuse

Arduino Pro 3.3V8MHz(外付けオシレータなし)にブートローダを書き込むときのFuseの設定。なかなか見つからなかいので備忘録。

http://robo.mydns.jp/Lecture/index.php?Arduino%2FArduino%20%A4%CE%BC%AB%BA%EE%2FMINIMAL

  • ATmega328 Fuse: E=0xff H=0xda L=0xe2
  • ATmega168 Fuse: E=0xf8 H=0xda L=0xe2

13/12/05: SkyDriveをネットワークドライブに割り当てる

http://yseosoft.wordpress.com/2012/07/24/skydrive-%E3%82%92%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B/

13/12/01: VisualC#でポインタを使う(Bitmapをいじるときなど)ときのunsafe

http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_021/csharp_abc01.html

unsafeを使うには、プロジェクトのプロパティから「unsafeをチェックしない」をチェックする

ちなみにBitmapを直接いじるのはこのあたりを参考に。 http://xptn.dtiblog.com/blog-entry-99.html

13/11/26: ENGINEERの半田吸い取り機SS-02のメンテ

ENGINEERの半田吸い取り機SS-02、便利なんだけどずっと使っていると、ロック部分の金具がすり減るのか、ロックしにくく(orロックしてもすぐ外れる)なってくる。ロックボタンのところのバネを強いもの(長いもの)に変えると、だいぶよくなった。 http://www.engineer.jp/products/solder/hd06/item_04/ss-02

13/11/25: Eagleで部品表を出力

部品表(BOM; Bill of Material)を出すには、bom.ulpを使う。やっぱりEagleは、とりあえずULPってことか。

13/11/24: Eagleで出力したGerberデータのPCBEへ変換

穴の変換で、座標の桁数が小さいときにバグがあったので修正。

#ref(): File not found: "e2p_conv131124.zip" at page "akita/2013"

13/11/22: ArduinoのスケッチのHEXファイルをブランクAVRに書き込む

http://www.ina111.org/archives/212

ただしbuildフォルダをつくってもProgram Filesの中は書き込み制限が厳しいので、build.path=c:\tmpあたりにしておくのがよさそう。

13/11/4: ATmega644PのArduino

Sanduinoが使えそう。 http://sanguino.cc/breadboardsanguino

と思ったらArduinoIDE 1.0では対応してないっぽい。 このあたりを使うのが順当か。 https://code.google.com/p/arduino-atmega644/

13/11/1: AVRISPmkIIの3.3Vでの書き込み

AVR StudioのTool→Programmingで、どうもうまく書き込みができないような気がするんだけど、気のせいだろうか。 電源電圧を5Vにすると普通に書き込めるが、3.3Vだと、Programボタンを押してOK、VerifyもOKそうだけど、動作しているプログラムが書き込む前のもの、のようだ。 データシートを読む限り、Serial Progamming時の電源電圧は1.8〜5.5Vの範囲、とあるので、3.3Vでもできるはずなんだけど、なんでだろう。

(2013/11/8追記)ATtiny10は書き込み時は5Vが必要とデータシート(の1ページ目)に書いてありました。ただ3.3Vで書き込めてなくてもVerifyが通る、というのはまぎらわしい。

13/11/1: 大判プリンタ(EPSON PX-F10000)でポスターを横に回転して印刷する

例えばB1版ポスターをB0ロール紙に90度回転して印刷する場合、プリンタのプロパティから「ポスターレイアウトに配置」をチェックして印刷を開始すると、ロール紙上の好きな位置・向きに印刷を指定できる。

13/10/23: Arduinoの自作ライブラリでdigitalWrite等の標準ライブラリ関数を使う

#include <Arduino.h>

で、Arduino.hをインクルード。

13/10/23: Arduinoで自作ライブラリコンパイル時のエラー

error: two or more data types in declaration of 'size_t'

みたいなエラーがでて、なんだと思って調べてみたら、クラス定義の

class hoge{
  ...
};

の最後のセミコロン(;)がない、というオチ。エラーメッセージからは類推しにくいです。 http://forum.arduino.cc/index.php?topic=36936.0

13/10/17: LEGOブロックのサイズ

ポッチの間隔=8mm、が基本寸法。高さは「ふつうのやつ」がその6/5倍=9.6mm。 http://www.nanolab.t.u-tokyo.ac.jp/~takamasu/mind-micro2.html

13/10/17: いろんなコネクタのピン配置

いちいち調べるのが面倒なので、よく使うものをまとめてみた。

#ref(): File not found: "terminals.png" at page "akita/2013"

#ref(): File not found: "terminals.svg" at page "akita/2013"

13/10/16: AVRISPmkIIでコマンドラインから書き込み

できないことはないようだがけっこうめんどうそう。

http://blog-yama.a-quest.com/?eid=970131

http://www.shol.com/shadow_tech/nostudio.html

13/10/15: Emacsで文字数を数える

M-=で指定範囲の文字数(と行数)を表示。

http://d.hatena.ne.jp/takehikom/20101118/1290023600

13/10/15: 糸とかワイヤーとかのからまらない巻き方

棒に巻く方法。

http://www.youtube.com/watch?v=DNovkZdRl7M

13/10/11: Autodesk 123D Designの操作

操作対象(スケッチの図形とか物体とか)を選んでから操作を選ぶ、という順の操作だと、対象をえらびにくい。が、操作を選んでからだと、その時点で選べる図形しか選べない(Extrudeならスケッチ内の図形のみ、など)ので、操作がやりやすい。

あと奥の方にあるスケッチを選びにくいときは、SolidをHide、SketchだけShow、にした状態にすると選びやすい。

13/10/10: EagleのmicroSDのライブラリ

やはり作っている方がおられる。とりあえず「型番+Eagle」で検索してみるのが吉か。 http://memo.tank.jp/archives/1879

13/10/10: Autodesk 123Dでグリッド配置

Primitiveでは置けないけど、Sketchだとグリッドに配置・描画のときはスナップできるので便利(だけど移動だとできないっぽい?)

13/10/10: Autodesk 123Dで図形を並べて配置する

スケッチを配置するときと、物体(Solid)を配置するときで、少しやり方が違う。 例えば円形に配置する場合、スケッチでは、同一スケッチ内に円と図形を描く→円形配置を選ぶ→並べたいスケッチを選ぶ→配置の中心を、円の中心で指定する。 http://www.youtube.com/watch?v=8nEzlY4i3aQ

物体のときは、円形配置を選ぶ→物体を選ぶ→中心軸にする辺を選ぶ。 http://www.youtube.com/watch?v=9wv3FjkpRro&list=PL7epVYI5EUL6IBfOvzkVlO7wp4AUvfoXT

13/10/10: Eagleでsch/brdで使われている部品をライブラリとして抜き出す

標準でついているexp-project-lbr.ulp、で抜き出して*.lbrとして保存できる。 そこから↓の方法で、自分のライブラリにコピーもできる。

13/10/09: Inkscapeのデフォルト設定を変更する

template/deafult.svgを開き、いろいろ設定をいじって、上書き保存。

http://kattekrab.net/inkscape-change-default-document-properties

13/10/09: Inkscapeの矢印の頭の色を線にあわせる

ワンステップ必要 http://wiki.inkscape.org/wiki/index.php/FAQ_%28Japanese%29#.E3.83.9E.E3.83.BC.E3.82.AB.E3.83.BC_.28.E7.B5.82.E7.82.B9.E3.81.AE.E7.9F.A2.E5.8D.B0.E3.81.AA.E3.81.A9.29_.E3.81.AE.E8.89.B2.E3.82.92.E5.A4.89.E6.9B.B4.E3.81.99.E3.82.8B.E3.81.AB.E3.81.AF.3F

メニューの「エクステンション」→「パスの変形」→「マーカーの色をパスに合わせる」

13/10/08: 微弱無線機RF12BをArduinoで使う

Sparkfunで売ってる、超小型の微弱無線機RF12B https://www.sparkfun.com/products/9582

こいつをつかったBreakoutボードもある。 http://jeelabs.net/projects/hardware/wiki/RFM12B_Board

JeeLabsというところでArduino用ライブラリを作っているみたい。 http://jeelabs.net/pub/docs/jeelib/md_intro_rf12.html

それを使ったスケッチの例はこちら。RF12.*, RF12sio.*, Ports.*, JeeLib.hをArduino/Libraries/RF12に入れておけば、ライブラリRF12として使える。 https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-14/recipe-14-6 ただしこれは結構上位のプロトコルまで実装していて、GroupとIDを指定できる。GroupはSYNC PATTERNとして指定しているようなので、無線機の物理層レベルで同一Groupしか通信しない、ということにできるようだ。もう1つのIDのほうは、1バイト単位での送受信の中にIDを埋めていて、受け側でIDが一致したら受信処理をする、みたいなことをしている。というわけで1バイト単位の送受信であれば、RF12B_code.pdfの例のように、FIFOを(マジックナンバーのpreambleを入れたりして)こべつにつつくのが順当そう。ただしかなり文字化けするようなので、CRCかチェックサムは必須(たぶん)。

13/10/07: ArduinoでSDカード読み書き

http://arms22.blog91.fc2.com/blog-entry-502.html

13/10/05: iPhone(等)で音声端子からリモコン信号を出す

http://mag.switch-science.com/2012/12/26/remoconplug/

13/10/05: 小物撮影用照明の自作

http://mag.switch-science.com/2012/08/03/diy-light/

13/10/03: microUSBホストケーブル自作

http://plaza.rakuten.co.jp/jashi/diary/201107140000/

13/10/02: 123D Designもろもろ

  • 右上の、視点を指定する立方体のところの下三角で出てくるメニューで、PerspectiveかOrthographicかを選べる。機構図面まら後者の方が見やすいように思う。ちなみにPerspectiveだと遠近法描画なので、遠くのものが小さく見える。

13/10/02: Windowsのタスクでバッチファイルを実行するときのデバッグ

http://tobysoft.net/wiki/index.php?Windows%2FVista%2F%A5%BF%A5%B9%A5%AF%A5%B9%A5%B1%A5%B8%A5%E5%A1%BC%A5%E9%A1%BC%A4%C7%A5%D0%A5%C3%A5%C1%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%BC%C2%B9%D4%A4%B9%A4%EB%CA%FD%CB%A1

13/09/28: Paintで一部にモザイクを入れる

こんな方法があるのか。簡単。 http://ameblo.jp/pixy77/entry-10047968356.html

13/09/27: AVRISPmk2書き込み時のFuseの設定

Arduinoブートローダの書き込みのように、設定するべきHIGH/LOW等のFuseビットの値がわかっている場合は、書き込み時に直接その値を入力すれば,それに応じて各bitの設定が変わるので、設定項目をON/OFFしてFuseビットの値をあわせる、ということをしなくてもよい。

13/09/26: Eagleで基板にネジ穴をあける

Hole、であける。

http://tomozon.sakura.ne.jp/eagle/use_eagle_1/

13/09/24: Eagleで使うドリルや配線幅のインチ-mm対応表

つくってみた。(2013/9/25:黄色いところの計算ミスがあったので差し替え)

#ref(): File not found: "Eagle_unit.xlsx" at page "akita/2013"

#ref(): File not found: "Eagle_unit.png" at page "akita/2013"

13/09/22: Webブラウザで動く描画アプリcocoo

Webブラウザでうごく描画アプリのcacooってのを試してみたんだけど、なかなか悪くない。 電子回路描くための部品とかもまあまあそろっている。SVGとかPDFとかpptとかに書き出しもできる。http://cacoo.com/

13/09/20: Eagle 6.30/6.40のキー定義

scr\Eagle.scrに書いたものが起動時に読み込まれる、という仕様になったみたい。 http://trac.switch-science.com/wiki/EagleShortCutSetting

13/09/13: AVRでソフトウエアUART(アセンブラ)

http://izm.way-nifty.com/robo/2007/10/post_c97f.html

13/09/13: ATtiny/ATmega等のISP時のクロック

ISPのSPIクロックから与えられるものだとばかり思い込んでいたが、MPU自体のクロックは必要。新品なら工場出荷設定で内蔵8MHzになっているのでISP書き込みできるが、それ以外の場合は、外部クロックや水晶発振子などが必要。

http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/AVRTestB/AVRtestb.html

13/09/12: FTDIチップでXilinx FPGAをコンフィグ

http://www.hmwr-lsi.co.jp/fpga/fpga_1.htm

13/09/12: Win7でEPSプリンタの追加

http://app.m-cocolog.jp/t/typecast/260142/217579/71255967

ダイアログ内の上の「プリンタの追加」から行うのがポイント。

13/09/09: Arduinoのlong型変数とその演算

long型は4バイト(32ビット)だが、演算は、少ないほうのビット数にあわせられるみたい。

  unsigned long x, y;
  unsigned a, b;
  x = a * b;
  y = (unsinged long)a * (unsigned long)b;

この例では、xはintの16ビットで求められるので、a*bが65536を超えると結果が正しくないが、yは正しく求められる。

13/09/08: ダクトを固定するわっか状の金具

名前がわからなかったけど「ダクト・固定」あたりで画像検索で発見。ホースバンドという名称。 http://www.amazon.co.jp/%E3%82%BF%E3%82%AB%E3%82%AE-takagi-%E3%83%9B%E3%83%BC%E3%82%B9%E3%83%90%E3%83%B3%E3%83%89-17-38-QG425/dp/B0055MANBE/ref=sr_1_3?ie=UTF8&qid=1378642719&sr=8-3&keywords=%E3%83%9B%E3%83%BC%E3%82%B9%E3%83%90%E3%83%B3%E3%83%89

13/09/06: Replicator2XでPVAをサポート材につかう

http://www.fumi2kick.com/komekame/archives/1577

13/09/05: Replicator2Xもろもろ

13/09/05: ReplicatorでPVAをサポート材に使っている例

http://www.fumi2kick.com/komekame/archives/1529

13/09/02: Eagleで部品をグリッドにあわせる

Ctrl(Cmd)を押しながら部品を選ぶ。

http://allorsomething.blog75.fc2.com/blog-entry-54.html

13/08/30: ATtiny13/45をArduino化する

http://hello-world.blog.so-net.ne.jp/2011-11-17

13/08/28: AVRでタッチセンサ

http://elm-chan.org/works/capsens/report_j.html

13/08/28: AndroidのFoursqureからTwitter連携がはずれる

投稿時にON/OFFするスイッチがOFFになっている、ということもあるみたい。 http://atasinti.chu.jp/dad3/archives/11502

13/07/26: Eagleの回路図で表示されていない電源ピンに接続する

複数入りオペアンプなど、回路図に電源ピンが表示されていないものでは、 Invokeで1個選び、非表示になっている電源ピンを選んでOKすると、 それをどこに置くか選ぶようになるので、適当なところにおいて、 普通のノードと同じように電源配線をする。

http://www.technoveins.co.jp/develop/eagle/libedit.htm

13/07/23: ArduinoでとったデータをProcessingでグラフ描画

http://yoppa.org/tau_bmaw13/4790.html

13/07/19: Windowsで削除できないプリントジョブを削除

http://www.lifehacker.jp/2010/03/100318printerhate.html

ただしコマンドプロンプトからだと、管理者実行してもspoolへのアクセスが拒否される。Explorerでアクセスするといったん拒否されるが、OKを押せばアクセスできる。

13/07/12: PSoCのPWMでワンショットパルスを作る

ソフトウエア割り込みを併用する方法が紹介されていた。 http://www.pastelmagic.com/psocbbs/index.cgi?m=read&bnum=1213&num=1219 http://www.pastelmagic.com/wiki/psocwiki/index.php?%E7%99%BA%E8%A1%A8%E4%BC%9A%E4%BC%9A%E5%A0%B4

要は、トリガピンの割り込み→PWM_Start→PWMのTerminalCount割り込みで、PWM_Stop、ということ。

IrDARXでやっているような、外部ピンとPWMをLUTでWiredORする、みたいな方法はちょっとトリッキーで難しそうな雰囲気。 http://www.pastelmagic.com/psocbbs/?m=look&bnum=1910

13/07/12: PSoCのOneShotの入力パルス幅

OneShotモジュールの性格(?)上、生成するパルス幅の1/8の周期のクロックにあわせてシフトレジスタが動作する、という構成のため、トリガパルスが短すぎるとNG。解決策はたぶんない。

13/07/08: FreeCADでネジをつくる

http://sourceforge.net/apps/phpbb/free-cad/viewtopic.php?f=8&t=1222&start=50#p11120

13/06/28: ThinkPad X1 Carbonのキーボードバックライト

Fn+SPACEで点灯

http://nasunoblog.blogspot.jp/2012/11/lenovo-thinkpad-x1-carbonos.html

13/06/28: sedで文字列置換 & awkでCSVを扱う

sedの基本中の基本だけど、すぐ忘れるので備忘録。

sed -e 's/hoge/HOGE/'

で、行中の1つめのhogeをHOGEに置換。

sed -e 's/hoge/HOGE/g'

で、行中のすべてのhogeをHOGEに置換。

http://wiki.livedoor.jp/engineernochiebukuro/d/sed%20%A4%CE%BB%C8%A4%A4%CA%FD

あとawkでCSVを「ちゃんと」扱うのはめんどい(ただ「,」をFieldSeparatorにするだけだと、ダブルクオート中の「,」も区切りになってしまう)んだけど、全てのフィールドがダブルクオートで囲われている、という仮定があれば、「","」を「"\t"」に置換に、必要であればそのまえに「,,」を「\t""\t」に置換(更に必要であれば3つ以上の「,」のみの空フィールドが続くならばそれらも事前に)すれば、とりあえずは扱える。

13/06/15: Eagleで出力したGerberデータのPCBEへ変換

八角形アパーチャの取り扱いにバグがあったので修正。

#ref(): File not found: "e2p_conv130615.zip" at page "akita/2013"

13/06/10: MATLABで行列操作

MATLAB的には常識レベルかもしれないけど備忘録。

ベクトルや行列を、[A B]とすると水平に結合。[A;B]とすると垂直に結合。A'はAの転置(行と列の入れ替え)。行/列ベクトルaだとa'は列/行ベクトルとなる。

save('filename','変数名','-ascii');

で行列の中身を保存できるが、変数名のところに羅列すると、ファイルの中ではつながる。たとえば'a','b'とすれば、'a'が保存された直後に'b'が保存される。したがって、aとbを並べて保存するには、data=[a b]で両者を並べた変数(行列)をつくってそれを保存する。

あと代入や演算のさいごにセミコロン(;)をつけると、演算結果は表示されないが、つけないと、演算結果の変数の内容などが表示されるので確認に便利。

13/06/07: SONY赤外線リモコン信号

http://elm-chan.org/docs/ir_format.html

キャリア40kHz。あと45msごとにリピートで出さないと、最初の一発だけではうまく動かないことが多いようだ。信頼性はそれぐらい、というかんじなのだろうか。

13/06/07: ATtiny10の入力ピン割り込み

なかなかデータシートを読んでもわかりにくいが、大きく分けるとINT0とPCINT0がある。 INT0は特定ピン(たしかPB0)の割り込みで、エッジ、レベルを指定できる。 PCINT0は、名前が紛らわしいが、PB0(PCINT0)〜PB3(PCINT3)のいずれかのピンの状態変化時の割り込みで、個別にマスクできる。つまりPB3(PCINT3)ピン変化の割り込みも、PCINT0という名前なので、そのISRは、ISR(PCINT0_vect){}に書く。(ISR処理が特になくても、割り込みフラグのためだけにこのISR()は用意しておかなければいけない)ちなみにAVR Studio6.0だと、このISR(PCINT0_vec)を書くと、"register not supported"というエラーが出るが、known-bugのようで(なぜかドイツ語ページがよくひっかかる)、AVR Studio6.1にあげると解消する模様。

13/06/06: NordicのBlankModule

IAMAS小林さんが言っていた話。 無線チップメーカーのNordicが、物理層で技適をとっているモジュール(アプリケーション層はユーザが作れる、というかつくらないといけない)として販売している、という例。「汎用デバイスとしての部品」の例、と考えることができる。 http://www.sankeibiz.jp/business/news/130228/prl1302281528052-n1.htm

13/06/06: ATtiny10でPWM

PB0からPWM波を出そうとして、FastPWM(mode=15)のChannelAをPB0につないで(TCCR0Aの上位2ビットで設定)、Timer0のTOPをOCR0Aにして周期を決めようと思ったのに、PWM波が出てこない。 で、調べてみたら、ビンゴ。 http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=114473&start=0

データシートのp.53(Timer0/Counter0の構成図)の通り、ChannelAのコンペアマッチはOCR0Aを使うので、Timer0のTOPをOCR0AにするFastPWM(mode=15)は使えない。TOPをICR0で指定するFastPWM(mode=14)などを使う。

13/06/05: ATtiny10のTPI書き込みと電源電圧

ATtiny10をTPIで書き込みしようと思ったら失敗して、なんでだろう?といろいろ試したら電源を3.3Vから5Vにしたらあっさり書き込みできた。そんな制限ってあったっけ? ざっとデータシートを見た範囲では、そのような仕様は書いてないんだけどなあ。

13/05/31: Eagleで複数基板を面付け

http://flexir.net/blog/item_244.html

13/05/28: Eagleショートカット

いろいろ変えていたので最新版。BoardではDeleteやWireは使わないけど、気分的にはRip-upが配線削除でRouteが配線なので、それぞれD/Wに割り当てている。

#ref(): File not found: "EagleKeymap130528.png" at page "akita/2013"

#ref(): File not found: "EagleKeymap130528.txt" at page "akita/2013"

13/05/22: 秋月I2C液晶をPSoC1からI2Cでつつく

秋月I2C液晶に載っているPICがソフトウエア処理なのかI2Cクロックが100kHz以下という制約があるので、Standard速度で動かせば大丈夫。あとデータシートには明記されていないがaddr=0x50に0x00+コマンドか0x80+データの2バイトを送る。 キャラクタ液晶につきもののmsオーダーの長いウエイトも含めて、こんな感じ。(CPUCLK=SYSCLK/2)

BYTE I2Cbuf[16];
#define I2C_LCD 0x50
void LCDwrite_command(BYTE d){
  I2Cbuf[0] = 0x00; I2Cbuf[1] = d;
  I2CHW_bWriteBytes(I2C_LCD, I2Cbuf, 2, I2CHW_CompleteXfer);
  while(!(I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE));
  I2CHW_ClrWrStatus();
}
void LCDwrite_data(BYTE d){
  I2Cbuf[0] = 0x80; I2Cbuf[1] = d;
  I2CHW_bWriteBytes(I2C_LCD, I2Cbuf, 2, I2CHW_CompleteXfer);
  while(!(I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE));
  I2CHW_ClrWrStatus();
}
void delay_ms(BYTE d){
  WORD w;
  while(d-- > 0) for (w = 0; w < 300; w++);
}
void main(void)
{
  BYTE d;
  I2CHW_Start();
  I2CHW_EnableMstr();
  M8C_EnableGInt;
  I2CHW_EnableInt();  
   LCDwrite_command(0x01); // clear display
  delay_ms(5);
  LCDwrite_command(0x38); // 4bit/2line
  delay_ms(5);
  LCDwrite_command(0x0f); // display&cursor&blink on
  delay_ms(5);
  LCDwrite_command(0x06); // cursor motion
  delay_ms(5);
  LCDwrite_command(0x80); // set address as 0
  delay_ms(5);
  LCDwrite_data(d); // write character at current position
}

13/05/21: Eagleでビットマップ画像を読み込む

そういうULPがある。 http://ameblo.jp/neophile/entry-10427032905.html

13/05/07: レーザーカッターで銅箔カット

やっている人がいた。さすがにやはり無理とのこと。 http://kawaiirobo.web.fc2.com/lasercutter.html

13/04/25: Eagleで部品を45度回転させて配置

Boardではできる。コマンド欄に rotate r45 '???' (???=部品番号。R1、など) でできる。

http://www.eaglecentral.ca/forums/index.php/mv/msg/32831/112877/

http://d.hatena.ne.jp/suikan+blackfin/20090207/1233982188

13/04/24: FreeCADで複数オブジェクトを統合

融合していてほしい複数オブジェクトを別々につくって、まとめてSTL形式でExportすると、 KISSlicer→pronterfaceで、うまく融合した物体にできないことがある(結構多い)。 そこでFreeCAD上で、PartsDesignにして、融合したいオブジェクトをFusionすると、 1個のオブジェクトに統合できるので、こいつをExportするとうまくいくっぽい。

13/04/19: MATLABでスペクトル

http://www.mathworks.co.jp/products/matlab/examples.html?file=/products/demos/shipping_ja/matlab/fftdemo.html

こちらを参考に。要点はこんなかんじ。

  • データをベクトルとして読み込む。(この時点ではデータは配列に入るので、サンプリング周波数の情報はどこにも入らず、データの配列の通し番号だけ)
  • それをfftしてconjをとってパワーを求める。(この時点ではパワーも配列に入るので、周波数の情報はどこにも入らず、パワーの配列の通し番号だけ)
  • サンプリング周波数fsの情報を持つベクトルfを、f=fs/N*(0:N/2-1)として作成。これで「パワーの配列の通し番号の添え字」と「対応する周波数」との関連がつく。
  • plot(f, p)みたいにして横軸=周波数f、縦軸=パワーp、というグラフをかけば、それがスペクトル。

ちなみに以前にも書いたけど忘れていたので備忘録

  • CSVの読み込みは、A = csvread('hoge.csv')。これで行列Aの各列に、CSVの各列のデータが入る。
  • 行列からの各列の抜き出しは、例えばAの1列目をベクトルtに入れるのであれば、t=A(:,1)(※「:」は(行の)すべて、という意味)
  • ベクトルや行列の「添え字」は1からはじまることに注意。(よくごちゃごちゃになる)

13/04/14: Blade-1の送り機構の温度

3DプリンタのBlade-1で続けて成形をしていると、送り機構がフィラメントを送れなくなる(送るときにステッピングモータがカコッカコッと脱調する)ことがあって、成形に失敗することが多い(ような気がする)。原因はだいたい送り機構(かその付近のフィラメント)が熱くなっていて、ここでフィラメントが少し溶けて、送り機構のギザギザに少しくっついているために送りに失敗しているのが原因。送り機構を冷やすと、冷風をあてるとヘッドの温度も下がってしまう。

対策として、ヘッド温度上昇中はいったんフィラメントを抜き、ヘッド温度が設定温度まで上昇してからフィラメントをさして射出テスト後に成形をはじめると、失敗が少ない感じ。

13/03/27: MATLABでスペクトルを求める

基本的には、データに対してfftして、conjで共役をとって正規化。 http://www.mathworks.co.jp/products/matlab/examples.html?file=/products/demos/shipping_ja/matlab/fftdemo.html http://digital-lives.seesaa.net/article/180722066.html

13/03/22: コマンドプロンプトの変数の扱い

今まで知らなかったけど、けっこう凝ったことができる。

  • 変数の代入はsetを使う
    set a=hogehoge
  • 変数の値の参照は、%で囲う。例えば変数"a"は%a%となる。
    set b=%a%
  • 変数の参照では文字列置換もできる。以下の例では、変数a中の文字"b"を"c"に置換する
    set b=%a:b=c%
  • 日付は%date%で参照できる
    set c=%date%
  • これらをくみあわせて、日付の区切りのスラッシュをとるにはこんな感じ。
    set c=%date:/=%

13/03/12: InkscapeのDifference演算

並び順でどっちが上か、でどっちからどっちの差分か、が決まる。 http://inkscape.paix.jp/manual/editpath-boolean.html#boolean-4

13/03/11: Win8のファイル選択ダイアログの左側(プレースバー)の変更

Win8でもこれでいけるっぽい。 http://www.forest.impress.co.jp/article/2008/07/22/placesbareditor.html

13/03/09: Win8でファイル選択ダイアログが異様に遅くなる

ネットワーク接続の復元、が原因の1つの模様。とりあえずログオン時に再接続、をはずしてみる。 http://support.microsoft.com/kb/313937/ja

13/03/05: LPC1102のLチカ

IOポートのトグル、の書き方のメモ。

LPC_GPIO0->DIR = 0x0100; // set P0.8 as output
LPC_GPIO0->DATA = 0x100; // P0.8 = '1'

のように書く。(という流儀もある、という感じ?まだよくわからない)

http://www.eleki-jack.com/arm/2010/02/lpcxpressoled-6.html

13/03/04: 秋月のLPCXpresso1115のサンプル実行

添付のQuickStartGuideによれば、1114用のサンプルをImportして、MCU Settingを1115に変えて使え、の一言で済まされているが、その設定は、ちょっと奥まったところにある。 ProjectのProperty→C/C++Build→MCU Setting内。

http://meimeiyajisan.blogspot.jp/2011/05/blog-post_29.html

13/03/02: GoogleCalendarで追加した(サブ)カレンダーをiPhoneで同期する

専用ページから設定しないといけない模様。あとiPhone側も、なぜかExchangeアカウントでは追加した(サブ)カレンダーがみえなかった。Gmailアカウントで同期したらみえた。 http://blog.caraldo.net/2012/04/google_iphone.php

13/02/25: Meadowをサーバとして使う(=他のアプリから使う)

標準でインストールされるemacsclientw.exeを使うのが簡単。emacsclientw.exeに"-n"オプションをつければ、ファイル受け渡し時のコマンドプロンプトを開かない。

http://d.hatena.ne.jp/tokorom/20080107/1199708103

13/02/23: ArduinoのRAM使用状況の調べ方

このあたりが参考になるか。 http://d.hatena.ne.jp/clayfish/20090301/1235839554

13/02/21: Blenderで作成したSTLデータの寸法

Blenderというオープンソースの3Dモデリングがあって、STLデータのExportができるが、Blenderでの寸法の単位がBlenderUnit(BU)という独特なもので、ExportしたSTLデータの寸法がどうもいまいちよくわからない。(BlenderのScaleで単位をミリなどに設定できる、ようなのだけど、STLデータには反映されないっぽい)。

そこで付け焼刃ではあるが、KISSlicerで読み込んだあと、"Scale by X"で、全体を拡大縮小するのが現実的か。ちなみにKISSlicerでは読み込み時に自動的に回転する、というオプションもある模様。

13/02/21: ベニヤ板の反りをなおす

レーザーカッターでベニヤ板を加工するとき、モノによっては反っているものがある。湿気の多い金沢ではしょうがないといえばしょうがないけど、反りがひどいとヘッド(特に材料表面に近いアシストエアのノズル)がぶつかってしまう。というわけで反ったベニヤ板の直し方。大きく分けると、(1)ふくらんだ側を加熱する、(2)内側をぬらして平らになるように力を加えた状態で数日待つ、といったところ。 http://okwave.jp/qa/q28272.html http://vicdiy.com/assy_knowhow/0010/0010.html

13/02/20: #ifdefの罠

#defineでDEBUGを定義しているときだけ確認メッセージを表示させたくて、以下のようなコードを書いた時の罠。

  if (!init())
#ifdef DEBUG
    Serial.print("Failed to init");
#endif
  init2();

DEBUGをdefineしているときは問題なく動くのだけど、defineをしないと、動作しない(init2()が行われない)。 考えてみればあたりまえの話で、この書き方だと、DEBUGをdefineしていないときは、以下と等価になる。

  if (!init())
  init2();

つまり、init()の戻り値がfalseのときだけinit2()を実行する、という、本来と逆の動作となっていまう。 というわけでこう書くのが正しい。

  if (!init()){
#ifdef DEBUG
    Serial.print("Failed to init");
#endif
  }
  init2();

やはり#ifdefは注意して使わないといけない。

13/02/16: Arduinoでサーボ制御

Servoというライブラリがあるのでそれを使うと便利。 http://kousaku-kousaku.blogspot.jp/2008/06/arduino.html

13/02/16: Arduinoのアナログピンの「ピン番号」

A0-A5が、D14-D19となる。 http://www.musashinodenpa.com/arduino/ref/index.php?f=2&pos=116

13/02/16: ArduinoにSPIデバイス2個をつける

デバイス側のSlaveSelect(SS)をArduinoの別端子に割り当てれば、SCLK/MISO/MOSIは共用できる。ただしSPIの動作モード(LSB/MSBファースト、クロック極性など)が異なる場合は、その都度SPIの動作モードを切り替えるか、SCLK/MISO/MOSIを別ピンに割り当てるのが現実的。なおSPI通信を、ATmega内蔵のSPIモジュールを使わずにソフトウエアI/Oピン制御で実装している場合もあるので要注意。(SPIモジュールをEnableにしてしまうとソフトウエアI/Oピン制御はきかないため)

13/02/08: FreeCAD関連

  • オブジェクトを移動や回転させるのは、オブジェクトを選択→Edit→Placement、で平行移動や回転を数値で指定できる。Transformでも移動できるが、数値の指定ができない。
  • Partsデザインだと、直方体や円柱などの寸法や位置などのパラメータを指定してオブジェクトを作成できる。
  • 面取り(Fillet)は、面取りする「辺」を選んでから実行する。
  • Padの面を選んでSketchを作成すると、その面をふくむPadもいっしょになる?
  • 1つのSketch内で閉じた曲線はExtrudeすると中が埋まる、閉じていないと外側の面だけ。2つ以上の線分や円弧をつなぐときは、接続する制約(coincident)をつけたほうが確実。
  • オブジェクトの投影図を保存したいときは、Draft Workbenchで、Shape2DView
  • ver0.13になって、ツールボタンなどが増えていて、とても便利になっている。

13/02/07: ThinkPad X1 CarbonのACアダプタの角形コネクタの設計図面と結線

外側と真ん中の芯線がつながっててー極。四角の内側の両側が+極。20V。

#ref(): File not found: "TP_X1_ACconn.zip" at page "akita/2013"

13/02/07: USBカメラの映像を表示するだけのソフト

ありそうでなかったので備忘録。 http://rebelrider.web.fc2.com/webcamohcproject/index.html

13/02/06: Inkscapeの細い線のBoundingBox

デフォルトだと、線の太さも含めた外枠がBoundingBoxとなるが、寸法が厳密な製図などでは扱いにくい。Preferenceから幾何学的BoundingBoxを設定するとよい。 http://inkscapedesign.web.fc2.com/basic/glossary-basic.html

13/02/05: FreeCADのチュートリアルと、面からスケッチをつくる&Pocket

http://freecad-tutorial.blogspot.jp/

あと、つくった立体の1つの面に対して加工をしたい場合、新規に1つ空のスケッチをつくっておいて、その立体の面を選び、PartsDesign→"Map sketch to face"を選ぶと、その面のスケッチがつくれる。

あとPocketの使い方がいまいちよくわかっていなかったんだけど、↑のように面からつくったスケッチで、もう1つ図形を描いた状態でPocketすると、その書いた図形の部分がへこんだ形状になる。

13/02/03: STLデータを加工する

拾ってきた3次元モデルのSTLデータを加工したいときのやり方の一つ。FreeCADでSTLを開いて、Mesh Designでいじり(いらないところを消す、など)、またPartsDesignなどでほしい部分を追加する、など。

13/02/02: VyattaでStaticNAT(ポートフォワード)

プライベート内に置いたUSBデバイスサーバをグローバル側からアクセスできるようにするために必要となる設定。 http://sa3g.blogspot.jp/2010/12/vyatta.html

13/01/31: Win7/8のタスクバーを細くする(アイコンを小さくする)

http://www.moonmile.net/blog/archives/402

13/01/31: ThinkPadの内蔵Bluetoothドーターカード

BDC (Bluetooth Daughter Card)で、いくつかバリエーションがある模様。

13/01/31: InkscapeでDXF出力時のエラー

InkscapeでDXF出力しようとするとエラーが出ることがあって、対処はだいたいスクリプト*.py関係なわけだけど、PythonをInkscapeが自前で持っているようで、そのPythonに対して設定・プラグインの追加をしないといけない。

例えばWin版Inkscapeだとこんなエラーが出ることがある。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 1345-1348: ordinal not in range(128)

http://nanitsuku.blogspot.jp/2011/12/macinkscapedxf.html ここによれば、Pythonのencodeの設定の問題なのだけど、その設定ファイルを置く場所は、Inkscapeのインストールディレクトリ内のPython/Lib/以下、におかないといけない。

13/01/31: Google Sketchupでインポート

3次元のデータをつくるとき、平面図を読み込んでから、ということは多いわけだけど、Google Sketchupは、Pluginでいろいろ読み込める。 たとえば、

13/01/30: Windows8でVPN (Cisco AnyConnect)

レジストリいじるといける模様。 http://www.hidekik.com/adminpage/hbg/hbg.cgi?number=660

13/01/30: Inkscapeで数値入力ができなくなる

最近なぜかちょくちょくあって、なんだろう?と思ったらこんな方法を発見。 http://kppn012.blog.so-net.ne.jp/2013-01-07-1

13/01/29: コマンドラインからのAVRの書き込み

avrdudeでいけそうな雰囲気。 http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Favrdude39

13/01/23: 3D CADとデータ形式と相互変換

いろいろあるので、散発的だけど備忘録。

  • データ形式 http://www.niteco.co.jp/work/3d-format.html
    • STL : メッシュ形式。一番メジャー? (Blade-1で成形するにはこの形式で)
    • MQO : メタセコイア形式。キャラクターなどのデータに多い。
    • DXF : いわゆるDXF形式。
    • SKP : GoogleSketchUp
    • IGES/igs : 汎用中間フォーマット
    • DWG : AutoCAD

13/01/22: Wordの「校閲者別の色」

Wordでは変更履歴を記録するときに校閲者ごとに色を分けられるが、その色は指定できない、ということらしい。 http://office-qa.com/Word/wd16.htm

13/01/18: Win版Eagleの定義ファイルの場所

C:\Users\{username}\AppData\Roaming\CadSoft\EAGLE\eaglerc.usr、ということのようだ。

http://www.element14.com/community/community/experts/blog/tags/eagle

13/01/17: VisualC#でopenFileDialogで取得したファイル名からパスなどの抜出

System.IO.Path.にいろんな便利関数がある。 http://dobon.net/vb/dotnet/file/pathclass.html

12/12/21: AVRのクロック分周比の変更

CLKPSRレジスタで行うが、データシートにある通り、CCPレジスタにマジックナンバ0xd8を書いてから。つまりCCP=0xd8;→CLKMSR=0x00;(x1の場合)のように行う。