Pendentif CNC Arduino HID personnalisé : contrôle DIY économique
Composants et fournitures
- 1 × Arduino Leonardo (puce 32u4 — indispensable pour l'émulation HID clavier/souris)
- 23 × Boutons poussoirs momentanés (avec LED et étiquettes possibles)
- 1 × Volant de commande (handwheel) 60 mm, 100 PPR, 6 bornes
- Boîtier en bois (acajou, 21 mm d'épaisseur)
- Résistances 1 kΩ (une par bouton, LED 2 mA @ 5 V)
- Autocollants polyvinyle pour étiquettes (imprimante laser/couleur)
À propos du projet
Dernières mises à jour : juil. 2018 (fichiers CAO), juil. 2018 (schéma et programmation).
Pourquoi ce projet ?
Un pendentif commercial pour ma carte de commande CNC coûte ~100 € avec seulement 2 boutons et un volant. Le mien a 23 boutons (jusqu'à 6 fonctions chacun) + volant. Il est grand et lourd, mais cela le rend stable lors de l'utilisation du volant.




Principe de fonctionnement
L'Arduino Leonardo (puce 32u4) peut émuler un clavier/souris USB. Branché sur le PC, il est vu comme un clavier. Chaque bouton poussoir (momentané) peut déclencher jusqu'à 6 actions grâce à la bibliothèque ClickButton :
- Clic simple
- Double clic
- Triple clic
- Clic simple + maintien
- Double clic + maintien
- Triple clic + maintien
La bibliothèque gère l'anti-rebond (débounce). Temps par défaut : ≥ 250 ms pour un clic, ≥ 1000 ms pour un maintien.
Exemple pour le bouton axe X (broche 13) :
if (button[13].clicks != 0) {
switch (button[13].clicks) {
case 1: shortcut_HANDWHEEL_X(); break; // Clic simple : volant sur X
case 2: shortcut_ZERO_X(); break; // Double clic : mise à zéro X
case 3: break; // Triple clic : (réservé)
case -1: press_ESC(); goto_MAIN_MENU(); user_MACRO_18(); break; // Simple + hold
case -2: break; // Double + hold
case -3: break; // Triple + hold
}
}
Le boîtier
Boîtier en acajou usiné sur ma CNC (logiciel Vectric Cut2D). Ponçage + plusieurs couches de vernis. L'épaisseur totale après usinage : 36,5 mm.








Les interrupteurs
Boutons momentanés (sauf celui des LED). Couvercle transparent pour étiquettes, LED intégrée. Résistance 1 kΩ par bouton (2 mA @ 5 V). Câblage simple : toutes les bornes communes à la masse, l'autre borne sur les entrées Arduino (pull-up internes).
Étiquettes des boutons
Autocollants polyvinyle haute qualité (imprimante laser couleur). Icônes reprises du logiciel Eding CNC, personnalisées.
Le volant (handwheel)
Modèle standard 60 mm, 100 impulsions/rotation, 6 bornes. La plupart des logiciels CNC permettent de régler cette valeur.
L'électronique
Arduino Leonardo (ou Micro, même puce 32u4) en HID. 23 entrées numériques/analogiques suffisantes. Consommation ~150 mA (LED allumées).



Programmation
Laisser le pendentif alimenté par l'alimentation CNC, brancher l'USB sur le PC (même prise) et téléverser via l'IDE Arduino. Pour programmer sur un autre PC, déplacer la prise USB tout en laissant le pendentif alimenté.
Code complet
Bibliothèque indispensable : ClickButton (fournie en pièce jointe). Le sketch complet est trop long pour être affiché ici ; téléchargez-le depuis les pièces jointes.
Fonctions principales :
- Gestion de 20 boutons via tableau
ClickButton button[21](index 1..20). - Chaque bouton :
debounceTime=20ms,multiclickTime=250ms,longClickTime=1000ms. - Fonctions d'envoi de raccourcis clavier (Ctrl+Shift+X, Alt+F1, etc.) via
Keyboard.press()/releaseAll(). - Raccourcis Eding CNC : RESET (F1), ESC, menus (Alt+F1..F12), HOME ALL (Ctrl+H), ZERO X/Y/Z (Ctrl+1/2/3), HANDWHEEL X/Y/Z (Ctrl+Shift+X/Y/Z), vitesse volant (Ctrl+N/O/P), TOGGLE MDI (Ctrl+F6), AUX1/MIST/FLOOD, macros utilisateur (Alt+1..20), etc.
Référence modificateurs clavier Leonardo : KEY_LEFT_CTRL (0x80), KEY_LEFT_SHIFT (0x81), KEY_LEFT_ALT (0x82), KEY_F1..F12 (0xC2..0xCD), flèches, etc.
Pièces CAO et boîtiers
- clickbutton_hq5qeT4toX.zip — bibliothèque ClickButton (essentielle).
- cnc_pendant_SenmxC8UCj.zip — fichiers CAO du boîtier (Vectric Cut2D).
Schéma électrique
Schéma simplifié : tous les boutons en pull-up vers GND, volant sur entrées dédiées, Leonardo alimenté par USB/CNC.

Processus de fabrication
- Le bouton : de la fixation antique à l'innovation moderne
- Contrôler la Luminosité de LEDs par PWM avec un Bouton Poussoir sur Arduino Mega
- Construire un Spybot Arduino piloté par Bluetooth
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- OPENwiTP d'Osai USA : pendant d'enseignement sans fil pour contrôle CNC efficace
- Comprendre le bouton Reset sur panneau opérateur CNC : Fonction et utilisation