Hola a todos.
Estoy empezando con la programacion y me surgen algunos problemas y dudas.
Me he echo ya casi todos los examples, algunos programitas.
Pero tengo un problema con un contador que se me resiste.
Tengo un motor dc con un l293d y un encoder.
el encoder incrementa un contador , y cuando llega a 100 gira hacia el otro lado,
todo esto lo hace bien pero cuando llega a 100 gira en sentido contrario pero no decrementa el contador
imagino que el problema esta en el if que contiene el primer contador pero no se como solucionarlo
si alguien puede alumbrarme?
gracias .
este es el codigo
int inpin = 7;
int motor1 = 5;
int motor2 = 6;
int encoder = 0;
int contador = 0;
int contador1 = 0;
int estado = 0;
boolean direccion = false;
boolean contador2 = false;
int led = 13;
void setup(){
pinMode(led, OUTPUT);
pinMode(inpin, INPUT);
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
Serial.begin(9600);
}
boolean alcanzalimite (int contador1, boolean direccion){
boolean salida = true;
if (contador1 < 100 && direccion == true){
salida = true;
}
if (contador1 < 100 && direccion == false){
salida = false;
}
return salida;
}
void loop(){
encoder = digitalRead(inpin);
if (encoder != estado){
if (encoder == HIGH){
contador++;
}
}
Serial.print("contador1 ");
Serial.println(contador1);
Serial.print("contador2 ");
Serial.println(contador2);
contador1 = contador;
contador2 = alcanzalimite(contador1, direccion);
if (contador2 == true){
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(led, HIGH);
if (contador1 > 100){
direccion = false;
contador1--;
}
}
if (contador2 == false){
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
digitalWrite(led, LOW);
if (contador1 < 100){
direccion = false;
contador1++;
}
}
}
un saludo y gracias.