Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Pendentif CNC basé sur Arduino HID

Composants et fournitures

Arduino Leonardo
× 1
Des boutons-poussoirs momentanés, allumés et des étiquettes peuvent être ajoutés !
× 1

À propos de ce projet

Dernière mise à jour de l'article :

2018-07-31 :ajout des fichiers CAO

2018-07-24 :ajout de la section schéma et programmation

Pourquoi ce projet ?

Vous pouvez acheter un pendentif pour votre machine CNC, mais j'ai construit ma machine CNC en bois, alors pourquoi ne pas fabriquer mon propre pendentif ?

En plus de cela, un pendentif ordinaire pour ma carte contrôleur coûterait 100 euros et n'aurait que 2 boutons et un volant.

Mon pendentif a 23 boutons avec jusqu'à 6 fonctions par bouton et une manivelle.

Un commentaire pourrait être, "c'est gros et lourd!" Mais dans la pratique, il s'est avéré de manière inattendue très pratique d'avoir un pendentif qui reste en place lorsque l'on tourne le volant...

Comment ça marche ?

La beauté de l'Arduino avec une puce 32u4 (tous les modèles n'ont pas cette puce) est la possibilité d'émuler un clavier et/ou une souris. Lorsque vous connectez le Leonardo à un ordinateur, il « voit » un clavier. Super !

Ainsi, lorsque vous programmez l'Arduino, ajoutez-y des commutateurs et connectez-le à un PC ou à un Mac, vous pouvez envoyer (plusieurs) frappes / mouvements de souris à l'ordinateur en appuyant sur un bouton. Comme je l'ai mentionné, 23 boutons/6 fonctions par bouton =beaucoup d'options..

Tout dépend de l'utilisation de la bonne bibliothèque pour le sketch Arduino ! Après des heures de recherche, j'ai finalement trouvé une excellente bibliothèque que j'ai incluse sur cette page :Clickbutton.

Avec cette bibliothèque, vous obtenez ces possibilités pour chaque bouton (momentané !) :

  • Un seul clic
  • Double-clic
  • Triple coup
  • Cliquez et maintenez enfoncé
  • Double-cliquez et maintenez
  • Triple clic et maintien

Vous bénéficiez également de la fonctionnalité anti-rebond dans la bibliothèque Clickbutton qui est importante.

vous pouvez ajuster les timings pour chaque bouton, mais le timing standard est>=250ms pour reconnaître un clic et>=1000ms pour reconnaître un bouton enfoncé.

Juste un extrait de mon croquis pour le bouton de l'axe X à 3 fonctions (touche 13) :

if (bouton[13].clicks !=0)
{
switch (button[13].clicks)
{
cas 1 :// Simple clic
// Volant sur X
raccourci_HANDWHEEL_X();
pause ;
cas 2 :// Double-clic
// Zéro X
raccourci_ZERO_X( );
break;
case 3 :// Triple clic
break;
case -1 :// Single Click and Hold
// USER MACRO 18 :X -axe:goto work position zéro G0 X0.0000
press_ESC();
goto_MAIN_MENU();
user_MACRO_18();
break;
case -2:/ / Double Click and Hold
break ;
case -3 :// Triple Click and Hold
break ;
}
}

L'enclos

J'ai choisi d'utiliser du bois d'acajou pour le boîtier suspendu. J'aime travailler le bois et l'aspect et la sensation sont merveilleux. De cette façon, j'ai également pu fabriquer un étui vraiment personnalisé, ce qui n'est pas toujours possible avec un étui de type ABS prêt à l'emploi que vous pouvez acheter pour 20 à 50 euros.

Le dessin a été réalisé avec le logiciel Vectric Cut2D. Je suis content d'avoir investi dans ce progiciel car il a rendu la courbe d'apprentissage de la CNC beaucoup moins raide et plus amusante. Il vous aide également à concevoir très facilement des travaux recto-verso.

Après un peu de ponçage, le bois a reçu de nombreuses couches de vernis transparent.

