Duetファームウェアは、基本的なプログラミング構造を追加することが可能です。
数多くのメタコマンドを使用することができますが、
今回の記事では、その中でも特によく使われているコマンドを2つ紹介したいと思います。
注意事項
プログラミング構造を追加する前に、Duetのバージョンを確認してください。
バージョンは3.0.1以上である必要があります。

状態コマンド
このコマンドは、システムの現在の状態を確認するためのコマンドです。
具体的には、プリンタの稼働状況や、動作モードなどの情報を取得します。
下記のコードの場合、3Dプリンタが、state.statusの状態に応じて、自動的にベッドレベリングのリセットと再キャリブレーションを行います。
具体的に言うと、state.statusが「processing」(印刷中)や「paused」(一時停止中)でない場合にのみ、3Dプリンタは自動的にオートレベリングを行います。
if state.status !="processing" : 印刷中
if state.status !="paused" 一時停止中
G29 S2:既存のベッドレベリングのメッシュデータをリセット
G28:プリンタヘッドをホームポジションに移動
M561:オフセット設定のリセット
G29 S0:新たにオートベッドレベリングを実行
M400:すべての処理が完了するまで待機
この他にも、扉の開閉を検知し、扉が閉じられるまで動作しないようにすることも、状態コマンドを活用することで実現できます。
状態コマンドをうまく活用することで、より便利に3Dプリンタを使用できます。
ループコマンド
ループコマンドは、特定のコマンドやシーケンスを繰り返し実行するために使用されるメタコマンドです。この機能を利用することで、同じ動作を複数回行いたい場合や、条件に基づいて処理を繰り返したい場合に便利です。
私は過去に下記のような用途で使用したことがあります。
ループコマンドの使用体験
私は正方形の外周を一層のみをループさせてプリントしました。

まずは、1層を造形するときのコードを取得しました。移動コードが下記の赤色で囲んだところです。

そうして、ループのコマンドを追加します。
下記の例ではプリントヘッドはループを9回実行します。

さらに、下記のように記載することでZ軸を一層ずつ上昇させて造形することもできます。

G90コマンドは絶対座標を有効にします。
G91は、相対座標を有効にします。
今回の例では、相対座標にすることで現在のZ位置から0.2mm上昇させることができます。
そのため、9回実行した後、Z軸は1.8mm上昇していることになります。
他にも3Dプリンタの展示会でマシンの動きを見てもらうために、
1層目を造形する動きをループさせて、常に機械が動くようにしたこともあります。
このようにうまくメタコマンドを活用すれば、より効率的に造形ができるようになります。
『マディ』の極める!3Dプリント研究所をもっと見る
購読すると最新の投稿がメールで送信されます。