Hola a todos
He creado este código de Maquina de Estados para mover un motor.
El código funciona correctamente, tal como lo incluyo.
La duda que me ha surgido es: Si sustituyo el Pin 19 (Stop) por el (13) no funciona correctamente, puesto que el Pin 13 siempre esta HIGH cuando cargo este y cualquier otro programa. Es normal ????
Un saludo
/*
*
* MAQUINA ESTADOS MOTOR
*
*
* **************** ENGRAL ***********************
*
*/
int Puls_S = 5 ; //Pulsador SUBIDA
int Puls_B = 14; //Pulsador BAJADA
int Sens_A = 6 ; //Sensor fin/c arriba
int Sens_B = 15; //Sensor fin/c abajo
int Motor_S = 9; // Motor SUBIDA
int Motor_B = 10;// Motor BAJADA
int Stop = 19;// Pulsador Stop
enum Estados {PARADO, SUBE, BAJA, PARA};
Estados estado = PARADO;
void autom()
{
switch (estado)
{
case PARADO:
if (digitalRead(Puls_S) == HIGH) //puls_SUBE
{
estado = SUBE;// Envia a estado SUBE
}
if (digitalRead(Puls_B) == HIGH) // puls_BAJA
{
estado = BAJA;// Envia a estado BAJA
}
else
{
digitalWrite (Motor_S, LOW); // detiene motor SUBIDA
digitalWrite (Motor_B, LOW); // detiene motor BAJADA
}
break;
case SUBE:
if (digitalRead(Sens_A) == HIGH)// sen_Arriba-FIN DE CARRERA
{
estado = PARADO ; // Envia a estado PARADO
}
if (digitalRead(Stop) == HIGH) // Pulsador Stop
{
Serial.println ("==== pulsado Stop ");
estado = PARADO; // Envia a estado PARADO
}
else
{
digitalWrite (Motor_S, HIGH); // MOTOR SUBE
}
break;
case BAJA:
if (digitalRead(Sens_B) == HIGH)// sensor-Abajo-FIN DE CARRERA
{
estado = PARADO; // Envia a PARADO
}
if (digitalRead(Stop) == HIGH) // Pulsador Stop
{
Serial.println ("==== pulsado Stop ");
estado = PARADO; // Envia a estado PARADO
}
else
{
digitalWrite (Motor_B, HIGH); // MOTOR BAJA
}
break;
}
}
void setup()
{
Serial.begin(9600);
Serial.println("");
Serial.println("======== A_MAQUINA_ESTADOS_MOTOR_MS ======= \n");
pinMode (Stop, INPUT); // Pulsador Stop
pinMode (Sens_A, INPUT); // Sensor_Arriba - fin de carrera
pinMode (Sens_B, INPUT); // Sensor_Abajo - fin de carrera
pinMode (Puls_S, INPUT); // Pulsador Subida
pinMode (Puls_B, INPUT); // Pulsador Bajada
pinMode (Motor_S, OUTPUT); // MOTOR SUBIDA
pinMode (Motor_B, OUTPUT); // MOTOR BAJADA
}
void loop()
{
autom();
}
//********************** FIN **********************