Vitesse d'avance dans cette vidéo :

2400mm/min (~ 94"/min) de 40mm/sec. (~ 1.57") avec une coupe de 3mm (1/8") à la fois

Les commutateurs

Les interrupteurs sont super. Ils sont du type momentané, à l'exception de l'interrupteur que j'utilise pour allumer/éteindre les LED. Vous pouvez mettre une étiquette derrière le couvercle supérieur transparent et si vous le souhaitez, vous pouvez allumer l'interrupteur avec la LED intégrée.

J'ai utilisé une résistance de 1KΩ par interrupteur, en utilisant 2mA à 5Volts.

Voici une vidéo avec un son néerlandais, uniquement pour vous permettre d'entendre le son que font les commutateurs. Mes commentaires ne sont pas importants. J'ai dit que les interrupteurs sont un peu bruyants mais au moins vous savez quand vous les avez poussés;)

L'un des inconvénients de l'utilisation de ces commutateurs est qu'ils nécessitent un boîtier plutôt haut ou « épais ». L'épaisseur du bois était de 21 mm (0,82" ou 53/64") pour la partie supérieure ET inférieure. après usinage, l'épaisseur totale du pendentif est de 36,5 mm (14,37 ou 14 3/8 pouces)

La connexion des commutateurs est si facile... J'utilise les résistances de rappel Arduino intégrées, donc tout ce que vous avez à faire est de connecter un côté de tous les commutateurs à la terre et l'autre côté aux entrées Arduino.

Les étiquettes de commutateur

Pour étiqueter les commutateurs, j'ai utilisé un autocollant en poly-vinyle de haute qualité pour mon imprimante laser couleur. (Également disponible pour les imprimantes à jet d'encre). L'impression sur du papier ordinaire n'était pas une option car vous voyez la structure du papier très bien lorsqu'il est allumé.

Ensuite, j'ai enlevé les capuchons transparents des interrupteurs et j'ai mis les étiquettes sur le morceau de plastique en dessous.

Les icônes sont les mêmes que ceux utilisés dans le logiciel CNC Eding qui est inclus avec le matériel lorsque vous l'achetez. Je viens de copier les icônes JPEG du répertoire du logiciel et j'en ai modifié certaines dans un programme graphique pour les personnaliser selon mes besoins.

Le volant

Eh bien, celui-ci est un volant à main CNC électronique standard 60 mm 100PPR 6 terminaux

Donc 100 impulsions par rotation, dans la plupart des logiciels CNC, vous pouvez éditer cette valeur.

L'électronique

En tant que HID (Human Interface Device), j'ai utilisé un microcontrôleur Arduino Leonardo.

Cette carte microcontrôleur a été abandonnée mais j'ai pu l'acheter dans plusieurs boutiques en ligne. Comme alternative, vous pouvez utiliser l'Arduino Micro qui utilise la même puce 32u4.

De cette façon, je pouvais imiter les frappes du clavier et contrôler de nombreuses fonctions du logiciel d'usinage CNC, dans mon cas Eding CNC.

L'Arduino Leonardo a 23 broches d'entrée, donc plus que suffisant. Comme dit, vous pouvez attribuer 6 fonctions par bouton.

La consommation électrique totale est de 150 mA avec les voyants des touches allumés.

Programmation du microcontrôleur Arduino

Pour programmer l'Arduino, vous devez laisser le pendentif connecté à l'alimentation CNC et télécharger le nouveau croquis à l'aide du logiciel Arduino IDE. (Voir la note ci-dessous) Vous utilisez donc bien entendu la même prise USB qui sert à émuler le clavier.

Si vous souhaitez utiliser un autre PC (ordinateur portable) pour la programmation, insérez simplement la prise USB dans l'autre PC et programmez l'Arduino, en laissant à nouveau le pendentif connecté et alimenté par l'alimentation CNC

Amusez-vous à créer votre propre pendentif !

Code

  • Code pendentif CNC
