Hola comunidad, les quería presentar mi problema por si alguien podría darme una mano.
Estoy elaborando una barrera de autos (comunes en peajes o parking, en mi caso es la de un parking) accionada por finales de carrera a un servomotor
Lo que pude hacer hasta ahora es esto:
-Aprieto el primer final de carrera y el servomotor va a 90 grados
-Una vez abierta la barrera ingresa el auto
-Y por ultimo pasa por el segundo final de carrera haciendo que la barrera baje a 0 grados
Hasta ahora bien, pero cual es el problema? El problema es que lo que acabo de hacer es el ingreso de los autos, y falta el egreso! Por mas veces que intente no encuentro la forma para que se haga de forma "inversa". No sé cómo hacerle entender al Arduino cual es el de entrada y cual el de salida
#include <Servo.h> // Librería para servos
Servo servo1; // Creamos un objeto de tipo servo
#define button 6 // definimos un primer botón
#define button2 7 // definimos un segundo botón
// Si da problemas el código, poner las var de los botones en MAYUS
void setup() {
servo1.attach(9); // pin del servomotor en Arduino
pinMode(button, INPUT); // se declara el botón como componente de entrada
pinMode(button2, INPUT); // se declara el otro botón como componente de entrada
}
void loop () {
int buttonstate1 = digitalRead(button); // Creamos dos estados para los dos botones
int buttonstate2 = digitalRead(button2);
if(buttonstate1 == true){ //si el estado del primer botón es true o encendido (pulsado), entonces...
servo1.write(180); // mover el servomotor 180 grados
delay(1000); // esperamos un segundo
}
if(buttonstate2 == true){ // si el estado del segundo botón es true o encendido (pulsado), entonces...
servo1.write(90); //mover el servomotor 90 grados
delay(1000); // esperamos un segundo
}
}
intente hacer eso, obviamente declarando todo correctamente previamente, pero lo que ocurre es que al precionar uno la barrera baja sube repetidas veces haciendome entender que no interpreta cual es el de salida o entrada:
void loop () {
int buttonstate1 = digitalRead(button); // Creamos dos estados para los dos botones
int buttonstate2 = digitalRead(button2);
int buttonstate3 = digitalRead(button); // Creamos dos estados para los dos botones
int buttonstate4 = digitalRead(button2);
if(buttonstate1 == true){ //si el estado del primer botón es true o encendido (pulsado), entonces...
servo1.write(180); // mover el servomotor 180 grados
delay(1000); // esperamos un segundo
}
if(buttonstate2 == true){ // si el estado del segundo botón es true o encendido (pulsado), entonces...
servo1.write(90); //mover el servomotor 90 grados
delay(1000); // esperamos un segundo
}
if(buttonstate3 == true){ //si el estado del primer botón es true o encendido (pulsado), entonces...
servo1.write(90); // mover el servomotor 180 grados
delay(1000); // esperamos un segundo
}
if(buttonstate4 == true){ // si el estado del segundo botón es true o encendido (pulsado), entonces...
servo1.write(180); //mover el servomotor 90 grados
delay(1000); // esperamos un segundo
}