SketchUp と、歯車描画プラグインで書いて SkechUCam で gcode にしたけど、ぴったりサイズにしたらハメるのが硬すぎて厳しかった。細かい凹部はエンドミルでは削れないというのもありそう。
歯車描画プラグインは、ものによって SketchUCam と相性が悪くて使えなかったりする…… 機能がすくなそうなやつのほうがうまくいくっぽい。
SketchUp と、歯車描画プラグインで書いて SkechUCam で gcode にしたけど、ぴったりサイズにしたらハメるのが硬すぎて厳しかった。細かい凹部はエンドミルでは削れないというのもありそう。
歯車描画プラグインは、ものによって SketchUCam と相性が悪くて使えなかったりする…… 機能がすくなそうなやつのほうがうまくいくっぽい。
複数シャンク径を使いわけたい場合、都度コレットを交換する必要がある。ググってみてもいまいち正しいやりかたが出てこなくて歯痒いが、以下のようにすると交換できる。
普通に緩めて外すだけ
コレットをちょっと押してみると、ナットの位置によって傾むくほうと傾かないがあることがわかる。
傾むくほうを下にして、そのまま下に少し強めに押すと外れる
ナットの内側をよくみると、コレットの溝にはまるようにリングがついていることがわかる。そしてそのリングが一方が深く、一方が浅いようになっている (偏心している)
なので、深いほうを先に入れ、浅いほうに向けてコレットを押しこむとつけられる。
普通に締めるだけ
ナットだけ追加で買って、1コレット1ナットをセットにしてしまうのが早い。これなら、緩めて別のナットをつけるだけですむ。
CNC フライスで基板をつくる | tech - 氾濫原 の続き
穴開け用の φ0.5mm刃長1mmのエンドミルを入手したので、0.8mm 厚の基板で試した。
条件
配線パス切削:Vカッター (前回と同じもの)
なぜかバリも全くでずに綺麗にできた。やはり両面テープのほうがZ軸が安定する。両面テープは切削対象部分にはできるだけ全部貼ったほうがいい(ビビらないように)
穴開け・外形切削:φ0.5mm 刃長1mm
で綺麗にいった。
これとは別にもう一枚切削したが、そちらはちょっとZが安定しなかった。おそらく両面テープ不足。また、バリがかなり出てしまった。ビビったせいかもしれない。とにかく、固定はしっかりしたほうがいいっぽい?
φ0.5mm のエンドミルはかなり扱いが怖い。φ0.8のミルも注文したけどまだ届いてない。
0.8mm厚だと切削したパスが表面から透けて見えるので、部品の配置がやりやすい。1.6mm よりいいかも?
プリントしないプリント基板 (PCB) とやらです。
ふとやってみよう、と思ったので、0.8mm のエンドミルを使うべきところ (穴あけ) に 1mm のエンドミルを使っており、ランドが消滅していたりする。実際はシミュレーションとほぼ同じように削れたので、0.8mm にすれば解決するだろう。
Eagle -> G-code は直接出力する ULP が公開されているものがあったので、これを使ってみた。キデッジ メイカーズ ブログ -卓上CNCでプリント基板を簡単に作ろう!- CNCとEAGLEによる片面プリント基板の自作法!, キデッジ メイカーズ ブログ -卓上CNCでプリント基板を簡単に作ろう!- ドリル、外周カット用ULP version2!
これらのうち以下だけを使った。
X軸を中心に反転した座標で吐かれるので、Y軸原点にオフセットが必要 (X軸は+方向に、Y軸は-方向に進む)。左下が (0, 0) なら、左上 (0, +Y) を作業座標としてゼロにセットする必要がある。
--- 1_linepattern_gcode_bottom.txt 2015-09-07 01:19:30.000000000 +0900
+++ 1_linepattern_gcode_bottom.ulp 2015-09-06 23:23:36.000000000 +0900
@@ -42,7 +42,7 @@
//////////////////// ユーザー設定 ////////////////////
//////////////////////////////////////////////////////
-string DefaultSuffix = "_bot.tap"; //お使いのCNC似合わせた拡張子に変更してください
+string DefaultSuffix = "_lines.gcode"; //お使いのCNC似合わせた拡張子に変更してください
real Width = .3; //実際に削る線幅を指定してください
real Lift = 1; //空中移動時の高さを指定してください
real Depth = .1; //実際に削る深さを指定してください
@@ -129,7 +129,7 @@
printf ("G0Z%2.3f\n",Lift);
// printf ("G0Z0.23\n");
printf ("G0X0Y0\n");
- printf ("M03\n");
+ printf ("S10000 M03\n");
printf ("\n");
printf ("(Begin)\n");
} dtool 以下の穴についてはG-codeが生成されない。cut_up がなんかおかしくてエンドミル一本折ったので少し大きめに指定するといいでしょう……
--- 2_drill_holes_cutoff_v2.txt 2015-09-07 01:19:20.000000000 +0900
+++ 2_drill_holes_cutoff_v2.ulp 2015-09-07 00:16:18.000000000 +0900
@@ -12,13 +12,13 @@
//////////////////// ユーザー設定 ////////////////////
//////////////////////////////////////////////////////
-string DefaultSuffix = "_cut.tap"; // お使いのCNC似合わせた拡張子に変更してください
+string DefaultSuffix = "_cuts.gcode"; // お使いのCNC似合わせた拡張子に変更してください
real dtool = 0.8; // エンドミルの直径を指定してください
real zstep = 0.4; // Z軸のステップ値を指定してください
-real depth = -1.5; // 基板の厚さを指定してください
-int fvalue = 200; // XY軸のF値を指定してください
+real depth = -1.7; // 基板の厚さを指定してください
+int fvalue = 80; // XY軸のF値を指定してください
int z_fvalue = 50; // Z軸のF値を指定してください
-real cut_up = 1; // 空転移動時の高さを指定してください
+real cut_up = 2; // 空転移動時の高さを指定してください
int drill_cut = 1; // 取り付け穴のパスが必要ない場合は0にしてください
int drill_on = 1; // エンドミルによるドリルのオンオフ
int pecker_mode = 1; // キツツキドリルのオンオフ
@@ -764,7 +764,10 @@
{
line_counter();
checkturn_right_or_left();
- printf("T2 M06 S0 M03\n");
+ printf("G90\n");
+ printf("G0Z2\n");
+ printf("G0X0Y0\n");
+ printf("T2 S10000 M03\n");
if (drill_cut == 1)
{ 他人がつくったG-Code生成器は本当に良く良く確認したほうがよくて(確認したつもりでもつらいことがおきる)、特に以下は絶対にチェックする必要がある
OpenSCAM で確認したから安心、とはいかない。G-Code 実行器はモーダルなため、何かしらの状態が残っていると困ったことになることがある。
そして、座標指定まわりがおかしいと、本当にとんでもないことになるので一旦 Z 軸をあげた状態で動かしてみるといい。
基板をしっかり固定するのが重要なのは言うまでもないけど実際難しい。基板自体が反ってしまっている場合、両面テープで貼ろうとしてもどうしても浮いてしまうし、クランプするとクランプした周辺だけ浮かない状態になって削れなくなってしまう。
切削で楽をしようとするなら、基板作成の段階のデザインルールで0.5mmぐらいのルールをしくのがよさそう。ユニバーサル基板の代わり(自動配線したいだけ) なら、このほうが圧倒的に楽
結構バリがでるのでなんらかの方法でとりたい。
コネクタの種類は実際のところ大量にあって、しかもはっきりしたデファクトスタンダートっぽいものもあまりない。というか異種接続防止のためか意図的に規格の異なるコネクタがたくさん使われている。
よく見るコネクタ (入手性がよい) を調べた
あとは、汎用端子にハウジングをつけたもの T型コネクタ とかがある。
圧着端子の圧着にラジオペンチ使うのはだんだん嫌気がさしてくるのでさっさと汎用品を買いましょう (圧着端子メーカー純正に比べればアホみたいに安い)
個人で何か開発するなら、何らかのプロダクトに対する哲学が必ずあるはずだと考える。「作りたいから作った」はそうだけど、「作りたい」という気持ちには必ずなぜ作りたいと思ったかの理由があり、突き詰めると自分の根本的な考えかたが出てくるはずだと考える。
メインセッションは、いつも20分枠に応募して、かなり説明をはしょりまくってもギリギリ、という感じだったので60分(50分)にしてみたのですが、時間配分が難しくて結局あわあわしてしまいました。これならもっと切りつめて20分のほうがメリハリがあってよかったので、大変大変反省しています。
いちおう少しでも面白いという反応が頂けのがよかったです。少しでも WebAudio 面白そうということで手を出していただければ幸いです。
音量がうまくでないトラブルがありご心配をおかけしました。接続テスト時にネタバレをしたくなかったので、別のツールで「音が出る」ことだけを確認して、音量ならいくらでもあがるやろwwwと思っていたら全然あがらなくてあせりました。
本当は 1.5分ぐらいひたすらモールス聞きとり(説明しませんでしたが、流れてくるモールスの聞きとりをやっていたのです)をやろうと思ったのですが、トラブルで時間をとられたので早々に諦めました (音が出た時点でデオチなので)。
ネタですがモールスやったらいいのにというのはマジ
今回あんまりセッションを聞けなかったので、動画の公開を楽しみにしたいと思います。
とりあえず CONBU さんの LT が最高に面白かったし、衝撃的すぎて良かった。LT でいっぱい人が出てくるという発想がまず全くなかったのでやばかった。
あと、今回は LT のドラの前に終わる人が多いように感じた。自分もそうだけど焦りすぎたかもしれない。結構、20分トークぐらいのをLTで圧縮する(そしてドラがなる)というのが例年あった気がするけど、リジェクトコンとかが充実してきてそういうのがなくなったのかもしれない。
最後の YAPC::Asia Tokyo、牧さんはじめスタッフのみなさん本当にありがとうございました。
まっとうな人生を送るにはCNC フライスが必要だと思ったので、買った。
CNC Sable-2015 というやつで、本体・スピンドル・制御基板・電源など一式セットで10万円ぐらい。
これのほかに必須なのは
10pcs エンドミル 1.0mm cho45
Grbl はシリアル経由で G-code を与えると制御用信号を生成してくれるファームウェアで、オープンソースで開発されている。Arduino に書きこめば動いてくれる。Arduino Nano 互換ボードに書きこんで使っている。
CNC 用のステッピングモータ制御基板は、古来からパラレルポート (という名のGPIO) をインターフェイスにしているが、現代のコンピュータにはパラレルポートは存在していないため、制御信号をコンピュータで直接つくるのではなくマイコンにやらせる、という感じ。
書きこんで設定すれば動くので特筆するようなことはない。
$0=10 (step pulse, usec) $1=25 (step idle delay, msec) $2=0 (step port invert mask:00000000) $3=1 (dir port invert mask:00000001) $4=0 (step enable invert, bool) $5=0 (limit pins invert, bool) $6=0 (probe pin invert, bool) $10=3 (status report mask:00000011) $11=0.010 (junction deviation, mm) $12=0.002 (arc tolerance, mm) $13=0 (report inches, bool) $20=0 (soft limits, bool) $21=0 (hard limits, bool) $22=0 (homing cycle, bool) $23=0 (homing dir invert mask:00000000) $24=50.000 (homing feed, mm/min) $25=500.000 (homing seek, mm/min) $26=25 (homing debounce, msec) $27=1.000 (homing pull-off, mm) $100=1066.667 (x, step/mm) $101=1066.667 (y, step/mm) $102=1066.667 (z, step/mm) $110=800.000 (x max rate, mm/min) $111=800.000 (y max rate, mm/min) $112=800.000 (z max rate, mm/min) $120=150.000 (x accel, mm/sec^2) $121=150.000 (y accel, mm/sec^2) $122=100.000 (z accel, mm/sec^2) $130=200.000 (x max travel, mm) $131=150.000 (y max travel, mm) $132=60.000 (z max travel, mm)
仕様通りに設定すればちゃんと動いた。
配線の回路図
とりあえず仮でリミットスイッチを強力な両面テープを使ってつけており、ホーミングも実際は有効にしている。
緊急停止ボタンは、一番最初のうちからつけておくべき。うっかり操作をミスったときにとても便利。だいたい機械側からガガガガ〜とか音がなるとパニくるので、停止ボタンだけはとにかく物理ボタンで目立つようにすべき。
ちなみにこの緊急停止ボタン、中国製の安いの買ってみたら接点が接触しないという、用途的に致命的だろという欠陥製品だった。一旦分解して接点にハンダ盛ったした……
制御基板まわりや Arduino まわりがデリケートで、スイッチング電源の近くに置くとちょいちょい誤動作することがあった。距離を離しつつパッチンコアを入れて対応したら完全に大丈夫になった。
動かしている間結構なお点前の音を出すのと、安全性のため、最初から箱を作ろうと考えていた。
仕様に書いてあるサイズを信用できなかったので、届いたものの稼動範囲や、でっぱりを調べたところ、内径として
H=420mm W=410mm D=530mm
ぐらいは必要ということがわかった。スピンドルのでっぱりがかなり大きかった…
一旦箱の全景を SketchUp でモデリングしたあと、板取図も SketchUp でおこし、エコモクという通販サイトにカットを依頼した。
かなり正確にカットされたのがきて良かった。板さえ完璧に切れていれば組立は一瞬なので最高。
材質はパーティクルボード。MDF よりも若干比重が高く (遮音性が高いということ)、そして安価なのでこれにした。板は安いが配送料がどうしても高くなる。
防音箱の下にはゴムの防振パッドをしいている。
また、中身に吸音シート (ホワイトキューオン) を貼っている。ホワイトキューオンは50mm厚のやつを裂いて4分の1にしてある。最初吸音材は貼らないつもりだったけど、実際やってみると共鳴音っぽい響きをしてしまったので結局入れた。
東京防音 防振マットTI-505V4黒 cho45
扉は、スペースに余裕がないため観音開きにし、マグネットキャッチによってできるだけぴったり閉まるように調整をした。最初、ローラーキャッチで試してみたけど、キャッチの力が弱くてダメだった。マグネットキャッチのほうが保持力が強いみたい。
LED のライトもつけてある。秋月で250円で売っているやつ。普通の部屋用のLEDライトだとオーバースペックだよなと思って試してみたけど正解だった。ちょうどいい。micro USB 端子から直接12Vに昇圧できるボードを入れて、配線を簡単にした。
別のエントリを書く
500 Can't connect to lowreal.net:443 (certificate verify failed)
Grbl を使うのはいいとして、Grbl をコントロールして G-code を送りこむプログラムと、そもそも G-code を生成するプログラムなどが必要になってくる。
最初は Using-Grbl にある通り Universal G-code Sender を使ってみたのだけど、最低限の機能はあるんだけど、いまいち自分の要求が満たせなかった。このページの他のも見てみたけど、実装が微妙だったりしたので、結局自分で書いた。
https://github.com/cho45/GrblServer
そもそもやりたいこととして
で、これらを実現するため
を作った。前者は nodejs、後者は Polymer を使って実装している。
Grbl のサーバはネットワークに繋げた Raspberry Pi で動かしている。WebSocket は same-origin ポリシーとかがないので、LAN 内なら接続を許可するようなコードにしてある (つもり)
サーバさえ立っていれば、LAN 内のどの端末でも Grbl を制御できるので、PC 上で G-code を作ったやつを実行させたり、スマフォで開いてXYZを手動で動かして原点を出したりとできる。自分的には現時点でそこそこ満足いく構成になっている。
別のエントリを書く
G-code 流しこむまではいいとして、そもそもG-codeを用意できなければならない。
無料なのも有料なのもいろいろあるが、簡単すぎるのから難しすぎるのまでピンキリで選定が難しい。
結論からいうと SkechUp MAKE を CAD として使用し、SketchUcam という SkechUp 用の CAM プラグインを使って G-code に落としこんでいる。
SketchUcam は基本的に 2.5D CAM なので、パスの設定は完全に平面でなければならない。(Z軸方向の高さがあってはならない)
また、設定したセーフエリア外のオブジェクトは完全に無視される。SketchUp 上の複数の図面を書いたうえで、セーフエリアだけを動かせばそれぞれ別の G-code として生成できる。
2段以上の加工を行う場合、SketchUcam では一発で生成できないので、図面コピー + 切削条件再設定が必要。セーフエリアを動かして複数回 G-code 生成を行って、連結する。
SketchUCam はセーフエリア(機械稼動範囲)の設定ができるが、セーフエリア左下に常に原点が固定されてしまう。しかし実際は「ここを中心(原点)にして機械を動かしたい」という場合がある。
可能なら任意の点を原点にできればいいんだけどできないので、オフセットを設定するしかない。
セーフエリア内の適当なところ(中心とか)にオブジェクトを起き、機械側でも原点まで移動させたあと、ゼロリセットではなく、オフセット分のリセットを行う。
例えば、セーフエリア原点から 50mm, 50mm オフセットした位置を中心にして図面を書いた場合、機械側の原点あわせは、中心点を手動であわせたあと、G10 P0 L20 X50 Y50 とか送ればいい。
ビューの状態によってオブジェクトが出力されたりされなかったりするので、生成した G-code は必ず確認が必要。
この用途だと OpenSCAM が良さそうなので使っている。
特に Z 軸方向のチェック、例えば貫通すべきパスが貫通しているかとかをちゃんとチェックする。
出力しなおした場合、Rerun simulation すれば再度リロードされる。
これで正しく切削できそうなのが確認できればいよいよ実際に切削できる。
まず
sudo raspi-config
で desktop がデフォルトで起動するようにしておく
Chromium などをパッケージからインストール
sudo apt-get install chromium x11-xserver-utils unclutter
しかし、apt から入る chromium のバージョンが古すぎる (22) のでなんとかしたい。(あとから)
pi@raspberrypi ~ $ chromium --version Chromium 22.0.1229.94 Built on Debian 7.0, running on Debian 7.8
~/.xsessionrc
# タッチスクリーン軸補正 # GUI ログインにすると xinitrc が読まれないので書いておく DISPLAY=:0.0 xinput -set-prop "ADS7846 Touchscreen" "Evdev Axis Inversion" 1 0 # マウスカーソルを消す unclutter -idle 15 -root & # 画面のブラックアウトをやめる xset -dpms & xset s off & # kiosk モードかつシークレットモードで chromium を起動する exec chromium --kiosk --incognito http://www.google.com
incognito (シークレットモード) にしておくとセッション復帰とかされないので面倒なことがない。
http://www.wvshare.com/product/3.2inch-RPi-LCD-B.htm これっぽいものを ebay から買ってみた。2000円ぐらい http://www.ebay.com/itm/181663639529
320x240 WaveShare SpotPear V3 Touch panel control chip XPT2046 というやつ。ピクセル数的にものすごく解像度低いがとりあえず液晶を試してみたかった。
基本的には https://github.com/cdario/waveshare-3.5-Spotpear-for-Rpi これの通りするのだが、一部手順が古いためハマる。
fb0 -> fb1 に (HDMI からTFT側に)
sudo vi /usr/share/X11/xorg.conf.d/99-fbturbo.conf
FBTFT kernel module を使えるように firmware update をかける。ちなみにLinux のカーネルバージョンが4系になる。SPI の DMA 転送が有効化される。
sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update
これは 50MB ぐらいダウンロードする。が https://github.com/notro/rpi-firmware から前もって Download Zip したやつを使うこともできる。notro-rpi-firmware-master.zip としてファイルをダウンロードして、ローカルネットワーク内から scp で転送しておいたとする、そのうえで
unzip -d "/tmp/rpi-firmware" notro-rpi-firmware-master.zip sudo FW_REPOLOCAL="/tmp/rpi-firmware/rpi-firmware-master" SKIP_DOWNLOAD=1 rpi-update
とすれば良い。
/etc/modules に追記
spi-bcm2708 fbtft_device name=waveshare32b gpios=dc:22,reset:27 speed=48000000 waveshare32b width=320 height=240 buswidth=8 init=-1,0xCB,0x39,0x2C,0x00,0x34,0x02,-1,0xCF,0x00,0XC1,0X30,-1,0xE8,0x85,0x00,0x78,-1,0xEA,0x00,0x00,-1,0xED,0x64,0x03,0X12,0X81,-1,0xF7,0x20,-1,0xC0,0x23,-1,0xC1,0x10,-1,0xC5,0x3e,0x28,-1,0xC7,0x86,-1,0x36,0x28,-1,0x3A,0x55,-1,0xB1,0x00,0x18,-1,0xB6,0x08,0x82,0x27,-1,0xF2,0x00,-1,0x26,0x01,-1,0xE0,0x0F,0x31,0x2B,0x0C,0x0E,0x08,0x4E,0xF1,0x37,0x07,0x10,0x03,0x0E,0x09,0x00,-1,0XE1,0x00,0x0E,0x14,0x03,0x11,0x07,0x31,0xC1,0x48,0x08,0x0F,0x0C,0x31,0x36,0x0F,-1,0x11,-2,120,-1,0x29,-1,0x2c,-3
/boot/cmdline.txt を変更
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbtft_device.custom fbtft_device.name=waveshare32b fbtft_device.gpios=dc:22,reset:27 fbtft_device.bgr=1 fbtft_device.speed=48000000 fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo dma.dmachans=0x7f35 console=tty1 consoleblank=0 fbtft_device.fps=50 fbtft_device.rotate=90
ここまでやって reboot すればTFT側に表示がでる、はず。
書いてある通りパッケージをいれる。
sudo apt-get -y install xinput evtest libts-bin wget http://adafruit-download.s3.amazonaws.com/xinput-calibrator_0.7.5-1_armhf.deb sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb sudo rm /usr/share/X11/xorg.conf.d/99-calibration.conf sudo reboot
/boot/config.txt に追記。XPT2046 は ADS7846 (-> TSC2046) 互換の中華コントローラらしいので ADS7846 を指定したらいいっぽい?
dtoverlay=ads7846,speed=1000000,penirq=17,swapxy=1
/etc/X11/xinit/xinitrc に追加 (軸補正)
DISPLAY=:0.0 xinput -set-prop "ADS7846 Touchscreen" "Evdev Axis Inversion" 1 0
dpi が恐しく低いので指定して起動したほうが良い。とはいえフォントサイズしか変化しないので、アイコンとかはデカいまま。
startx -- -dpi 60
タッチパネルキャリブレーションは以下でできるが、結果を conf に書いておかないとreboot時に失われる。
DISPLAY=:0.0 xinput_calibrator
タッチパネル座標と画面座標をあわせるためには
あたりをしっかりする必要があるが、これが結構面倒で試行錯誤した。とはいえあんまりパターンがあるわけではないので適当にやれば良い。
ref. https://github.com/cdario/waveshare-3.5-Spotpear-for-Rpi
ref. https://github.com/notro/fbtft/issues/215
ref. http://www.circuitbasics.com/setup-lcd-touchscreen-raspberry-pi/
ref. http://www.circuitbasics.com/raspberry-pi-touchscreen-calibration-screen-rotation/
http://32bits.io/Arturo/ を使うといいっぽい。ino というコマンドがあったがメンテされてないので ano というフォークができたらしい。
$ ano init
すると新規プロジェクトができる。
既存プロジェクトの場合、.ino ファイルは src ディレクトリ以下に入っている必要がある。
$ ano list-models
yun: Arduino Yún
uno: [DEFAULT] Arduino Uno
diecimila: Arduino Duemilanove or Diecimila
nano: Arduino Nano
mega: Arduino Mega or Mega 2560
megaADK: Arduino Mega ADK
leonardo: Arduino Leonardo
micro: Arduino Micro
esplora: Arduino Esplora
mini: Arduino Mini
ethernet: Arduino Ethernet
fio: Arduino Fio
bt: Arduino BT
LilyPadUSB: LilyPad Arduino USB
lilypad: LilyPad Arduino
pro: Arduino Pro or Pro Mini
atmegang: Arduino NG or older
robotControl: Arduino Robot Control
robotMotor: Arduino Robot Motor
gemma: Arduino Gemma で対応モデル名が出る。
nano 向けにビルドするにはオプションをつける。
$ ano build -m nano --cpu atmega328
アップロード(書きこみ)する場合は build を upload に変えて、-p でシリアルポートへのパスを指定する。ポート指定をつけないと勝手に推測して書きこもうとするが、意図せず違うデバイスに書きこむのを避けるためにも絶対に指定したほうが良い。
.ino はほぼ cpp だが include とかがないというなんか中途半端な状態のファイル型式になっている。
ano preproc src/sketch.ino をすると cpp の完全な形で吐いてくれるので、これを src/sketch.cpp として保存して .ino を消しさっても問題なくビルドできる。
ちなみにおおまかなビルドプロセスは https://www.arduino.cc/en/Hacking/BuildProcess に書いてある
Arduino IDE はヘッダファイルなどのパスを解決しつつ .ino を .cpp に変換(ちょっと足すだけ)して avr-gcc している。
setup() と loop() の定義:
Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h
HIGH とか LOW とか定数定義マクロもここに書いてある。
型のエイリアスもここで定義してある。
実際に実行している場所
Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/main.cpp
よくある main ループ。
いっぱいUSBシリアルを繋いでいるとどれがどれだかわからなくなる。
一旦ケーブルをはずして以下のワンライナーを実行する。
ruby -e 'print "Connect Arduino and type RET ";"/dev/tty*".tap{|x|proc{|a,_,b|puts b-a}[Dir[x],gets,Dir[x]]}' Arduino を繋いで RET を押せば新規に接続されたやつが表示される
eBay 見つつ、電子部品を PayPal で決済しようとしたらカード会社側で決済を拒否というエラーがでた。
最近、中国からの商品を買いまくっていたので、誤検知かと思っていて、翌日電話しよう、と思った矢先、「【重要】楽天カードから緊急のご連絡」というメールを受信し、それには至急電話しろと書いてあったので、とりあえず電話してみた。
電話はなかなか繋がらなかった。
で、話を聞くと、どうやら本当に不正利用の形跡があったらしく、身に覚えのないカナダとアメリカのサイトで(いずれもエラーだったようだが) 与信のリクエストが飛んでいたらしい。つまり PayPal とか中国とかは関係なく、誤検知ではなかった。
ということでカード再発行になってしまった。1週間から10日ぐらいかかりますとのことだが、電気・水道・ケータイ・VPSなどインフラ支払いをこのカードでやっていたので大変大変面倒くさい。
不正利用モニタリングの精度が高くてすごいな、と思った。ちょいちょい海外通販してるけど、特に不正利用検知とかされたことがなくて、モニタリングしていないんじゃないかと思っていたが、しっかりされてたみたい。
直近2日ぐらいの利用履歴を口頭で確認させられるので、細かいの買いまくってると面倒くさい。たまたま PayPal の決済履歴画面を開いていたのである程度スムーズだった。あと、直近でDMMで動画買ってなくてよかった。
新しいカード届いた