工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ArduinoHIDベースのCNCペンダント

コンポーネントと消耗品

>
Arduino Leonardo
× 1
>
瞬間的な押しボタン、点灯、ラベルを追加できます!
× 1

このプロジェクトについて

最後の記事の更新:

2018-07-31:CADファイルを追加しました

2018-07-24:回路図とプログラミングのセクションを追加

なぜこのプロジェクトなのか?

CNCマシン用のペンダントを購入することもできますが、私は木製のCNCマシンを作ったので、自分でペンダントを作ってみませんか?

それに加えて、私のコントローラーボードの通常のペンダントは100ユーロの費用がかかり、ボタンが2つとハンドルが1つしかないのです。

私のペンダントには23個のボタンがあり、ボタンごとに最大6つの機能とハンドホイールが付いています。

コメントの1つは、「大きくて重い」ということです。しかし実際には、ハンドホイールを回したときに置いたままのペンダントがあると、意外にも非常に便利であることがわかりました...

<図> <図> <図> <図>

これはどのように機能しますか?

Arduinoの美しさ 32u4チップ付き (すべてのモデルにこのチップがあるわけではありません)は、キーボードやマウスをエミュレートする機能です。 LeonardoをPCに接続すると、キーボードが「認識」されます。すばらしい!

したがって、Arduinoをプログラムし、それにいくつかのスイッチを追加してPCまたはMacに接続すると、ボタンを押すだけで(複数の)キーストローク/マウスの動きをコンピューターに送信できます。前述したように、23個のボタン/ 6個のボタン/ボタン=多くのオプション..

それはすべて、Arduinoスケッチに適切なライブラリを使用するかどうかにかかっています!何時間も検索した後、私はついにこのページに含めた素晴らしいライブラリを見つけました:クリックボタン。

このライブラリを使用すると、(瞬間的な!)ボタンごとに次の可能性が得られます:

  • シングルクリック
  • ダブルクリック
  • トリプルキック
  • シングルクリックアンドホールド
  • ダブルクリックして押したままにします
  • トリプルクリックアンドホールド

また、デバウンス機能を利用できます 重要なクリックボタンライブラリにあります。

各ボタンのタイミングを調整できますが、標準のタイミングは、クリックを認識するために250ミリ秒以上、ボタンのホールドを認識するために1000ミリ秒以上です。

3機能X軸ボタンのスケッチからの抜粋 (キー13)

  if(button [13] .clicks!=0)
{
switch(button [13] .clicks)
{
ケース1://シングルクリック
// Xのハンドホイール
shortcut_HANDWHEEL_X();
break;
ケース2://ダブルクリック
//ゼロX
shutdown_ZERO_X( );
break;
case 3://トリプルクリック
break;
case -1://シングルクリックアンドホールド
// USER MACRO 18:X -axis:goto work zero position G0 X0.0000
press_ESC();
goto_MAIN_MENU();
user_MACRO_18();
break;
case -2:/ /ダブルクリックアンドホールド
ブレーク;
ケース-3://トリプルクリックアンドホールド
ブレーク;
}
}

エンクロージャー

ペンダントエンクロージャーにはマホガニー材を使用しました。私は木を扱うのが大好きで、見た目も手触りも素晴らしいです。また、この方法で、20〜50ユーロで購入できる既製のABSタイプのケースでは常に可能とは限らない真のカスタムケースを作成できました。

図面はVectricCut2Dソフトウェアで作成されました。このソフトウェアパッケージに投資したことをうれしく思います。これにより、CNCの学習曲線が大幅に緩和され、より楽しくなりました。また、両面ジョブを非常に簡単に設計するのにも役立ちます。

少し紙やすりで磨いた後、木は透明なニスを何層も重ねました。

<図> <図> <図> <図> <図> <図> <図> <図>

このビデオの送り速度:

