Duda manejo de servos con Arduino

Buenos días,

Tengo que activar 10 servos pequeños (Modelo HXT500 de HEXTRONIK) al mismo tiempo, quiero decir, no de forma independiente, sino todos en la misma dirección a la vez, me gustaría hacerlo con una plataforma Arduino. Tengo dudas de cómo sería la forma correcta, lo digo porque he visto en internet varios videos de gente que directamente conecta servos a la placa arduino, pero me da un poco de miedo esta opción. Había pensado mediante un transistor o con algunas de las placas para control de servos que venden ya montadas.

Gracias por anticipado a todos.

un saludo,
 
amigo si tus servos todos son igua HTX500 no te preocupes por el arduino ya que estos motores son de 3 a 6 v con 5v del arduino funcionan bien, no necesitas etapas de amplificacion ni nada..... segundo si todos quieres que se muevan al mismo tiempo pues es mas facil aun porque los conectas todos al mismo pin analogo con la corriente de alimentacion creo que el arduino anda entre los 500ma no creo que se soprepase con tus diez motores...

pero nose como los quieres mover o si ya tienes el codigo del arduino o necesitas ayuda ahi tambien
 
¿Programación con arduino?
Hola mi nombre es José.
Estoy haciendo un proyecto de electrónica en el cual tengo que controlar un servomotor.

Mi objetivo es el siguiente al pulsar un botón y luego que al soltarlo el servo gire hacia un lado (180º) y después al pulsar ese mismo botón y dejar de pulsarlo, que gire hacia el otro lado(0º), resumidamente.

pulso,suelto-->180º
pulso,suelto-->0º

pulso,suelto-->180º
pulso,suelto-->0º

pulso,suelto-->180º
pulso,suelto-->0º

y así infinitamente les agradecería mucho si me pueden ayudar les dejo la programación.

Código:
#include <Servo.h> 

Servo M; //Servo permite crear un objeto en este caso llamado m el cual ayudara controlar el servo 
const int pins=2; //Pin de comunicación servo-arduino 
const int Pmin=500; //500us=0º 
const int Pmax=2300; //2300us=180º 
int valor; 
int push=3; 
int angulo; 
int n; 

void setup(){ //Configuración de pines 
pinMode(push,INPUT); 
M.attach(pins,Pmin,Pmax); //se define pins con 1ms=0º y 2ms=180º por defecto 
//Recordar que las entrdas analogicas se declaran automaticamente 
} 
void loop(){ 
valor=digitalRead(push); 
angulo=map(valor,LOW,HIGH,180,0); 

if(angulo==180){ 
M.write(angulo); 
delay(20); //Permite al servo llegar al angulo deseado 
} 
else{ 
M.write(angulo); 
delay(20); 
} 
}
 
Última edición por un moderador:
Necesitas:

  • aislar la lectura del botón. No puedes asociar el estado del botón del movimiento del servo, ya que la premisa es que, primero debe estar pulsado (pasa de LOW a HIGH), y luego pasa a soltarse (pasa de HIGH a LOW), y es entonces cuando el servo debe reaccionar. Lo más seguro es que necesites una variable extra que guarde el estado del botón, para detectar el momento en que pasa de pulsado a liberado

  • una variable extra que guarde la posición actual del servo, para saber si tiene que girarlo en un sentido o al otro.
Entonces... primero haz la parte del pulsador. Debes conseguir que un LED (por ejemplo) se encienda y apague al hacer una pulsación completa en el pulsador (en Internet y en estos foros hay centenares de ejemplos ya hechos). La iluminación del LED la controlará una variable que niegas en cada pulsación: var = !var

Luego, agregas la parte del servo. Basta con comprobar si la variable de control tiene un valor verdadero para llevar el servo a 180°, y si no (else), a 0°.
 
Última edición por un moderador:
Atrás
Arriba