Hola buenas, os cuento...
Dos finales de carrera, derecha e izquierda, un motor y el puerto serie.
- Si envío por el puerto serie la letra 'V' y el final de carrera de la derecha está activo, el motor gira a la izquierda hasta que llega al final de carrera y se para.
- Si envío por el puerto serie la letra 'V' y el final de carrera de la izquierda está activo, el motor gira a la derecha hasta que llega al final de carrera y se para.
El tema es que cuando está el motor posicionado a la derecha y mando 'V' se pone a girar a la izquierda, pero cuando activa el final de carrera de la izquierda no se para y se pone a girar a la derecha...
Alguien podría ayudarme con el código???, gracias...
int giroMotorDer = 12;
int giroMotorIzq = 10;
int sensorDerecha = 9;
int sensorIzquierda = 8;
char valor;
bool switchDer, switchIzq;
void setup() {
pinMode(giroMotorDer, OUTPUT);
pinMode(giroMotorIzq, OUTPUT);
pinMode(sensorDerecha, INPUT);
pinMode(sensorIzquierda, INPUT);
Serial.begin(9600); // inicializa comunicación serie
}
void loop() {
switchDer = digitalRead(sensorDerecha);
switchIzq = digitalRead(sensorIzquierda);
while (Serial.available() > 0)
valor = Serial.read();
if (switchDer) // paroMotorDerecha
digitalWrite(giroMotorDer, LOW);
if (switchIzq) // paroMotorIzquierda
digitalWrite(giroMotorIzq, LOW);
if (valor == 'r' && !switchDer && !switchIzq)
{
giroDer();
Serial.println("giro a derecha");
}
if (valor == 'v' && switchIzq && !switchDer)
{
giroDer();
Serial.println("giro a derecha");
}
if (valor == 'v' && switchDer && !switchIzq)
{
giroIzq();
Serial.println("giro a izquierda");
}
if (valor == 'i' && switchIzq)
{
stop();
Serial.println("stop");
}
}
void giroDer(){
digitalWrite(giroMotorDer, HIGH);
}
void giroIzq(){
digitalWrite(giroMotorIzq, HIGH);
}
void stop(){
digitalWrite(giroMotorIzq, LOW);
}