kb:projects:arduino:how_to_add_spindle_startstopspeed_control_to_machine

How to add spindle start/stop/speed control to machine

Arduino Pro Micro with 32U4 MCU.

Arduino Project:
CmdPanel.zip

Expression file:
Expr_CmdPanel.txt

#OnInit
print("#OnInit CmdPanel: ", scope_name);
 
cmd("Machine.Override.Spindle.Show", 1);
 
hnd = array_new();
path = "\\?\hid#vid_2341&pid_8036&mi_02#a&11bee4d1&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";
usb_open(path);
usb_addlistener(path, "#OnUsbCmdPanel", hnd, 16);
 
#OnShutdown
;print("#OnShutdown CmdPanel:", scope_name);
usb_remlistener(path);
usb_close(path);
array_delete(hnd);
 
#OnUsbCmdPanel
;print("#OnUsbCmdPanel: Path=", .arg1);
;print("#OnUsbCmdPanel: Hnd=", .arg2);
;print("#OnUsbCmdPanel: Len=", .arg3);
;array_printdata(hnd, 16);
 
if (array_getdata(.arg2, 0) && array_getdata(.arg2, 1), exec("#CmdPanelBtn1")); 
if (array_getdata(.arg2, 4) && array_getdata(.arg2, 5), exec("#CmdPanelBtn2")); 
if (array_getdata(.arg2, 8) && array_getdata(.arg2, 9), exec("#CmdPanelBtn3"));
 
.delta = s16(array_getdata16(.arg2, 14));
.value = trunc(s16(array_getdata16(.arg2, 12))/2);
if (.delta && (.value != valuelast), exec(.delta, .value, "#CmdPanelEnc"));
valuelast = .value;
 
#CmdPanelBtn1
;print("Button 1");
;cmd("Machine.Spindle", 0);
spindle(0);
 
#CmdPanelBtn2
;print("Button 2");
;cmd("Machine.Spindle", 1);
spindle(1);
 
#CmdPanelBtn3
;print("Button 3");
 
#CmdPanelEnc
;print("delta = ", .arg1, ", value = ", .arg2);
ovrd = 1 + (.arg2 / 10);
;cmd("Machine.Override.Spindle.Reset", ovrd);
ovrdspindle(ovrd);
 
#CmdPanelBlink
print("#CmdPanelBlink: arg1=", .arg1);
usb_writedata(path, 0, 1, .arg1 & 255, (.arg1>>8) & 255);
kb/projects/arduino/how_to_add_spindle_startstopspeed_control_to_machine.txt · Last modified: 2024/04/29 20:29 by andrej

Page Tools