Hola a todos! A ver quien puede darme una mano con un código. Necesito que cuando presiono y suelto un botón, el servomotor gire automáticamente a 90 grados y prenda un led testigo de ese ángulo. Y cuando presiono el segundo botón vuelva a su posición original y prenda un led de ese otro ángulo. Agrego el código que pude lograr hasta ahora. Solo pude lograr que gire mientras presiono cada boton para cada lado. Gracias!
#include <Servo.h> // Librería
Servo myservo;
//Definición de variables
int pos=0;
int adelante=0;
int atras=0;
void setup() {
Serial.begin(9600);
myservo.attach(9);
// Inicializa pin
pinMode(3, INPUT);
pinMode(5, INPUT);
}
void loop() {
// Lee entrada de pulsación de los botones
adelante = digitalRead(5);
atras = digitalRead(3);
if (adelante == 1){
pos = pos+1;
if (pos>=180){
pos=180;
}
}
if (atras == 1){
pos=pos-1;
if (pos<=0){
pos=0;
}
}
myservo.write(pos);
delay(15);
}
A ver asi... ojo lo que te sugiero es lo que tu pides.
1 boton manda a 90 y otro vuelve.
No se porque tienes algo que incrementa y algo que decrementa.
A menos que lo hayas copiado y estas perdido.
#include <Servo.h> // Librería
Servo myservo;
//Definición de variables
int pos = 0;
bool adelante, adelanteAnt = false;
bool atras, atrasAnt = false;
void setup() {
Serial.begin(9600);
myservo.attach(9);
// Inicializa pin
pinMode(3, INPUT);
pinMode(5, INPUT);
}
void loop() {
// Lee entrada de pulsación de los botones
adelante = digitalRead(5);
atras = digitalRead(3);
if (adelante && !adelanteAnt){
// pos = pos+1;
// if (pos>=180){
// pos=180;
// }
pos = 90;
}
adelanteAnt = adelante;
if (atras && !atrasAnt){
// pos=pos-1;
// if (pos<=0){
// pos=0;
// }
pos = 0;
}
atrasAnt = atras;
myservo.write(pos);
delay(15);
}
Muchísimas gracias! Es justo lo que necesita! Un genio.
Hace poco me inicié con la programación de Arduino, yo soy electricista, pero sigo investigando día a día.
Ese código es una recopilación de distintos códigos que fuí adaptando, pero sí, estoy perdido con este proyecto que estoy haciendo.
Podrá ser una ayuda mas si no es tanta molestia? Quisiera que prenda un led para cada posición. Desde ayer que estoy intentando con este código que me armaste. Solo logro que queden prendidos, pero no apagan cuando cambia la posición. Gracias!!
Si es un led para cada posición es lo mismo que dos leds. Uno indica una posición y el otro la opuesta.
Entonces cuando uno se enciende el otro se apaga. Eso sabes hacerlo.
Debes ver en que parte del código las cosas dan órdenes para un lado o para el otro y ahi agregar las instrucciones para los leds.
Perfecto! Voy a intentarlo nuevamente con esa orden. Si no resulta o no acierto con el código, copio el código para que me digas en qué estoy fallando.
Muchas gracias!
Define dos pines de salida, los mismos en los que conectes los Leds con la Resistencia limitadora.
Luego enciendes un led con HIGH, y lo apagas con LOW.
Mira Blink.ino para entender como trabajar con un led, no porque ese código te sirva porque no es tu caso, pero si la definicion del pin de salida y como lo ilumnias y apagas.
Repite con el otro.
Y cuando en una parte acciones uno, apagas el otro y viceverza.