Code pendentif CNCArduino
/* Ce croquis consiste à utiliser un Leanardo comme HID pour, dans ce cas, un pendentif CNC Eding. La beauté d'utiliser un Leonardo est que vous êtes si flexible ! J'ai 20 clés sur mon pendentif mais par clé, vous pouvez utiliser 6 fonctions différentes. Beaucoup trop mais j'utilise sur certaines touches 3 fonctions. Très pratique et facile à utiliser et à gérer.*/#include "ClickButton.h"#include "Keyboard.h"long int aux1_delay =0;// Nr. de boutons dans le tableauconst int boutons =20 ;// le bouton// boutonPin0 est un mannequin parce que je veux commencer par '1' au lieu de '0'const int boutonPin0 =0 ;// ce sont en fait utilisésconst int boutonPin1 =0;const int boutonPin2 =1;const int boutonPin3 =2;const int boutonPin4 =3;const int boutonPin5 =4;const int boutonPin6 =5;const int boutonPin7 =6;const int boutonPin8 =7;const int boutonPin9 =8;const bouton intPin10 =9;const int boutonPin11 =10;const int boutonPin12 =11;const int boutonPin13 =12;const int boutonPin14 =13;const int boutonPin15 =A0;const int boutonPin16 =A1;const int boutonPin17 =A2;const int boutonPin18 =A3;const int buttonPin19 =A4;const int buttonPin20 =A5;// Instanciation d'objets ClickButton dans un tableauClickButton button[21] ={ // ClickButton factice (buttonPin0, LOW, CLICKBTN_PULLUP), // instances utilisées de Clickbutton ClickButton (buttonPin1 , LOW, CLICKBTN_PULLUP), ClickButton (buttonPin2, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin3, LOW, CLICKBTN_ PULLUP), ClickButton (buttonPin4, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin5, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin6, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin7, LOW, CLICKBTN_TNPULLUP), ClickButton (bouton CLICKBTN8, buttonPin9, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin10, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin11, LOW, CLICKBTN_PULLUP), ClickButton (boutonPin12, LOW, CLICKBTN_PULLUP), ClickButton (boutonPin13, TNULLPIN13, LOW, CLICKTNB) ), ClickButton (buttonPin15, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin16, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin17, LOW, CLICKBTN_PULLUP), ClickButton (buttonPin18, LOW, CLICKBTN_PULLUP), ClickButton (bouton CLICKBPin19, LOW_Button) , LOW, CLICKBTN_PULLUP),};void setup(){ // Configurer les minuteries des boutons (toutes en millisecondes / ms) pour (int i =1; i <=boutons ; i++) { bouton[i].debounceTime =20; // Debounce timer en ms button[i].multiclickTime =250; // Limite de temps pour le bouton multi-clics[i].longClickTime =1000; // Temps jusqu'à ce que les clics longs s'enregistrent }}boucle void(){ // État de mise à jour de tous les boutons du tableau // REMARQUE :pas démarré à '0' mais '1' pour (int i =1; i <=boutons; i++) { // Mettre à jour l'état de tous les boutons [i].Update(); } // exécuter les pressions sur le bouton if (button[1].clicks !=0) { switch (button[1].clicks) { case 1 :// Single click // appuyez sur le bouton RESET (F1) press_RESET(); Pause; cas 2 :// Double-cliquez sur press_ESC(); Pause; cas 3 :// Rupture triple clic ; case -1 :// Cliquez une fois et maintenez enfoncé // DÉSACTIVEZ LES PILOTES press_ESC(); // sortir du mode manivelle goto_MACHINE_IO_MENU(); appuyez sur_F2(); goto_MAIN_MENU(); Pause; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[2].clicks !=0) { switch (button[2].clicks) { case 1:// Single click // goto MAIN menu press_ESC(); // sortir du mode manivelle goto_MAIN_MENU(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[3].clicks !=0) { switch (button[3].clicks) { case 1 :// Pause clic simple ; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 :// Cliquez et maintenez enfoncé // HOME tous les axes press_ESC(); // sortir du mode manivelle goto_MAIN_MENU(); raccourci_HOME_ALL(); Pause; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[4].clicks !=0) { switch (button[4].clicks) { case 1 :// Simple clic // BASCULER MDI raccourci_TOGGLE_MDI(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[5].clicks !=0) { switch (button[5].clicks) { case 1:// Single click // USER MACRO 1:SET Z HEIGHT press_ESC(); // sortir du mode manivelle goto_AUTO_MENU(); user_MACRO_1(); // SET Z HEIGHT break; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[6].clicks !=0) { switch (button[6].clicks) { case 1 :// Single click // goto menu AUTO press_ESC(); // sortir du mode manivelle goto_AUTO_MENU(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (bouton[7].clics !=0) { switch (bouton[7].clics) { cas 1 :// Simple clic // REDRESSE L'ÉCRAN GRAPHIQUE press_ESC(); // sortir du mode manivelle goto_AUTO_MENU(); appuyez sur_F3(); // redessine la coupure ; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (bouton[8].clics !=0) { switch (bouton[8].clics) { cas 1 :// Simple clic // CHARGER LE FICHIER press_ESC(); // sortir du mode manivelle goto_AUTO_MENU(); appuyez sur_F2(); // charge un saut de fichier ; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[9].clicks !=0) { switch (button[9].clicks) { case 1:// Single click // AUX1 TOGGLE (VACUUM CLEANER) // empêcher le passage à trop tôt donc seulement après / / un délai de 1000ms if ( millis() - aux1_delay> 1000 ) { // activer ou désactiver AUX1 raccourci_TOGGLE_AUX1(); // démarrer la temporisation aux1 aux1_delay =millis(); } Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[10].clicks !=0) { switch (button[10].clicks) { case 1 :// Single click // MIST TOGGLE (light) short_TOGGLE_MIST(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[11].clicks !=0) { switch (button[11].clicks) { case 1 :// Single click // Goto P1 (g28) - USER MENU OPTIE 16 press_ESC(); user_MACRO_16(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[12].clicks !=0) { switch (button[12].clicks) { case 1 :// Single click // Goto P2 (g30) - USER MENU OPTIE 17 press_ESC(); user_MACRO_17(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[13].clicks !=0) { switch (button[13].clicks) { case 1 :// Simple clic // Volant sur X raccourci_HANDWHEEL_X(); Pause; cas 2 :// Double-clic // Zéro X raccourci_ZERO_X(); Pause; cas 3 :// Rupture triple clic ; case -1 :// Single Click and Hold // USER MACRO 18 :axe X :aller à la position zéro de travail G0 X0.0000 press_ESC(); goto_MAIN_MENU(); user_MACRO_18(); Pause; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[14].clicks !=0) { switch (button[14].clicks) { case 1 :// Simple clic // Manivelle sur Y raccourci_HANDWHEEL_Y(); Pause; cas 2 :// Double-clic // Zéro Y raccourci_ZERO_Y(); Pause; cas 3 :// Rupture triple clic ; case -1 :// Single Click and Hold // USER MACRO 19 :axe Y :aller à la position zéro de travail G0 Y0.0000 press_ESC(); goto_MAIN_MENU(); user_MACRO_19(); Pause; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[15].clicks !=0) { switch (button[15].clicks) { case 1 :// Simple clic // Volant sur Z raccourci_HANDWHEEL_Z(); Pause; cas 2 :// Double-clic // Zéro Z raccourci_ZERO_Z(); Pause; cas 3 :// Rupture triple clic ; case -1 :// Single Click and Hold // USER MACRO 20 :axe Z-goto position MACHINE G53 G0 Z29.0000 press_ESC(); goto_MAIN_MENU(); user_MACRO_20(); Pause; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } // Un axe if (button[16].clicks !=0) { switch (button[16].clicks) { case 1 :// Single click break; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[17].clicks !=0) { switch (button[17].clicks) { case 1 :// Simple clic // Vitesse du volant 1x raccourci_HANDWHEEL_X1(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[18].clicks !=0) { switch (button[18].clicks) { case 1 :// Simple clic // Vitesse du volant 10x raccourci_HANDWHEEL_X10(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[19].clicks !=0) { switch (button[19].clicks) { case 1 :// Simple clic // Vitesse du volant 100x raccourci_HANDWHEEL_X100(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } } if (button[20].clicks !=0) { switch (button[20].clicks) { case 1 :// Un seul clic sur le raccourci_TOGGLE_MACHINE_COORDINATES(); Pause; cas 2 :// Double clic sur pause ; cas 3 :// Rupture triple clic ; case -1 : / Un seul clic et pause ; case -2 :// Double clic et pause ; case -3 :// Triple clic et pause ; } }}/* Notes du site Web Aduino sur l'utilisation d'un Leonardo comme HID :Les fonctions du clavier permettent à un Leonardo, Micro ou Due d'envoyer des frappes à un ordinateur connecté. Remarque :tous les caractères ASCII possibles, en particulier ceux non imprimables, ne peuvent pas être envoyés avec la bibliothèque de clavier. La bibliothèque prend en charge l'utilisation de touches de modification. Les touches de modification changent le comportement d'une autre touche lorsqu'elles sont enfoncées simultanément. Voir ici pour plus d'informations sur les clés prises en charge et leur utilisation. Keyboard.begin() Keyboard.end() Keyboard.press() Keyboard.print() Keyboard.println() Keyboard.release() Keyboard.releaseAll() Keyboard.write() Langue de référence | Bibliothèques | Comparaison | Modifications des modificateurs de clavier Les commandes Keyboard.write() et Keyboard.press() et Keyboard.release() ne fonctionnent pas avec tous les caractères ASCII possibles, uniquement ceux qui correspondent à une touche du clavier. Par exemple, le retour arrière fonctionne, mais la plupart des autres caractères non imprimables produisent des résultats imprévisibles. Pour les lettres majuscules (et autres touches), ce qui est envoyé est shift plus le caractère (c'est-à-dire l'équivalent d'appuyer sur ces deux touches du clavier). Une touche de modification est une touche spéciale sur un clavier d'ordinateur qui modifie l'action normale d'une autre touche lorsque les deux sont enfoncées en combinaison. Pour plus d'informations sur les valeurs ASCII et les caractères ou fonctions qu'elles représentent, consultez asciitable.com. 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 * / vide press_RESET(){ Keyboard.begin(); Keyboard.press(KEY_F1) ; retard (100); Keyboard.releaseAll();}void press_ESC(){ Keyboard.begin(); Keyboard.press(KEY_ESC); retard (100); Keyboard.releaseAll();}void press_F2(){ Keyboard.begin(); Keyboard.press(KEY_F2) ; retard (100); Keyboard.releaseAll();}void press_F3(){ Keyboard.begin(); Keyboard.press(KEY_F3) ; retard (100); Keyboard.releaseAll();}void press_F4(){ Keyboard.begin(); Keyboard.press(KEY_F4) ; retard (100); Keyboard.releaseAll();}void press_F5(){ Keyboard.begin(); Keyboard.press(KEY_F5) ; retard (100); Keyboard.releaseAll();}void press_F6(){ Keyboard.begin(); Keyboard.press(KEY_F6) ; retard (100); Keyboard.releaseAll();}void press_F7(){ Keyboard.begin(); Keyboard.press(KEY_F7) ; retard (100); Keyboard.releaseAll();}void press_F8(){ Keyboard.begin(); Keyboard.press(KEY_F8) ; retard (100); Keyboard.releaseAll();}void press_F9(){ Keyboard.begin(); Keyboard.press(KEY_F9) ; retard (100); Keyboard.releaseAll();}void press_F10(){ Keyboard.begin(); Keyboard.press(KEY_F10) ; retard (100); Keyboard.releaseAll();}void press_F11(){ Keyboard.begin(); Keyboard.press(KEY_F11); retard (100); Keyboard.releaseAll();}void press_F12(){ Keyboard.begin(); Keyboard.press(KEY_F12); retard (100); Keyboard.releaseAll();}void goto_MAIN_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F1) ; retard (100); Keyboard.releaseAll();}void goto_HOME_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F2) ; retard (100); Keyboard.releaseAll();}void goto_ZERO_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F3) ; retard (100); Keyboard.releaseAll();}void goto_AUTO_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F4) ; retard (100); Keyboard.releaseAll();}void goto_MACHINE_IO_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F7) ; retard (100); Keyboard.releaseAll();}void goto_GRAPHICS_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F8) ; retard (100); Keyboard.releaseAll();}void goto_JOG_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F9) ; retard (100); Keyboard.releaseAll();}void goto_JOG_PAD(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F10) ; retard (100); Keyboard.releaseAll();}void goto_USER1_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F11); retard (100); Keyboard.releaseAll();}void goto_USER2_MENU(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F12); retard (100); Keyboard.releaseAll();}void short_HOME_ALL(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('h'); retard (100); Keyboard.releaseAll();}void short_ZERO_X(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('1'); retard (100); Keyboard.releaseAll();}void short_ZERO_Y(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('2'); retard (100); Keyboard.releaseAll();}void short_ZERO_Z(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('3'); retard (100); Keyboard.releaseAll();}void short_HANDWHEEL_X(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press('x'); retard (100); Keyboard.releaseAll();}void short_HANDWHEEL_Y(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press('y'); retard (100); Keyboard.releaseAll();}void short_HANDWHEEL_Z(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press('z'); retard (100); Keyboard.releaseAll();}void short_HANDWHEEL_X1(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('n'); retard (100); Keyboard.releaseAll();}void short_HANDWHEEL_X10(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('o'); retard (100); Keyboard.releaseAll();}void short_HANDWHEEL_X100(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('p'); retard (100); Keyboard.releaseAll();}void short_TOGGLE_MDI(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_F6) ; retard (100); Keyboard.releaseAll();}void short_TOGGLE_MACHINE_COORDINATES(){ Keyboard.begin(); // BASCULER LES COORDONNÉES MACHINE/TRAVAIL Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('w'); retard (100); Keyboard.releaseAll();}void short_TOGGLE_AUX1(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('m'); retard (100); Keyboard.releaseAll();}void short_TOGGLE_MIST(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('l'); retard (100); Keyboard.releaseAll();}void short_TOGGLE_FLOOD(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('k'); retard (100); Keyboard.releaseAll();}void user_MACRO_1(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press('1'); retard (100); Keyboard.releaseAll();}void user_MACRO_2(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press('2'); retard (100); Keyboard.releaseAll();}void user_MACRO_3(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press('3'); retard (100); Keyboard.releaseAll();}void user_MACRO_4(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press('4'); retard (100); Keyboard.releaseAll();}void user_MACRO_5(){ Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press('5'); retard (100); Keyboard.releaseAll();...Ce fichier a été tronqué, veuillez le télécharger pour voir son contenu complet.

Pièces et boîtiers personnalisés

C'est la bibliothèque la plus importante dont vous avez besoin pour obtenir le plus de fonctions par bouton clickbutton_hq5qeT4toX.zip cnc_pendant_SenmxC8UCj.zip

Schémas

Un schéma pas très bon mais ça fera l'affaire...

Processus de fabrication

  1. Bouton
  2. Variation des lumières avec PWM à l'aide du bouton-poussoir
  3. Arduino Spybot
  4. FlickMote
  5. Téléviseur maison B-Gone
  6. horloge maîtresse
  7. Trouvez-moi
  8. Le pendentif sans fil se connecte aux systèmes CNC
  9. Qu'est-ce que le bouton RESET sur le panneau de commande CNC