buenas días a todos.
He realizado este programa que hasta que no se le de a un pulsador P1 no inicie el proceso y estando un interruptor seleccione a que lado girar hasta una posición y luedo después de x segundos vuelva a posición 0 .
el tema es que sin ponerle los botones funciona a izquierda y derecha con sus pausas pero cuando le he puesto los pulsadores ya no funciona da errores P1 seria inicio del trabajo y P2 seria el interruptor que hace que gire a derecha o izquierda.
Estoy atascado porque no se nada de programación de arduino, he visto muchos videos tutoriales y ya me he liado aun mas.
Alguien me puede orientar de que estoy haciendo mal?
este es el código y el esquema que he montado no se continuar mas para que funcione como quiero me podéis ayudar.
//programa izquierda derecha
#define STEP 4 // pin STEP de A4988 a pin 4
#define DIR 5 // pin DIR de A4988 a pin 5
#define inicio 8 // pin INICIO ciclo a pin 8
#define interruptor 9 //pin pulsador derecha izquierda pin 9
void setup() {
pinMode(STEP, OUTPUT); // pin 4 como salida
pinMode(DIR, OUTPUT); // pin 5 como salida
pinMode(inicio, INPUT); // pin 8 pulsador inicio
pinMode(interruptor, INPUT); //pin 9 interruptor
}
void loop()
{
int estadoP1 = digitalRead(inicio); //pulsaodr de inicio
int estadoP2 = digitalRead(interruptor); // pulsador de izquierda-derecha
delay(100); // anti rebote del pulsador
if(estadoP1 == 0)
if (estadoP2 == 0)
}
{
// giro a izquierdas
digitalWrite(DIR, LOW); // giro en un sentido
for(int i = 0; i < 80; i++){ // 200 pasos para motor
digitalWrite(STEP, HIGH); // nivel alto
delay(10); // por 10 mseg
digitalWrite(STEP, LOW); // nivel bajo
delay(10); // por 10 mseg
}
delay(2000); // demora de 2 segundos
digitalWrite(DIR, HIGH); // giro en sentido opuesto
for(int i = 0; i < 80; i++){
digitalWrite(STEP, HIGH);
delay(10);
digitalWrite(STEP, LOW);
delay(10);
}
delay(2000); // demora de 2 segundos
}
// giro a derechas
digitalWrite(DIR, HIGH); // giro en un sentido
for(int i = 0; i < 80; i++){ // 200 pasos para motor
digitalWrite(STEP, HIGH); // nivel alto
delay(10); // por 10 mseg
digitalWrite(STEP, LOW); // nivel bajo
delay(10); // por 10 mseg
}
delay(2000); // demora de 2 segundos
digitalWrite(DIR, LOW); // giro en sentido opuesto
for(int i = 0; i < 80; i++){
digitalWrite(STEP, HIGH);
delay(10);
digitalWrite(STEP, LOW);
delay(10);
}
delay(2000); // demora de 2 segundos