Rhinocerosでブーリアン演算で「演算に失敗しました」とメッセージが出て終わってしまう時があります。その原因がなんとなくわかったので、ちょっと解説します。
続きを読む
Rhinocerosでスクリューの作成
Fusion360 CAMポストプロセッサのカスタマイズ
Fusion360のCAM機能でCNC工作機械を動かすためのGコードを作成する処理をポスト処理と呼びます。その時に使っている機械に合わせたGコードを作成する必要があります。ホビーユーザーであればMach3かUSBCNCを使っている人が多いと思います。私はMach3を使っています。Fusion360にはMach3用のGコードを作成するポストプロセッサが用意されています。このファイルをカスタマイズする方法を紹介します。 続きを読む
Nikon万能投影機からArduinoへデータ読み込み
前にも書いたネタかもしれませんが、やり直しているので忘備録的に記事をアップします。Nikonの万能投影機の座標をコンピュータに取り込んで自動でDXFデータを作成するためのプロジェクト。以前はRhinocerosのplug-inのGrasshopperにデータを入れて処理をしていましたが、色々と使いにくいのでmacOSかRasPIのPythonでDXFを書き出すプログラムに変更しようと作り直してます。 続きを読む
Amazon LinuxでPython3を使う
AmazonのLinuxでPython3を使う、ということだけでえらくハマりましたので、その手順を紹介します。Python2.7は標準で入っているのですが、Python3は自分で入れる必要があります。Pythonのインストールは簡単ですが、ライブラリをインストールするpipでハマりました。
Wabecoフライス盤、モータコントロール基板の修理
納品されたばかりのフライス盤 Wabeco FS-1200をさっそく壊してしまいました。木工ドリルの太いものを回していたら「バン!」という音とともに煙がケースから出てきて動かなくなりました。というわけで修理の記録です。
続きを読む
フライス盤 Wabeco FS-1200の購入
ATmega32U4をMacから使う
1 |
ATmega32U4はスイッチサイエンスで販売しているマイコンボードです。このボードをMacOSから使う手順を紹介します。このボードをArduino化して使う方法もあるようですがArduino UNOなどどジャンパー線で接続する必要があるみたいなので、そのまま使う手順を紹介します。<!--more--> |
ATmega32U4マイコンボード
このボードはスイッチサイエンスで販売しています。 価格も比較的低価格でArduinoのように使うことができるマイコンボードです。最大の特徴はキーボードやマウスとして認識されるデバイスを作れることです。Arduino Leonardでも同じ事ができるらしいのですが、価格がこちらが安いので気軽に使えます。 ただしMac OSから使う場合にはちょっとクセがあります。ここに解説のページがあるのですが、Macユーザにはあまりやさしくありません。というわけで、その手順を紹介します。コードを書くにはArduino IDE(ver. 1.6.5)を使いました。
書き込みソフトウェアの準備
プログラムの書き込みはArduino IDEからは出来ません。terminalから行う必要があります。さらに標準では入っていないコマンドを使うので、そのコマンドをインストールすることから始めます。 「Macへのdfu-programmerのインストールはhome-brewで」こちらの記事が参考になります。 Home-brewを使いdfu-programmerをインストールすることになります。 Home-brewを入れていない場合はこちらを参考にしてインストールしてください。 インストール後はbrewコマンドでdfu-programmerをインストールします。インストールするためのコマンドは次のようになります。 $ brew install dfu-programmer
コードを入力してreturnキーを押すとコマンドが実行されます。なんか色々と表示されますが、インストール完了したっぽいメッセージが表示されればインストール完了です。
サンプルプログラムを書き込む
マイコンボードに書き込むサンプルプログラムをスイッチサイエンスのサイトからダウンロードします。サンプルプログラムはこちら(http://trac.switch-science.com/wiki/32u4bb)のページにあります。このページの「お試しファームウェア」というところにリンクがあります。そのページを開くとhexファイルの中身が表示されます。ページの一番下に「Original Format」というリンクがあるのでそこからhexファイルをダウンロードします。ダウンロードしたhexファイルを適当なフォルダに入れます。 ターミナルでそのフォルダに移動します。例えばデスクトップにHelloArduino.hexを保存したのであれば $cd これで自分のホームディレクトリに移動します。Finderで見ると家のアイコンのフォルダの事です。
私の場合は上図のmkbtmというフォルダ(ディレクトリ)。 $cd Desktop「リターン」 でDesktopに移動します。 $ls でファイル一覧を表示します。先ほどダウンロードしたHelloArduino.hexが表示されているはずです。 最初にATmega32U4に書き込まれているプログラムを消去します。USBケーブルで接続します。すでに文字を出力するプログラムが書き込まれているとターミナルの画面に勝手に文字が表示されてしまいます。その時にはボード上のリセットキーを押します。リセットボタンを押すと一定時間ボードが停止します。そのすきにプログラムを書き込みます。 次のコマンドで現在書き込まれているプログラムを消去します。 $dfu-programmer atmega32u4 erase 消去に成功するとそれらしいメッセージが表示されます。エラーが起きるとERRORとか表示されます。protectがどうのこうのと表示されたらforceオプションをつけて消去します。 $dfu-programmer atmega32u4 erase –force 消去後に新しいプログラムを入れる事ができます。 $dfu-programmer atmega32u4 flash HelloArduino.hex でプログラムを書き込む事ができます。1秒ごとに文字列が入力されます。
Arduino IDEで自分のコードを入力する
次にコードをArduino IDEで作りコンパイルして自分独自のプログラムを書き込んでみます。 とりあえず以下のようなコードを書きます。 スイッチサイエンスのサンプルとして載っているものとほぼ同じです。違いがわかるように出力される文字の最後に「?」をつけてみました。ボードの種類はArduino Leonardにしておきます。他でも良いのかも?
Arduino IDEの検証ボタンをクリックしてコンパイルします。これでhexファイルが作られたのですがファイルの場所が非常にわかりにくいです。私の環境では次の場所になりました。 /private/var/folders/hp/hzg1s7hn1lv5l4yvxj3mlh380000gn/T/build861154714147673710.tmp/ 途中の英数字を羅列したようなフォルダ名は何の事かわかりません。人によって違うものかもしれません。とりえず上記のフォルダに移動します。 $cd /private/var/folders/hp/hzg1s7hn1lv5l4yvxj3mlh380000gn/T/build676234921307526154.tmp/ $ls でファイル一覧を表示させてみましょう。つぎのような画面になると思います。
ATmega32U4test.cpp.hexが目的のファイルです。Arduino IDEでの保存名+.cpp+.hexというファイル名になります。 $ dfu-programmer atmega32u4 flash ATmega32U4test.cpp.hex で書き込みます。書き込んだ後は一度USBケーブルを抜いて挿し直す必要があるようです。 ちなみにキーボードのカーソルキーと同じ動きをするためには次のようなコードになります。カーソルキーの上と下に相当するキーコードをボードから送信しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[c language="++"] const int button1 = 1; const int button2 = 2; int bs1 = 0; int bs2 = 0; void setup() { pinMode(button1, INPUT_PULLUP); pinMode(button2, INPUT_PULLUP); } void loop() { bs1 = digitalRead(button1); bs2 = digitalRead(button2); if (bs1 == LOW) { Keyboard.write(KEY_UP_ARROW); } if (bs2 == LOW) { Keyboard.write(KEY_DOWN_ARROW); } delay(100); } [/c] <h2>ピン番号</h2> ピンの対応は<a href="https://forum.arduino.cc/index.php?topic=241369.0">こちら</a>に載っています。 デジタル入出力Pinだけ抜き出すと <pre> ArduinoのPin番号 ATmega32U4のボード上の番号 1 D2 2 D3 3 D1 4 D4 5 C6 6 D7 7 E6 8 B4 9 B5 10 B6 11 B7 12 D6 13 C7 |
スイッチサイエンスの商品説明ページにはシルク印刷が間違っているとの記述がありますが、現在は直っているようです。内部にプルアップ抵抗が入っているのでINPUT_PULLUPを指定すると外部に抵抗をつける必要がありません。スイッチをつけてGNDに落としてあげましょう。
CNCフライスの設計 25.リミットスイッチ(Z軸)
各軸にリミットスイッチを取り付けます。この目的はリニアガイドやボールネジの破損防止です。リミットスイッチを原点に使う人もいますが、私は使った事がありません。理由はメカニカルスイッチやフォトインタラプタに1/1000mmの繰り返し精度を期待するのが無理だろうという理由です。加工時の原点はセットした材料に合わせて出しています。