Hola compis. Antes de nada os aviso de que lo que estoy haciendo es a base de tutoriales, cursos......
Estoy haciendo un programa para controlar un elevador de coches, de esos de los talleres.
Harto de estar harto de buscar soluciones a una serie de problemas que me surgian he decidido reducir el codigo a la minima expresión, es decir, 2 botones para subir y bajar y 4 salidas para gestionar los motores este es mi código:
antes del codigo... las entradas las tengo con pullup de 1k
const int Ibup = 13;
const int Ibdown = 12;
const int Oma = 7;
const int Omm = 6;
const int Oup = 5;
const int Odown = 4;
bool butIbup, butIbdown;
bool estsubir = false;
bool estbajar = false;
void setup() {
// put your setup code here, to run once:
pinMode(Omm, OUTPUT);
pinMode(Oma, OUTPUT);
pinMode(Oup, OUTPUT);
pinMode(Odown, OUTPUT);
pinMode(Ibup, INPUT);
pinMode(Ibdown, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
butIbup = digitalRead(Ibup);
butIbdown = digitalRead(Ibdown);
if (butIbup == LOW) {
estsubir = true;
}
if (butIbdown == LOW) {
estbajar = true;
}
if (butIbup == LOW && butIbdown == LOW) {
estsubir = false;
estbajar = false;
}
if (estsubir){
digitalWrite(Omm, HIGH);
digitalWrite(Oma, HIGH);
delay(500);
digitalWrite(Oup, HIGH);
digitalWrite(Odown, LOW);
}
else {
digitalWrite(Omm, LOW);
digitalWrite(Oma, LOW);
digitalWrite(Oup, LOW);
digitalWrite(Odown, LOW);
}
if (estbajar){
digitalWrite(Omm, HIGH);
digitalWrite(Oma, HIGH);
delay(500);
digitalWrite(Oup, LOW);
digitalWrite(Odown, HIGH);
}
else {
digitalWrite(Omm, LOW);
digitalWrite(Oma, LOW);
digitalWrite(Oup, LOW);
digitalWrite(Odown, LOW);
}
}
la idea es: si pulso a subir, que me active "estsubir" si pulso bajar que me active "estbajar" y si pulso los 2 que no haga nada.
Pues bien, lo que me hace es que cuando pulso los 2 efectivamente no hace nada. Cuando pulso subir, me activa omm y oma pero la Oup, no la activa bien.cuando pulso bajar, me activa correctamente Omm y Oma pero Oup yOdown se me activan intermitentemente.
Alguan idea de donde meto la pata??