ayuda ¡¡¡ para saber que arduino instalar - Versión para impresión +- Foro de modelismo escala N (https://www.escalan.es) +-- Foro: Modelismo Escala N (https://www.escalan.es/forum-3.html) +--- Foro: Electricidad (https://www.escalan.es/forum-8.html) +--- Tema: ayuda ¡¡¡ para saber que arduino instalar (/thread-5778.html) |
RE: ayuda ¡¡¡ para saber que arduino instalar - JoseBarrossoGarcia - 10-06-2016 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... RE: ayuda ¡¡¡ para saber que arduino instalar - tracas - 10-06-2016 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=== RE: ayuda ¡¡¡ para saber que arduino instalar - JoseBarrossoGarcia - 10-06-2016 pero esto es para digital ??? No?? RE: ayuda ¡¡¡ para saber que arduino instalar - tracas - 11-06-2016 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. RE: ayuda ¡¡¡ para saber que arduino instalar - JoseBarrossoGarcia - 14-06-2016 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 ¡¡¡ RE: ayuda ¡¡¡ para saber que arduino instalar - Jordi - 14-06-2016 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. RE: ayuda ¡¡¡ para saber que arduino instalar - JoseBarrossoGarcia - 17-06-2016 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 RE: ayuda ¡¡¡ para saber que arduino instalar - Jordi - 17-06-2016 Me alegro, nunca está de más un tope por si las moscas, esperamos ver esos semáforos. RE: ayuda ¡¡¡ para saber que arduino instalar - jlaries52 - 17-06-2016 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 RE: ayuda ¡¡¡ para saber que arduino instalar - Jordi - 17-06-2016 Genial, gracias por el aporte. RE: ayuda ¡¡¡ para saber que arduino instalar - JoseBarrossoGarcia - 17-06-2016 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 .... |