2400mm / min(〜94 "/ min)の40mm / sec。(〜1.57")、3mm(1/8 ")のカット

スイッチ

スイッチは素晴らしいです。 LEDのオン/オフに使用するスイッチを除いて、これらはモーメンタリタイプです。透明なトップカバーの後ろにラベルを貼ることができ、必要に応じて、内蔵LEDでスイッチを点灯させることができます。

5ボルトで2mAを使用して、スイッチごとに1KΩの抵抗を使用しました。

これはオランダ語の音声付きのビデオですが、スイッチが発する音を聞くためだけのものです。私のコメントは重要ではありません。私はスイッチが少し大きいと言いましたが、少なくともあなたがそれらを押したときあなたは知っています;)

これらのスイッチを使用することの1つの欠点は、かなり高いまたは「厚い」エンクロージャーが必要になることです。木の厚さは、上部と下部で21mm(0.82 "または53/64")でした。機械加工後のペンダントの総厚は36.5mm(14,37または14 3/8インチ)

スイッチの接続はとても簡単です...私はArduino内蔵のプルアップ抵抗を使用しているので、すべてのスイッチの片側をアースに接続し、反対側をArduino入力に接続するだけです。

スイッチラベル

スイッチのラベル​​付けには、カラーレーザープリンターに高品質のポリビニールステッカーを使用しました。 (インクジェットプリンターでも利用可能)。普通紙に印刷することはできませんでした。なぜなら、点灯したときに紙の構造が非常によく見えるからです。

次に、スイッチから透明なキャップを外し、その下のプラスチック片にラベルを貼りました。

アイコン 購入時にハードウェアに含まれているEdingCNCソフトウェアで使用されているものと同じです。ソフトウェアディレクトリからJPEGアイコンをコピーし、グラフィックプログラムでいくつか変更して、必要に応じてアイコンをカスタマイズしました。

ハンドホイール

これは標準の60mm100PPR6ターミナルエレトロニックCNCハンドホイールです

したがって、1回転あたり100パルスで、ほとんどのCNCソフトウェアでこの値を編集できます。

エレクトロニクス

HID(Human Interface Device)として、ArduinoLeonardoマイクロコントローラーを使用しました。

このマイクロコントローラーボードは製造中止になりましたが、いくつかのオンラインショップで購入できました。別の方法として、同じ32u4チップを使用するArduinoMicroを使用できます。

<図> <図> <図>

このようにして、キーボードストロークを模倣し、CNC機械加工ソフトウェア(私の場合はEding CNC)の多くの機能を制御できました。

Arduino Leonardoには23個の入力ピンがあるので、十分すぎるほどです。前述のように、ボタンごとに6つの機能を割り当てることができます。

キーLEDをオンにした場合の総消費電力は150mAです。

Arduinoマイクロコントローラーのプログラミング

Arduinoをプログラムするには、ペンダントをCNC電源に接続したままにし、ArduinoIDEソフトウェアを使用して新しいスケッチをアップロードする必要があります。 (以下の注を参照してください)したがって、もちろん、キーボードのエミュレートに使用されるのと同じUSBプラグを使用します。

プログラミングに別のPC(ラップトップ)を使用する場合は、USBプラグを別のPCに接続し、Arduinoをプログラムします。ペンダントは接続したまま、CNC電源で電力を供給します

自分だけのペンダントを作って楽しんでください!

コード

  • CNCペンダントコード
