Skip to main content
#include <Stepper.h>
const float STEPS_PER_REVOLUTION = 4096;
const float GEAR_REDUCTION = 4;
const float TOTAL_STEPS = STEPS_PER_REVOLUTION * GEAR_REDUCTION
int StepsRequired = 16384;
int switchPin = 7;
boolean current = LOW;
boolean last = LOW;
boolean isOpen = LOW;
Stepper steppermotor (STEPS_PER_REVOLUTION, 8, 10, 9, 11);
void setup()
{
pinMode(switchPin, INPUT);
}
boolean debounce(boolean inLast){
boolean inCurrent = digitalRead(switchPin);
if(inLast != current){
delay(5);
inCurrent = digitalRead(switchPin);
}
return inCurrent;
}
void garageAction(float factor){
StepsRequired = TOTAL_STEPS*factor;
steppermotor.setSpeed(1000);
steppermotor.step(StepsRequired);
if(isOpen == LOW){
delay(3000);
}else if(isOpen == HIGH){
delay(5);
}
}
void loop()
{
current = debounce(last);
if(current == HIGH && last == LOW && isOpen == LOW){
garageAction(2);
isOpen = !isOpen;
}
if(current == HIGH && last == LOW && isOpen == HIGH){
garageAction(-2);
isOpen = !isOpen;
}
}
#include <Stepper.h>
const float STEPS_PER_REVOLUTION = 4096;
const float GEAR_REDUCTION = 4;
const float TOTAL_STEPS = STEPS_PER_REVOLUTION * GEAR_REDUCTION
int StepsRequired = 16384;
int switchPin = 7;
boolean current = LOW;
boolean last = LOW;
boolean isOpen = LOW;
Stepper steppermotor (STEPS_PER_REVOLUTION, 8, 10, 9, 11);

void setup() {
  pinMode(switchPin, INPUT);
}

boolean debounce(boolean inLast) {
  boolean inCurrent = digitalRead(switchPin);
  if(inLast != current) {
    delay(5);
    inCurrent = digitalRead(switchPin);
    }
  return inCurrent;
}

void garageAction(float factor){
  StepsRequired = TOTAL_STEPS*factor;
  steppermotor.setSpeed(1000);
  steppermotor.step(StepsRequired);
  if (isOpen == LOW) {
    delay(3000);
  } else if (isOpen == HIGH) {
    delay(5);
  }
}

void loop() {
  current = debounce(last);

  if (current == HIGH && last == LOW && isOpen == LOW) {
    garageAction(2);
    isOpen = !isOpen;
  }

  if(current == HIGH && last == LOW && isOpen == HIGH) {
    garageAction(-2);
    isOpen = !isOpen;
  }
}
#include <Stepper.h>
const float STEPS_PER_REVOLUTION = 4096;
const float GEAR_REDUCTION = 4;
const float TOTAL_STEPS = STEPS_PER_REVOLUTION * GEAR_REDUCTION
int StepsRequired = 16384;
int switchPin = 7;
boolean current = LOW;
boolean last = LOW;
boolean isOpen = LOW;
Stepper steppermotor (STEPS_PER_REVOLUTION, 8, 10, 9, 11);
void setup()
{
pinMode(switchPin, INPUT);
}
boolean debounce(boolean inLast){
boolean inCurrent = digitalRead(switchPin);
if(inLast != current){
delay(5);
inCurrent = digitalRead(switchPin);
}
return inCurrent;
}
void garageAction(float factor){
StepsRequired = TOTAL_STEPS*factor;
steppermotor.setSpeed(1000);
steppermotor.step(StepsRequired);
if(isOpen == LOW){
delay(3000);
}else if(isOpen == HIGH){
delay(5);
}
}
void loop()
{
current = debounce(last);
if(current == HIGH && last == LOW && isOpen == LOW){
garageAction(2);
isOpen = !isOpen;
}
if(current == HIGH && last == LOW && isOpen == HIGH){
garageAction(-2);
isOpen = !isOpen;
}
}
#include <Stepper.h>
const float STEPS_PER_REVOLUTION = 4096;
const float GEAR_REDUCTION = 4;
const float TOTAL_STEPS = STEPS_PER_REVOLUTION * GEAR_REDUCTION
int StepsRequired = 16384;
int switchPin = 7;
boolean current = LOW;
boolean last = LOW;
boolean isOpen = LOW;
Stepper steppermotor (STEPS_PER_REVOLUTION, 8, 10, 9, 11);

void setup() {
  pinMode(switchPin, INPUT);
}

boolean debounce(boolean inLast) {
  boolean inCurrent = digitalRead(switchPin);
  if(inLast != current) {
    delay(5);
    inCurrent = digitalRead(switchPin);
    }
  return inCurrent;
}

void garageAction(float factor){
  StepsRequired = TOTAL_STEPS*factor;
  steppermotor.setSpeed(1000);
  steppermotor.step(StepsRequired);
  if (isOpen == LOW) {
    delay(3000);
  } else if (isOpen == HIGH) {
    delay(5);
  }
}

void loop() {
  current = debounce(last);

  if (current == HIGH && last == LOW && isOpen == LOW) {
    garageAction(2);
    isOpen = !isOpen;
  }

  if(current == HIGH && last == LOW && isOpen == HIGH) {
    garageAction(-2);
    isOpen = !isOpen;
  }
}
Source Link

Arduino Uno - Stepper motor not working with button

I am completely new to Arduino, and all sorts of hardware and software. I have a stepper motor, which I want to rotate by a number of rotations when I press a button, and then go backwards by a number of rotations when pressed again. I'm not getting any errors with the code, but it does not seem to do what I want. Before adding the button, the stepper motor worked fine, so I don't think it's malfunctioning. When the button is pressed, the LEDs on the H-bridge flicker, but there's no response at all from the motor. I don't know if it's a problem with the code or the set up.

#include <Stepper.h>
const float STEPS_PER_REVOLUTION = 4096;
const float GEAR_REDUCTION = 4;
const float TOTAL_STEPS = STEPS_PER_REVOLUTION * GEAR_REDUCTION
int StepsRequired = 16384;
int switchPin = 7;
boolean current = LOW;
boolean last = LOW;
boolean isOpen = LOW;
Stepper steppermotor (STEPS_PER_REVOLUTION, 8, 10, 9, 11);
void setup()
{
pinMode(switchPin, INPUT);
}
boolean debounce(boolean inLast){
boolean inCurrent = digitalRead(switchPin);
if(inLast != current){
delay(5);
inCurrent = digitalRead(switchPin);
}
return inCurrent;
}
void garageAction(float factor){
StepsRequired = TOTAL_STEPS*factor;
steppermotor.setSpeed(1000);
steppermotor.step(StepsRequired);
if(isOpen == LOW){
delay(3000);
}else if(isOpen == HIGH){
delay(5);
}
}
void loop()
{
current = debounce(last);
if(current == HIGH && last == LOW && isOpen == LOW){
garageAction(2);
isOpen = !isOpen;
}
if(current == HIGH && last == LOW && isOpen == HIGH){
garageAction(-2);
isOpen = !isOpen;
}
}

I would really appreciate any help with this - as mentioned, I'm completely new to any sort of hardware and software, and I'm also under time pressure to get this done, so I'd really appreciate any help in getting this solved. I could just be missing something really silly, but I'm completely lost.

Thanks in advance