motor passo

bom dia
como sou novo nesta andanças gostaria de saber se alguem me pode ajudar num projecto que estou a tentar realizar:
estou a usar o seguinte material:
arduino uno
a4988
motor nema 17
o sistema esta a funcionar so que so funciona atraves de pc digitando 1;2;3
gostaria que me ajundassem a programar o mas que funcionasse atraves de butao de pulso da seguinte forma :
caregava uma vez rodava para a direita
caregava outra vez parava
caregando outra vez rodava para a esquerda
e alem disso gostaria de aplicar uns fins de curos no meu sistema seria possivel?
este e o programa :
Programa : Driver motor de passo A4988
// Autor : Arduino e Cia

#include <AccelStepper.h>

int velocidade_motor = 1000;
int aceleracao_motor = 500;
int sentido_horario = 0;
int sentido_antihorario = 0;
int numero = 0;

// Definicao pino ENABLE
int pino_enable = 10;
// Definicao pinos STEP e DIR
AccelStepper motor1(1, 7, 4 );

void setup()
{
Serial.begin(9600);
pinMode(pino_enable, OUTPUT);2

// Configuracoes iniciais motor de passo
motor1.setMaxSpeed(velocidade_motor);
motor1.setSpeed(velocidade_motor);
motor1.setAcceleration(aceleracao_motor);

Serial.println("Digite 1, 2 ou 3 e clique em ENVIAR...");
}

void loop()
{
// Aguarda os caracteres no serial monitor
if (Serial.available() > 0)
{
numero = Serial.read();
{
if (numero == '1')
{
Serial.println("Numero 1 recebido - Girando motor sentido horario.");
digitalWrite(pino_enable, LOW);
sentido_horario = 1;
sentido_antihorario = 0;
}

if (numero == '2')
{
Serial.println("Numero 2 recebido - Girando motor sentido anti-horario.");
digitalWrite(pino_enable, LOW);
sentido_horario = 0;
sentido_antihorario = 1;
}

if (numero == '3')
{
Serial.println("Numero 3 recebido - Parando motor...");
sentido_horario = 0;
sentido_antihorario = 0;
motor1.moveTo(0);
digitalWrite(pino_enable, HIGH);
}
}
}

// Move o motor no sentido horario
if (sentido_horario == 1)
{
motor1.moveTo(10000);
}
// Move o motor no sentido anti-horario
if (sentido_antihorario == 1)
{
motor1.moveTo(-10000);
}
// Comando para acionar o motor no sentido especificado
motor1.run();
}

Sim, é possível.

Tens o botão ligado já?

Já experimentaste a função digitalRead para ler o botão?

boas tarde
como estou ja disse sou novo nestas andanças já tenho a parte de Hardware feito só ma falta mesmo a programação, tenho o pino11 para o botão e 12 e 13 para fins de curso

Então, tens de ler o botão e mudar o valor da variável dependendo do estado anterior da variável...

Por exemplo:

#define PARADO 0
#define DIREITA 1
#define PAUSA 2
#define ESQUERDA 3

unsigned char estado_previo = 0; 
unsigned char estado_motor = 0; 
if (digitalRead(BOTAO) == HIGH && estado_previo == 0) {

  estado++; //incrementa o estado. 
  if (estado > 3) estado = 0; 
  estado_previo = 1; 
}

estado_previo = digitalRead(BOTAO);

if (estado_motor == PARADO || estado_motor == PAUSA){

   Serial.println("Numero 3 recebido - Parando motor...");
   motor1.moveTo(0);
   digitalWrite(pino_enable, HIGH);
}

// e por aí adiante...

boa tarde
pois como ja disse anteriormente não me estou a safar com isto
sera que me poderia ajudar

O que é que não funciona agora? Viste o código que meti anteriormente?