CNCペンダントコード Arduino
 / *このスケッチは、この場合はEding CNCペンダントのHIDとしてLeanardoを使用するためのものです。Leonardoを使用することの利点は、柔軟性が非常に高いことです。ペンダントには20個のキーがありますが、キーごとに6つの異なる機能を使用できます。あまりにも多すぎますが、私はいくつかのキー3関数で使用します。非常に便利で、使いやすく、管理も簡単です。* /#include "ClickButton.h" #include "Keyboard.h" long int aux1_delay =0; // Nr。 arrayconstのボタンの数intbuttons =20; // Button // buttonPin0はダミーです。これは、「0」ではなく「1」から始めたいためです。constintbuttonPin0 =0; //これらは実際に使用されますconstint buttonPin1 =0; const int buttonPin2 =1; const int buttonPin3 =2; const int buttonPin4 =3; const int buttonPin5 =4; const int buttonPin6 =5; const int buttonPin7 =6; const int buttonPin8 =7; const int buttonPin9 =8; const int buttonPin10 =9; const int buttonPin11 =10; const int buttonPin12 =11; const int buttonPin13 =12; const int buttonPin14 =13; const int buttonPin15 =A0; const int buttonPin16 =A1; const int buttonPin17 =A2; const int buttonPin =A3; const int buttonPin19 =A4; const int buttonPin20 =A5; //配列内のClickButtonオブジェクトをインスタンス化するClickButtonbutton [21] ={//ダミーのClickButton(buttonPin0、LOW、CLICKBTN_PULLUP)、// Clickbutton ClickButton(buttonPin1 、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin2、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin3、LOW、CLI CKBTN_PULLUP)、ClickButton(buttonPin4、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin5、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin6、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin7、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin7、LOW、CLICKBTN_PULLUP)、ClickButton buttonPin9、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin10、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin11、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin12、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin13、LOW、CLICKBTN) )、ClickButton(buttonPin15、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin16、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin17、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin18、LOW、CLICKBTN_PULLUP)、ClickButton(buttonPin19、LOW 、LOW、CLICKBTN_PULLUP)、}; void setup(){//セットアップボタンタイマー(すべてミリ秒/ミリ秒)for(int i =1; i <=ボタン; i ++){button [i] .debounceTime =20; //ミリ秒単位のデバウンスタイマーbutton [i] .multiclickTime =250; //マルチクリックの制限時間button [i] .longClickTime =1000; //ロングクリックレジスタまでの時間}} void loop(){//配列内のすべてのボタンの状態を更新します//注:(int i =1; i <=ボタンの場合は「0」ではなく「1」で開始します; i ++){//すべてのbuittonボタンの状態を更新します[i] .Update(); } //ボタンの押下を実行if(button [1] .clicks!=0){switch(button [1] .clicks){case 1://シングルクリック// RESETボタン(F1)を押すpress_RESET();壊す;ケース2:// press_ESC();をダブルクリックします。壊す;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールド//ドライバーをオフにするpress_ESC(); //ハンドホイールモードを終了しますgoto_MACHINE_IO_MENU(); press_F2(); goto_MAIN_MENU();壊す;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [2] .clicks!=0){switch(button [2] .clicks){case 1://シングルクリック//メインメニューに移動press_ESC(); //ハンドホイールモードを終了しますgoto_MAIN_MENU();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [3] .clicks!=0){switch(button [3] .clicks){case 1://シングルクリックブレーク;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールド//ホームすべての軸press_ESC(); //ハンドホイールモードを終了しますgoto_MAIN_MENU();ショートカット_HOME_ALL();壊す;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [4] .clicks!=0){switch(button [4] .clicks){case 1://シングルクリック// TOGGLE MDIshortcut_TOGGLE_MDI();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [5] .clicks!=0){switch(button [5] .clicks){case 1://シングルクリック//ユーザーマクロ1:SET Z HEIGHT press_ESC(); //ハンドホイールモードを終了しますgoto_AUTO_MENU(); user_MACRO_1(); // SET Z HEIGHT break;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [6] .clicks!=0){switch(button [6] .clicks){case 1://シングルクリック// AUTOメニューに移動press_ESC(); //ハンドホイールモードを終了しますgoto_AUTO_MENU();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [7] .clicks!=0){switch(button [7] .clicks){case 1://シングルクリック// REDRAW GRAPHICS SCREEN press_ESC(); //ハンドホイールモードを終了しますgoto_AUTO_MENU(); press_F3(); //ブレークを再描画します;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [8] .clicks!=0){switch(button [8] .clicks){case 1://シングルクリック// LOAD FILE press_ESC(); //ハンドホイールモードを終了しますgoto_AUTO_MENU(); press_F2(); //ファイルブレークをロードします;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [9] .clicks!=0){switch(button [9] .clicks){case 1://シングルクリック// AUX1 TOGGLE(VACUUM CLEANER)//すぐに切り替わらないようにする/ 1000msの遅延if(millis()-aux1_delay> 1000){// AUX1のオンとオフを切り替えますshortcut_TOGGLE_AUX1(); //遅延タイマーを開始しますaux1aux1_delay =millis(); } 壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [10] .clicks!=0){switch(button [10] .clicks){case 1://シングルクリック// MIST TOGGLE(light)shortcut_TOGGLE_MIST();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [11] .clicks!=0){switch(button [11] .clicks){case 1://シングルクリック// Goto P1(g28)-USER MENU OPTIE 16 press_ESC(); user_MACRO_16();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [12] .clicks!=0){switch(button [12] .clicks){case 1://シングルクリック// Goto P2(g30)-USER MENU OPTIE 17 press_ESC(); user_MACRO_17();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [13] .clicks!=0){switch(button [13] .clicks){case 1://シングルクリック// Xのハンドルshortcut_HANDWHEEL_X();壊す;ケース2://ダブルクリック//ゼロXショートカット_ZERO_X();壊す;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールド//ユーザーマクロ18:X軸:ゼロ位置に移動G0 X0.0000 press_ESC(); goto_MAIN_MENU(); user_MACRO_18();壊す;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [14] .clicks!=0){switch(button [14] .clicks){case 1://シングルクリック// Yのハンドルshortcut_HANDWHEEL_Y();壊す;ケース2://ダブルクリック//ゼロYショートカット_ZERO_Y();壊す;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールド//ユーザーマクロ19:Y軸:ゼロ位置に移動G0 Y0.0000 press_ESC(); goto_MAIN_MENU(); user_MACRO_19();壊す;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [15] .clicks!=0){switch(button [15] .clicks){case 1://シングルクリック// Zのハンドルshortcut_HANDWHEEL_Z();壊す;ケース2://ダブルクリック//ゼロZショートカット_ZERO_Z();壊す;ケース3://トリプルクリックブレーク; case -1://シングルクリックアンドホールド// USER MACRO 20:Z-axis-goto MACHINE up position G53 G0 Z29.0000 press_ESC(); goto_MAIN_MENU(); user_MACRO_20();壊す;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} //軸if(button [16] .clicks!=0){switch(button [16] .clicks){case 1://シングルクリックブレーク;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [17] .clicks!=0){switch(button [17] .clicks){case 1://シングルクリック//ハンドル速度1xshortcut_HANDWHEEL_X1();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [18] .clicks!=0){switch(button [18] .clicks){case 1://シングルクリック//ハンドル速度10xshortcut_HANDWHEEL_X10();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [19] .clicks!=0){switch(button [19] .clicks){case 1://シングルクリック//ハンドル速度100xshortcut_HANDWHEEL_X100();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }} if(button [20] .clicks!=0){switch(button [20] .clicks){case 1://シングルクリックshortcut_TOGGLE_MACHINE_COORDINATES();壊す;ケース2://ダブルクリックブレーク;ケース3://トリプルクリックブレーク;ケース-1://シングルクリックアンドホールドブレーク;ケース-2://ダブルクリックしてブレークを保持します。ケース-3://トリプルクリックアンドホールドブレーク; }}} / * AduinoのWebサイトで、HIDとしてLeonardoを使用する場合の注意:キーボード機能により、Leonardo、Micro、またはDueが接続されたコンピューターにキーストロークを送信できるようになります。注:すべての可能なASCII文字、特に印刷されない文字をキーボードライブラリで送信できるわけではありません。ライブラリは修飾キーの使用をサポートしています。修飾キーは、同時に押されたときに別のキーの動作を変更します。サポートされているキーとその使用法の詳細については、ここを参照してください。 Keyboard.begin()Keyboard.end()Keyboard.press()Keyboard.print()Keyboard.println()Keyboard.release()Keyboard.releaseAll()Keyboard.write()参照言語|ライブラリ|比較|キーボード修飾子の変更Keyboard.write()およびKeyboard.press()およびKeyboard.release()コマンドは、すべての可能なASCII文字で機能するわけではなく、キーボードのキーに対応するもののみで機能します。たとえば、バックスペースは機能しますが、他の印刷できない文字の多くは予測できない結果を生成します。大文字(およびその他のキー)の場合、送信されるのはShiftと文字です(つまり、キーボードの両方のキーを押すのと同じです)。修飾キーは、2つを組み合わせて押すと、別のキーの通常の動作を変更するコンピューターキーボードの特別なキーです。 ASCII値とそれらが表す文字または関数の詳細については、asciitable.comを参照してください。複数のキーを押すには、Keyboard.press()を使用します。修飾キーのLeonardoの定義を以下に示します。 130 KEY_LEFT_GUI 0x83の131 KEY_RIGHT_CTRL 0x84の132 KEY_RIGHT_SHIFT 0x85 133 KEY_RIGHT_ALT 0x86で134 KEY_RIGHT_GUI 0x87の135 KEY_UP_ARROW 0xDA 218 KEY_DOWN_ARROW 0xD9 217 KEY_LEFT_ARROW 0xD8 216 KEY_RIGHT_ARROW 0xD7 215 KEY_BACKSPACEコード(0xB2)178 KEY_TAB 0xB3 179 KEY_RETURN 0xB0 176 KEY_ESCの0xB1 177 KEY_INSERT 0xD1 209 KEY_DELETEは0xD4 212 KEY_PAGE_UP 0xD3 211 KEY_PAGE_DOWN 0xD6 214 KEY_HOME 0xD2 210 KEY_END 0xD5 213 KEY_CAPS_LOCK 0xC1 193 KEY_F1 0xC2 194 KEY_F2 0xC3 195 KEY_F3 0xC4 196 KEY _F4 0xC5 197 KEY_F5 0xC6 198 KEY_F6 0xC7 199 KEY_F7 0xC8 200 KEY_F8 0xC9 201 KEY_F9 0xCA 202 KEY_F10 0xCB 203 KEY_F11 0xCC 204 KEY_F12 0xCD 205 * / void press_RESET(){ Keyboard.press(KEY_F1); delay(100); Keyboard.releaseAll();} void press_ESC(){Keyboard.begin(); Keyboard.press(KEY_ESC); delay(100); Keyboard.releaseAll();} void press_F2(){Keyboard.begin(); Keyboard.press(KEY_F2); delay(100); Keyboard.releaseAll();} void press_F3(){Keyboard.begin(); Keyboard.press(KEY_F3); delay(100); Keyboard.releaseAll();} void press_F4(){Keyboard.begin(); Keyboard.press(KEY_F4); delay(100); Keyboard.releaseAll();} void press_F5(){Keyboard.begin(); Keyboard.press(KEY_F5); delay(100); Keyboard.releaseAll();} void press_F6(){Keyboard.begin(); Keyboard.press(KEY_F6); delay(100); Keyboard.releaseAll();} void press_F7(){Keyboard.begin(); Keyboard.press(KEY_F7); delay(100); Keyboard.releaseAll();} void press_F8(){Keyboard.begin(); Keyboard.press(KEY_F8); delay(100); Keyboard.releaseAll();} void press_F9(){Keyboard.begin(); Keyboard.press(KEY_F9); delay(100); Keyboard.releaseAll();} void press_F10(){Keyboard.begin(); Keyboard.press(KEY_F10); delay(100); Keyboard.releaseAll();} void press_F11(){Keyboard.begin(); Keyboard.press(KEY_F11); delay(100); Keyboard.releaseAll();} void press_F12(){Keyboard.begin(); Keyboard.press(KEY_F12); delay(100); Keyboard.releaseAll();} void goto_MAIN_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F1); delay(100); Keyboard.releaseAll();} void goto_HOME_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F2); delay(100); Keyboard.releaseAll();} void goto_ZERO_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F3); delay(100); Keyboard.releaseAll();} void goto_AUTO_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F4); delay(100); Keyboard.releaseAll();} void goto_MACHINE_IO_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F7); delay(100); Keyboard.releaseAll();} void goto_GRAPHICS_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F8); delay(100); Keyboard.releaseAll();} void goto_JOG_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F9); delay(100); Keyboard.releaseAll();} void goto_JOG_PAD(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F10); delay(100); Keyboard.releaseAll();} void goto_USER1_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F11); delay(100); Keyboard.releaseAll();} void goto_USER2_MENU(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F12); delay(100); Keyboard.releaseAll();} void shutdown_HOME_ALL(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'h'); delay(100); Keyboard.releaseAll();} voidshortcut_ZERO_X(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( '1'); delay(100); Keyboard.releaseAll();} voidshortcut_ZERO_Y(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( '2'); delay(100); Keyboard.releaseAll();} voidshortcut_ZERO_Z(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( '3'); delay(100); Keyboard.releaseAll();} void shutdown_HANDWHEEL_X(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press( 'x'); delay(100); Keyboard.releaseAll();} void shutdown_HANDWHEEL_Y(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press( 'y'); delay(100); Keyboard.releaseAll();} voidshortcut_HANDWHEEL_Z(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press( 'z'); delay(100); Keyboard.releaseAll();} voidshortcut_HANDWHEEL_X1(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'n'); delay(100); Keyboard.releaseAll();} voidshortcut_HANDWHEEL_X10(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'o'); delay(100); Keyboard.releaseAll();} void shutdown_HANDWHEEL_X100(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'p'); delay(100); Keyboard.releaseAll();} void shutdown_TOGGLE_MDI(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_F6); delay(100); Keyboard.releaseAll();} void shutdown_TOGGLE_MACHINE_COORDINATES(){Keyboard.begin(); //マシン/作業調整を切り替えますKeyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'w'); delay(100); Keyboard.releaseAll();} void shutdown_TOGGLE_AUX1(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'm'); delay(100); Keyboard.releaseAll();} void shutdown_TOGGLE_MIST(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'l'); delay(100); Keyboard.releaseAll();} void shutdown_TOGGLE_FLOOD(){Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press( 'k'); delay(100); Keyboard.releaseAll();} void user_MACRO_1(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press( '1'); delay(100); Keyboard.releaseAll();} void user_MACRO_2(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press( '2'); delay(100); Keyboard.releaseAll();} void user_MACRO_3(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press( '3'); delay(100); Keyboard.releaseAll();} void user_MACRO_4(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press( '4'); delay(100); Keyboard.releaseAll();} void user_MACRO_5(){Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press( '5'); delay(100); Keyboard.releaseAll(); ...このファイルは切り捨てられています。完全な内容を確認するにはダウンロードしてください。

カスタムパーツとエンクロージャー

これは、ボタンごとに最も多くの機能を取得するために必要な最も重要なライブラリです clickbutton_hq5qeT4toX.zip cnc_pendant_SenmxC8UCj.zip

回路図

あまり良い回路図ではありませんが、それは仕事をします...

製造プロセス

  1. ボタン
  2. プッシュボタンを使用したPWMによる調光ライト
  3. Arduino Spybot
  4. FlickMote
  5. 自家製テレビB-Gone
  6. マスタークロック
  7. Find Me
  8. カスタマイズ可能なパンチ可能なキーボードボタンの作り方
  9. Arduino Power
  10. ワイヤレスペンダントはCNCシステムに接続します
  11. CNC オペレータ パネルのリセット ボタンとは