ayuda ¡¡¡ para saber que arduino instalar
#41
gracias ¡¡¡
void setup() {
myservo.attach(9);
myservo.write(15);
pinMode(buttonPin, INPUT);
}


esto funciona ¡¡¡¡ pero en una sola posición ,,, es decir cuando el angulo esta en 15 si lo guarda bien y al conectar se posiciona en 15 ,,, pero cuando esta en 45 no , se desplaza a unos 70 mas o menos ,, luego en unos segundos si se pone en 45...
Responder
#42
Si te sirve, este código lo uso actualmente; no es mío, sino un copia y pega (algo modificado) de los foros de arduino.
Manejo el servo con un switch de dos posiciones. Servos tipo 9g.
Se mueven entre 86º y 94º. Pausa de 50.
Antes, con el servo en 90º (ini1=fin1=90) fijo el eje en la posición adecuada; después cambio el código y listo.
Con un arduino uno r3. Si alimentas por separado, une las masas.

Saludos.


============================================================
=== Inicio código===
/*
Probado con seis servos
En el switch(ACB), conector A a pinintX y a través de 10K ohm a +5v,
conector central C a masa 0v. y el otro conector B sin uso.
En el servo, la señal conectará también con pinservX.
(Sí. A pinsrvX llegan dos cables)
Si la alimentación de arduino y servos difiere, conectar ambas masas.
*/
#include <Servo.h> //Incluir la librería para el control de los Servos
int pausa = 50;
int ini1 =86;
int fin1 = 94;

Servo servo1; // Crea objeto servo
int pinint1 = 0; // Conector del switch, digital
int pinserv1 = 1; // Conector del servo, digital
int pressed1 = 0; // Estado inicial del switch antes de la lectura de pinint1
int ladoA1 = 0;
int ladoB1 = 0;

Servo servo2;
int pinint2 = 2;
int pinserv2 = 3;
int pressed2 = 0;
int ladoA2 = 0;
int ladoB2 = 0;

Servo servo3;
int pinint3 = 4;
int pinserv3 = 5;
int pressed3 = 0;
int ladoA3 = 0;
int ladoB3 = 0;

Servo servo4;
int pinint4 = 6;
int pinserv4 = 7;
int pressed4 = 0;
int ladoA4 = 0;
int ladoB4 = 0;

Servo servo5;
int pinint5 = 8;
int pinserv5 = 9;
int pressed5 = 0;
int ladoA5 = 0;
int ladoB5 = 0;


Servo servo6;
int pinint6 = 10;
int pinserv6 = 11;
int pressed6 = 0;
int ladoA6 = 0;
int ladoB6 = 0;


void setup()
{
servo1.attach(pinserv1);
pinMode(pinint1, INPUT);

servo2.attach(pinserv2);
pinMode(pinint2, INPUT);

servo3.attach(pinserv3);
pinMode(pinint3, INPUT);

servo4.attach(pinserv4);
pinMode(pinint4, INPUT);

servo5.attach(pinserv5);
pinMode(pinint5, INPUT);


servo6.attach(pinserv6);
pinMode(pinint6, INPUT);


}

void loop()
{
pressed1 = digitalRead(pinint1);
if(pressed1==HIGH)
{
ladoB1=0;
if(ladoA1==0)
{
for(int i=fin1 ; i>=ini1; i-=1)
{
servo1.write(i);
delay(pausa);
}
ladoA1=1;
}
}
else
{
ladoA1=0;
if(ladoB1==0)
{
for(int i=ini1 ; i<=fin1; i+=1)
{
servo1.write(i);
delay(pausa);
}
ladoB1=1;
}
}


pressed2 = digitalRead(pinint2);
if(pressed2==HIGH)
{
ladoB2=0;
if(ladoA2==0)
{
for(int i=fin1 ; i>=ini1; i-=1)
{
servo2.write(i);
delay(pausa);
}
ladoA2=1;
}
}
else
{
ladoA2=0;
if(ladoB2==0)
{
for(int i=ini1 ; i<=fin1; i+=1)
{
servo2.write(i);
delay(pausa);
}
ladoB2=1;
}
}


pressed3 = digitalRead(pinint3);
if(pressed3==HIGH)
{
ladoB3=0;
if(ladoA3==0)
{
for(int i=fin1 ; i>=ini1; i-=1)
{
servo3.write(i);
delay(pausa);
}
ladoA3=1;
}
}
else
{
ladoA3=0;
if(ladoB3==0)
{
for(int i=ini1 ; i<=fin1; i+=1)
{
servo3.write(i);
delay(pausa);
}
ladoB3=1;
}
}

pressed4 = digitalRead(pinint4);
if(pressed4==HIGH)
{
ladoB4=0;
if(ladoA4==0)
{
for(int i=fin1 ; i>=ini1; i-=1)
{
servo4.write(i);
delay(pausa);
}
ladoA4=1;
}
}
else
{
ladoA4=0;
if(ladoB4==0)
{
for(int i=ini1 ; i<=fin1; i+=1)
{
servo4.write(i);
delay(pausa);
}
ladoB4=1;
}
}


pressed5 = digitalRead(pinint5);
if(pressed5==HIGH)
{
ladoB5=0;
if(ladoA5==0)
{
for(int i=fin1 ; i>=ini1; i-=1)
{
servo5.write(i);
delay(pausa);
}
ladoA5=1;
}
}
else
{
ladoA5=0;
if(ladoB5==0)
{
for(int i=ini1 ; i<=fin1; i+=1)
{
servo5.write(i);
delay(pausa)
;
}
ladoB5=1;
}
}


pressed6 = digitalRead(pinint6);
if(pressed6==HIGH)
{
ladoB6=0;
if(ladoA6==0)
{
for(int i=fin1 ; i>=ini1; i-=1)
{
servo6.write(i);
delay(pausa);
}
ladoA6=1;
}
}
else
{
ladoA6=0;
if(ladoB6==0)
{
for(int i=ini1 ; i<=fin1; i+=1)
{
servo6.write(i);
delay(pausa);
}
ladoB6=1;
}
}
/* llave cierre loop */
}
===Fin código===
Responder
#43
pero esto es para digital ??? No??
Responder
#44
Hola.

