From da46928deeeb0764884e69ba090ec653a064ba4f Mon Sep 17 00:00:00 2001 From: mmcwilliams Date: Wed, 30 Aug 2023 01:15:38 -0400 Subject: [PATCH] Add setStepperMode logic from other project. Will sleep work? --- .gitignore | 1 + IteadDualStepperShield.cpp | 29 +++++++++++++++++++++++++++++ IteadDualStepperShield.h | 23 +++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ccc9fd9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.DS_Store \ No newline at end of file diff --git a/IteadDualStepperShield.cpp b/IteadDualStepperShield.cpp index 7e9bfd9..d297323 100644 --- a/IteadDualStepperShield.cpp +++ b/IteadDualStepperShield.cpp @@ -10,6 +10,12 @@ void IteadDualStepperShield::setup () { pinMode(_stepB, OUTPUT); setDir(0, 1); setDir(1, 1); + pinMode(_settingsA1, OUTPUT); + pinMode(_settingsA2, OUTPUT); + pinMode(_settingsB1, OUTPUT); + pinMode(_settingsB2, OUTPUT); + setStepperMode(0, 1); + setStepperMode(1, 1); } void IteadDualStepperShield::setDir (uint8_t motor, uint8_t dir) { @@ -78,4 +84,27 @@ void IteadDualStepperShield::stepBoth (uint64_t steps) { for (int i = 0; i < steps; i++) { _both(); } +} + +void IteadDualStepperShield::setStepperMode (uint8_t motor, uint8_t mode) { + uint8_t pin1 = motor == 0 ? _settingsA1 : _settingsB1; + uint8_t pin2 = motor == 0 ? _settingsA2 : _settingsB2; + switch (mode) { + case 1 : + digitalWrite(pin1, LOW); + digitalWrite(pin2, LOW); + break; + case 2 : + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + break; + case 4 : + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + break; + case 8 : + digitalWrite(pin1, HIGH); + digitalWrite(pin2, HIGH); + break; + } } \ No newline at end of file diff --git a/IteadDualStepperShield.h b/IteadDualStepperShield.h index 85f2f7b..627dd56 100644 --- a/IteadDualStepperShield.h +++ b/IteadDualStepperShield.h @@ -3,6 +3,23 @@ #include +/** + * D2 X Step + * D3 X Direction + * D4 X MS1 setting + * D5 X MS2 setting + * D6 Y Step + * D7 Y Direction + * D8 Y MS1 setting + * D9 Y MS2 setting + * + * MS1(X/Y) MS2(X/Y) Description + * L L Full step + * H L Half step + * L H Quarter step + * H H Eighth STEP + **/ + class IteadDualStepperShield { private: const uint8_t _microsteps = 8; //8 or 16 @@ -11,6 +28,11 @@ class IteadDualStepperShield { const uint8_t _stepA = 2; const uint8_t _stepB = 6; + const uint8_t _settingsA1 = 4; + const uint8_t _settingsA2 = 5; + const uint8_t _settingsB1 = 8; + const uint8_t _settingsB2 = 9; + void _single(uint8_t motor); void _micro(uint8_t motor); void _both(); @@ -34,6 +56,7 @@ class IteadDualStepperShield { void step(uint8_t motor, uint64_t steps, uint8_t dir); void stepBoth(uint64_t steps); void onestep(uint8_t motor, uint8_t dir); + void setStepperMode (uint8_t motor, uint8_t mode); void release(); };