1
0
mirror of https://github.com/bdring/Grbl_Esp32.git synced 2025-08-28 16:49:54 +02:00

User macro button (#685)

* Test Macro Button Idea

* Updates

* Formating
This commit is contained in:
bdring
2020-12-05 11:07:23 -06:00
committed by GitHub
parent 5f57cf7543
commit 00e0e7843e
7 changed files with 87 additions and 17 deletions

View File

@@ -50,9 +50,10 @@ Some features should not be changed. See notes below.
// Inverts pin logic of the control command pins based on a mask. This essentially means you can use
// normally-closed switches on the specified pins, rather than the default normally-open switches.
// The mask order is Cycle Start | Feed Hold | Reset | Safety Door
// The mask order is ...
// Macro3 | Macro2 | Macro 1| Macr0 |Cycle Start | Feed Hold | Reset | Safety Door
// For example B1101 will invert the function of the Reset pin.
#define INVERT_CONTROL_PIN_MASK B1111
#define INVERT_CONTROL_PIN_MASK B00001111
#define ENABLE_CONTROL_SW_DEBOUNCE // Default disabled. Uncomment to enable.
#define CONTROL_SW_DEBOUNCE_PERIOD 32 // in milliseconds default 32 microseconds

View File

@@ -647,3 +647,19 @@
#ifndef USER_ANALOG_PIN_3_FREQ
# define USER_ANALOG_PIN_3_FREQ 5000
#endif
#ifndef DEFAULT_USER_MACRO0
# define DEFAULT_USER_MACRO0 ""
#endif
#ifndef DEFAULT_USER_MACRO1
# define DEFAULT_USER_MACRO1 ""
#endif
#ifndef DEFAULT_USER_MACRO2
# define DEFAULT_USER_MACRO2 ""
#endif
#ifndef DEFAULT_USER_MACRO3
# define DEFAULT_USER_MACRO3 ""
#endif

View File

@@ -8,7 +8,7 @@
// !!! For initial testing, start with test_drive.h which disables
// all I/O pins
// #include "Machines/atari_1020.h"
# include "Machines/test_drive.h"
# include "Machines/6_pack_stepstick_XYZ_v1.h"
// !!! For actual use, change the line above to select a board
// from Machines/, for example:

View File

@@ -106,11 +106,14 @@ Socket #5
#define Z_LIMIT_PIN GPIO_NUM_35
// // 4x Input Module in Socket #2
// // https://github.com/bdring/6-Pack_CNC_Controller/wiki/4x-Switch-Input-module
// #define X_LIMIT_PIN GPIO_NUM_2
// #define Y_LIMIT_PIN GPIO_NUM_25
// #define Z_LIMIT_PIN GPIO_NUM_39
#define MACRO_BUTTON_0_PIN GPIO_NUM_2
#define MACRO_BUTTON_1_PIN GPIO_NUM_25
#define MACRO_BUTTON_2_PIN GPIO_NUM_39
#define MACRO_BUTTON_3_PIN GPIO_NUM_36
// 5V output CNC module in socket #4
// https://github.com/bdring/6-Pack_CNC_Controller/wiki/4x-5V-Buffered-Output-Module

View File

@@ -80,6 +80,11 @@ AxisSettings* c_axis_settings;
AxisSettings* axis_settings[MAX_N_AXIS];
StringSetting* user_macro0;
StringSetting* user_macro1;
StringSetting* user_macro2;
StringSetting* user_macro3;
typedef struct {
const char* name;
float steps_per_mm;
@@ -389,10 +394,15 @@ void make_settings() {
stallguard_debug_mask = new AxisMaskSetting(EXTENDED, WG, NULL, "Report/StallGuard", 0, postTMC);
homing_cycle[0] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle0", DEFAULT_HOMING_CYCLE_0);
homing_cycle[1] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle1", DEFAULT_HOMING_CYCLE_1);
homing_cycle[2] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle2", DEFAULT_HOMING_CYCLE_2);
homing_cycle[3] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle3", DEFAULT_HOMING_CYCLE_3);
homing_cycle[4] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle4", DEFAULT_HOMING_CYCLE_4);
homing_cycle[5] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle5", DEFAULT_HOMING_CYCLE_5);
homing_cycle[4] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle4", DEFAULT_HOMING_CYCLE_4);
homing_cycle[3] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle3", DEFAULT_HOMING_CYCLE_3);
homing_cycle[2] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle2", DEFAULT_HOMING_CYCLE_2);
homing_cycle[1] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle1", DEFAULT_HOMING_CYCLE_1);
homing_cycle[0] = new AxisMaskSetting(EXTENDED, WG, NULL, "Homing/Cycle0", DEFAULT_HOMING_CYCLE_0);
user_macro3 = new StringSetting(EXTENDED, WG, NULL, "User/Macro3", DEFAULT_USER_MACRO3);
user_macro2 = new StringSetting(EXTENDED, WG, NULL, "User/Macro2", DEFAULT_USER_MACRO2);
user_macro1 = new StringSetting(EXTENDED, WG, NULL, "User/Macro1", DEFAULT_USER_MACRO1);
user_macro0 = new StringSetting(EXTENDED, WG, NULL, "User/Macro0", DEFAULT_USER_MACRO0);
}

View File

@@ -60,3 +60,8 @@ extern IntSetting* spindle_pwm_bit_precision;
extern EnumSetting* spindle_type;
extern AxisMaskSetting* stallguard_debug_mask;
extern StringSetting* user_macro0;
extern StringSetting* user_macro1;
extern StringSetting* user_macro2;
extern StringSetting* user_macro3;

View File

@@ -63,22 +63,22 @@ void system_ini() { // Renamed from system_init() due to conflict with esp32 fi
attachInterrupt(digitalPinToInterrupt(CONTROL_CYCLE_START_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_0_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 0");
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 0 %s", pinName(MACRO_BUTTON_0_PIN).c_str());
pinMode(MACRO_BUTTON_0_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_0_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_1_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 1");
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 1 %s", pinName(MACRO_BUTTON_1_PIN).c_str());
pinMode(MACRO_BUTTON_1_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_1_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_2_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 2");
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 2 %s", pinName(MACRO_BUTTON_2_PIN).c_str());
pinMode(MACRO_BUTTON_2_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_2_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_3_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 3");
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 3 %s", pinName(MACRO_BUTTON_3_PIN).c_str());
pinMode(MACRO_BUTTON_3_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_3_PIN), isr_control_inputs, CHANGE);
#endif
@@ -87,7 +87,7 @@ void system_ini() { // Renamed from system_init() due to conflict with esp32 fi
control_sw_queue = xQueueCreate(10, sizeof(int));
xTaskCreate(controlCheckTask,
"controlCheckTask",
2048,
3096,
NULL,
5, // priority
NULL);
@@ -332,4 +332,39 @@ uint8_t sys_calc_pwm_precision(uint32_t freq) {
return precision - 1;
}
void __attribute__((weak)) user_defined_macro(uint8_t index);
void __attribute__((weak)) user_defined_macro(uint8_t index) {
// must be in Idle
if (sys.state != State::Idle) {
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro button only permitted in idle");
return;
}
String user_macro;
char line[255];
switch (index) {
case 0:
user_macro = user_macro0->get();
break;
case 1:
user_macro = user_macro1->get();
break;
case 2:
user_macro = user_macro2->get();
break;
case 3:
user_macro = user_macro3->get();
break;
default:
return;
}
if (user_macro == "") {
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro User/Macro%d empty", index);
return;
}
user_macro.replace('&', '\n');
user_macro.toCharArray(line, 255, 0);
strcat(line, "\r");
WebUI::inputBuffer.push(line);
}