No, este control de desvios no es digital. Al menos en el sentido de gobernado por una central digital.
Creo que es la misma idea que planteaste en el primer post. Pero el uso de pulsadores es más denso de programar que el de interruptores, por el efecto 'rebote' del contacto.

Además, al usar un interruptor DPDT (dos circuitos) se puede añadir fácilmente leds que indiquen la posición, tanto en maqueta como en pupitre.

Mis conocimientos sobre Arduino son menos que elementales, pero tras leer mucho y probar, tengo esto funcionado en una maqueta.

En el código indico como montar. Necesitas: servo, arduino, resist. 10K, interruptor, cables. Y luego un clip para mover el desvio.

Con todo en la mesa, lo montas en cinco minutos y lo puedes probar.
Con un arduino UNO r3 se pueden mover 6 servos con los pines 0 a 11. No se si 12 y 13 también con esta librería de servos.

Ojo con la alimentación.

Un saludo.
Responder
#45
VALE COMPAÑEROS MUCHAS GRACIAS ¡¡¡¡ Ya lo tengo todo solucionado ... he optado por la solución de Jordi ,,, he instalado la librería esta y este código :


#include <VarSpeedServo.h>

int button1 = 2; //button pin, connect to ground to move servo
int press1 = 0;
VarSpeedServo servo1;

void setup()
{
pinMode(button1, INPUT);
servo1.attach(9);
servo1.write(0);
digitalWrite(4, HIGH); //enable pullups to make pin high
}

void loop()
{
press1 = digitalRead(button1);
if (press1 == LOW)
{
servo1.write(20,10); // AQUÍ MODIFICAS GRADOS DE GIRO Y VELOCIDAD, POR ESTE ORDEN

}
else {
servo1.write(0,10); // AQUÍ MODIFICAS GRADOS DE GIRO Y VELOCIDAD, POR ESTE ORDEN

}
}

