Hola, estoy usando Arduino uno, y quiero saber si me pueden dar una mano con esta programación.
La barrera consta de un boton de entrada, un boton de salida y un servomotor entre estas dos. Necesito modificar la programación de tal modo que al momento de presionar un botón de entrada se abra automáticamente (De golpe) la barra (servomotor) y que cuando pase por el botón de salida se cierre de igual manera.
Solo encontré esta programación. Que lo que hace es mover el servomotor dependiendo del tiempo que se deja apretado (Yo quiero es que se abra de una)
Hay al menos 5 respuestas similares en el último mes!! Deberías haber buscado mejor!
Si quieres que un servo se mueva rápido no le des una orden progresiva sino una directa. servo.write(90) o servo.write(180) y luego servo.write(0).
Cuando detectes un botón una orden. Cuando detectes el segundo botón la opuesta.
if (digitalRead(2) == HIGH && pos < 90) {
pos++;
servo.write(pos);
delay(15);userpicture
Buy
Download
Products
Learning
Forum
Support
Blog
userpicture
Arduino Forum > International > Español > Software > Controlar servomotor con pulsadores Alerts Unread Posts Updated Topics
Moderate
REPLY MARK UNREAD PRINT NO ALERTS OR EMAILS Go DownPages: [1]
Topic: Controlar servomotor con pulsadores (Read 11 times) Previous Topic - Next Topic
brunocast98
avatar_brunocast98
*
Newbie
Posts: 5
Karma: 0 [add]
Logged
Controlar servomotor con pulsadores
Today at 01:09:09
Hola, estoy usando Arduino uno, y quiero saber si me pueden dar una mano con esta programación.
La barrera consta de un boton de entrada, un boton de salida y un servomotor entre estas dos. Necesito modificar la programación de tal modo que al momento de presionar un botón de entrada se abra automáticamente (De golpe) la barra (servomotor) y que cuando pase por el botón de salida se cierre de igual manera.
Solo encontré esta programación. Que lo que hace es mover el servomotor dependiendo del tiempo que se deja apretado (Yo quiero es que se abra de una)
Con esta programación quedaria asi: (https://www.youtube.com/watch?v=Y6l4wRgkX-w)
Code: [Select]
#include<Servo.h>
int pos = 0;
Servo servo;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
servo.attach(9);
}
void loop() {
if (digitalRead(2) == HIGH && pos < 90) {
pos++;
servo.write(pos);
delay(15);
}
if (digitalRead(3) == HIGH && pos > 0) {
pos--;
servo.write(pos);
delay(15);
}
if (digitalRead(3) == HIGH && pos < 90) {
pos++;
servo.write(pos);
delay(15);
}
if (digitalRead(2) == HIGH && pos > 0) {
pos--;
servo.write(pos);
delay(15);
}
}
Si es que me ayudan, lo voy a agradecer eternamente, cuando finalice el proyecto lo voy a postear para aquellos que lo necesiten. Saludos
Report to moderator
Quote
Ban userDelete User
surbyte
avatar_surbyte
****
Shannon Member
Posts: 10,788
Karma: 614 [add]
181.21.34.130
Asegúrate que una busqueda por el foro y/o GOOGLE no dan la solución a tu pregunta. Utiliza un Titulo lo más explicativo posible. Sube tu código y agrega los enlaces de las librerías.
Re: Controlar servomotor con pulsadores
#1
Today at 09:25:23 Last Edit: Today at 09:29:34 by surbyte
}
esto implica que cada 15 mseg ira incrementando el movimiento del servo.
te llevará 15 x 90 = 1350 mseg lo que es nada... ahora no querías un golpe.. dale directamente servo.wirte(90)!!
o sea
if (digitalRead(2) == HIGH) {
servo.write(pos);
}
if (digitalRead(3) == HIGH) {
servo.write(0);
}
ahora eso hace que mientras presiones un boton le mandes infinitas ordenes al servo (inutilmente).
Asi que mejor sería que leas el estado del pulsador y cuando cambia de flanco 0 a 1 o sea de LOW a HIGH muevas el servo a 90 o 0 grados.
Solo usa una variable booleana, luego lees el estado del pulsador, comparas ese estado con el anterior invertido y al final actualizas el estado anterior con el estado actual lo que lo convierte en anterior nuevamente.
asi solo para un boton:
bool status2, status2ant = false; // esto como global
void loop() {
status2 = digitalRead(2);
if (status2 && !status2Ant) {
servo.write(90); // lo hace una sola vez
}
status2ant = status2; // guardo estado anterior