...va perfecto
solo que cambiare los pulsadores por interruptores de 6 pines ¡¡¡ así puedo instalar los leds de forma analógica sin tener que hacer mas programación en el arduino .... AHORA intentaré incluir mas servos ...
LE PUESTO AL ARDUINO UN TRAFO DE 12 VOLTIOS Y 4 AMPERIOS ...SERVIRÁ ??
estoy buscando otro para los servos y a las leds ya les pongo sus resistencias correspondientes ¡¡¡
Responder
#46
Perfecto que hayas solucionado el problema, los que no tenemos conocimientos de programación nos toca copia/pega de la red e investigar lo que a otros les sale durmiendo, menos mal que la red está llena de ejemplos.
Lo que no entiendo es que la librería original no incluya la opción de modificar la velocidad de un servo, aunque tengo entendido que usando la "stepper" si puede hacerse, al menos algo así pude deducir en una página.
Creo que está sobredimensionada la alimentación, Arduino por su arquitectura NO puede manejar potencia, para eso están los shield, aunque en este caso solo es por limpieza de cableado como dijo Dani, yo alimento los Arduinos con un cargador de móvil, más que suficiente, incluso para las pruebas con servos y pap a la vez, la misma alimentación para placa y mecanismo, por lo que esos 12V 4 Amp., si tienes uno de móvil, en los chinos lo puedes encontrar por 3€, puedes utilizarlo para los servos y sigue siendo excesivo.
También puedes utilizar esa fuente como hago yo, para alimentar las dos cosas a la vez sin problemas, los servos no van a 12V, con 5-6V es su valor nominal.
No es que tengas 100 servos, es el número de ellos funcionando a la vez lo que determina el consumo, piensa, ¿cuantos desvíos voy a mover a la vez?, en trazado, si no haces rutas, lo normal son 2 para pasar de uno a otro, si gestionas rutas, los que intervengan en dicha ruta, 3,5,6,8......, pues eso es lo que necesitas de potencia, el tamaño de los servos para desvíos es pequeño, al igual que su consumo, suponiendo 8 desvíos a la vez, seguro que con 1 Amp., sería suficiente, además el movimiento es muy breve y no llegaría a colapsar la fuente en caso de exceso de consumo.
Recuerda que un cable de servo largo en exceso puede provocar movimientos indeseados en los servos, en aeromodelismo se usan unas ferritas para evitar eso, de hecho yo tengo alguno de mis helis con ellas puestas, es un simple anillo en el cual se le dan 2 vueltas al cable y listo, es lo mismo que suelen llevar los alimentadores de portátil en el cable de alimentación.
En lugar de esto y por el coste que tienen puedes colocar el Arduino cerca de los servos y que sea largo el cableado de control, un Nano sale a 3€ y sirve para unos cuantos servos, como siempre, es tu elección.
Responder
#47
ahh ¡¡ si se puede modificar la velocidad del servo ,,,pero con la librería VarSpeedServo.h es mejor ,,,, queda el programa mas sencillo y reducido ... no la incluía mi programa pero la descargue de donde dijiste y sin problema ... ya está todo controlado y en los soportes de los servos que van debajo del tablero de la maqueta voy hacerles unos topes mecánicos de seguridad ,,,sin que en su recorrido lleguen a tocar ¡¡¡ por si acaso hay alguna interferencia no se cargue el mecanismo ni me doble las varillas ,,,
las leds van analógicas pasando por el mismo interruptor conmutado de 6 pines ,,,, voy hacer unos semaforos artesanales con leds de 1,8 milimetros ,,, si me sale lo publicare y así explico cositas de moldeo ,,,,gracias SALUDOS
Responder
#48
Me alegro, nunca está de más un tope por si las moscas, esperamos ver esos semáforos.
Responder
#49
Hola

Si te vas a poner a hacer semaforos en nuestra escala, por si no lo tienes, te adjunto un video que esta muy bien detallado, con un paso a paso y con esos leds minusculos que quieres usar.

https://youtube/CwmryGtV5w4


un saludo

Jose Luis
http://viasytrenes.blogspot.com.es/

tratos positivos : chemindeferre, 

tratos negativos :
Responder
#50
Genial, gracias por el aporte.
Responder
#51
ohhhh¡¡¡¡.... que buen tutorial ¡¡¡ pero esas leds que vienen en una cinta ?
y que las pega con pegamento conductor eléctrico?
las que yo tengo llevan pines para soldar ,,,está bien pero yo quiero hacerles la escalera y el cesto ....
Responder


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Conectores para cuadro de mando Aquestsocjo 7 345 17-11-2024, 16:39
Último mensaje: Luigi
  Cámara para vagón en escala N Xinxilla 53 25,486 13-07-2024, 13:50
Último mensaje: tonny
  Ayuda con relés davide967 9 1,673 05-06-2024, 14:56
Último mensaje: JORGITO_YKE
  Tutorial descarga capacitiva (por condensador) para desvios Carles 91 225,510 04-02-2024, 17:03
Último mensaje: leptrain
  Tensión para este Semáforo Adolfo Ant. 7 3,458 17-10-2023, 19:06
Último mensaje: luisperezmochuelo@gmail.com
  Calculos resistencias para led leptrain 2 2,213 25-07-2022, 12:32
Último mensaje: tigrin
Música Interruptores reed para cambios de vía cvillajos 7 5,347 14-07-2022, 22:44
Último mensaje: samy
  Controlador DC con arduino. Alberto_m 22 19,334 12-07-2022, 02:35
Último mensaje: abelmartinez90@outlook.com
  Ayuda: Semáforo en rojo reduce velocidad del circuito a la mitad [Analógico] cvillajos 35 19,484 13-03-2022, 11:12
Último mensaje: MarioAndretti
  Alargo para cables desvío. FernaN 4 3,923 11-02-2022, 12:03
Último mensaje: supertren_es

Salto de foro:


Usuarios navegando en este tema: 5 invitado(s)