servo

hola soy nuevo en este tema de arduino , soy modelista ferroviario tambien y mi pregunta se puede o hay algun codigo para mover un servo con un pulsador de 0º pulso y se va a 45º como si fuera un rele bi estable pues me haria falta para mover los cambios de via . gracias

se que hay muchos codigos que los mueven sin parar pero yo necesito que este quieto hasta que pulse
gracias

Hola taper.

No es excesivamente difícil hacer lo que quieres. Sin embargo la forma en la que solicitas ayuda (un código que directamente haga eso) da que pensar que poco sabes de programar y poco has practicado con Arduino. En un foro de ayuda como éste lo que en general se pretende no es dar un pescado, es enseñar a pescar. La razón es sencilla, si no me he equivocado en lo que he expuesto aunque alguien te haga el código seguro que te encontrarás con más problemas que no sabrás resolver.

por supuesto que no me aclaro en el tema no sera porque no lo he intentado pero no me sale de ninguna manera y eso que me he leido de cabo arabo el libro introduccion a arduino he visto un millar de videos pero no hay forma , no lo he pedido por ser mas facil ,y como do si al final no se hacerlo quedo igual no me entra y noquiero aprovecharme de nada.algunos no hemos tenido la suerte de poder estudiar ingles ,informatica ,etc. vamos enseñandonos algo sobre la marcha , preguntando .etc a lomejor esta mal echa la pregunta podria ser esta : podria alguien ayudarme a hacer un codigo para...............................................................
gracias y perdon

Entiendo lo que quieres decir. Sin embargo si has leído tanto algo habrás aprendido. Intenta hacer algo de código mezclando lo que has aprendido y adaptando ejemplos y expón tus resultados: se mueve el servo al pulsar un botón pero no de la forma que quiero, o sólo se mueve la primera vez o no llega a moverse. Con eso es muy fácil ir guiándote en lo que tienes mal y cómo solucionarlo. Además si lo que querías es aprender ésta es la forma. Las ayudas te las daremos en español.

#include <Servo.h>

Servo myservo;

const int SERVO = 9;
const int BUTTON = 7;

int val = 0;
int old_val = 0;
int estate = 0;

void setup(){
myservo.attach(9);
pinMode(SERVO, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop()
{
val = digitalRead (BUTTON);
if ((val == HIGH) &&(old_val == LOW))
for(pos = 0);
myservo.write(pos)

llevo toda la tarde con esto y ya no se por donde entrar

Hola,

de momento:
for(pos = 0);

  • myservo.write(pos)*

... si quieres ejecutar el bucle, tienes el ';' después del for, luego no hay bucle.

Por orta parte, ¿por qué no pruebas a generar los pulsos que necesita el servo con escritura digital del pin de control y pausas? Pienso que podrías así avanzar poco a poco.

Saludos y suerte.

gracias por contestar pero como habras leido esto des de cero , cuando dices bucle te refieres a que repita el programa una y otra vez,

yo tengo conectado los cables del servo negro a ¨GND¨rojo a ¨5V¨ y blanco al pin 9 , estan bien conectados ? esta configuracion la he sacado de el ejemplo 3b del libro INTRODUCCION A ARDUINO y el resto mas o menos de el ejemplo de Sweep de servo pa que veas mas o menos por donde me estoy moviendo

Hola,

for(pos = 0);

este bucle 'for' inicializa la variable 'pos' y no hace nada más. Luego myservo.write(pos) se ejecutaría para el único valor de 'pos=0'; no creo que mueva el servo.

prueba a generar el pulso tu mismo:

digitalWrite(pin,HIGH);
delayMicroseconds(1000);
digitalWrite(pin,LOW);
delay(20);

'pin' será el pin 9 de control del servo, definido como salida. Así harías un pulso de 1000 microsegundos. Observa si el servo responde, luego prueba otros valores.

Saludos.

#include <Servo.h>

Servo myservo;

const int SERVO = 9;
const int BUTTON = 7;

int val = 0;
int old_val = 0;
int estate = 0;

void setup(){
myservo.attach(9);
pinMode(SERVO, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop()
{
digitalWrite(pin,HIGH);
delayMicroseconds(1000);
digitalWrite(pin,LOW);
delay(20);

a esto te rrefieres

no carga el codigo

Hola taper,
Hice algunos cambios y adiciones a tu codigo. Te anexo el codigo (corre bien). Tambien te anexo un diagrama de conexiones del Arduino con el servo y el boton. Por favor avisame si te sirve. Saludos cordiales.

#include <Servo.h>

Servo myservo;

const int SERVO = 9;
const int BUTTON = 7;

int val = 0;
int old_val = 0;
int estate = 0;
int pos = 0;

void setup(){
  myservo.attach(SERVO);
  pinMode(BUTTON,INPUT);
  myservo.write(45);
}

void loop()
{
  val = digitalRead(BUTTON);                       
  if ((val == HIGH) && old_val)
  {
    if (estate)      
    { 
      estate = 0; 
      for(pos = 0; pos < 45; pos += 1)  
      {                                   
        myservo.write(pos);             
        delay(20);                       
      }      
    }
    else
    {
      estate = 1;   
      for(pos = 45; pos>=1; pos-=1)     
      {                                
        myservo.write(pos);              
        delay(20);                      
      }    
    }
    old_val = 0;  
  }
  if (val == LOW) 
  {
    old_val = 1;             
  }
}

perfecto si funciona, ahi esta para el que le haga falta, muchas gracia ,estoy intentando subir una pequeño video pero no se como pa que lo vierais, si me deciis como se suben los videos enseguida lo enchufo

A lo que llego ya veo que te han ayudado más que suficiente. No hay más que darse cuenta de que cuando se ve una intención real de querer hacerlo y aprender y se muestra el poco o mucho código al que se ha llegado, no faltan usuarios dispuestos a echar una mano. Me alegro de que ya te funcione.

no es para mi solo es para todos el que le haga falta ,pero me quedo en la duda de si yo lo hubiera podido hacer................decirme como puedo subir el video y lo vemos todos, como he dicho antes llevo toda la tarde intentando y cuando iba a dejarlo( por hoy ) me han echado un cable. gracias

¡Hola taper!
Me alegra poderte haber sido de ayuda. También me alegra saber que contamos en el foro con un modelista ferroviario como tú. Siempre me han fascinado los modelos de trenes. Si tienes alguna página o link en Internet, sería bueno si nos lo haces saber, a fin de tener una mejor idea del tamaño y tipo de los modelos con que trabajas.

Siempre a tus órdenes. Pero como bien dice Cheyenne, la idea es servirte de guía en esta senda de implementación de ideas usando Arduino, pues al final los primeros pasos los debes dar tú.

Anexo la forma de agregar documentos (archivos, fotos, videos, etc.)

Saludos cordiales.

nada sigo los pasoso que me indica , se carga y despues me sale ina imagen en 3d de arduion y dice que esperamos estar pronto en linea.en cuanto a lo modelista ferroviario llevo medio año , estoy empezando ahora que tengo mas tiempo por desgracia (en paro) lo que si que llovo años es de aeromodelista sique tengo unos cuantos modelos , en maquetas de ferroviarias tengo dos que acabo de comprar siempre de segunda mano , esque nuevas valen un paston y no llego poco a poco he comprado vias maquinas vagones y ahora ya puedo empezar en serio , lo del servo es poque los desvios manuales son mucho mas varatos y a la hora de mecanizarlos tambien , es son mas finos a la hora de actuar los de compra van muy rapidos no asemejan al cambio de agujas real , la escala que yo tengo es la de h0 normal porque hay un formato que es marklin que lleva tres carriles y es para mi un poco mas dificil , ya que mis compañeros de hobby de aqui tambien tienen el mismo sistema y ellos si que llevan mas tiempo y para las dudas mejor , pero si hay algo en lo que pueda ayudar ya sabeis aqui estoy

para " CHELLENE "

se que hay que practicar pero si no tienes a nadie al lado para que te lo explique como se empieza un equech pues no adelantas nada por que supongo que como yo habra mucha gente que va desde cero en todo encuanto electronica , ingles , programacion etc que por no preguntar se sigue quedando acero y como te dije llevo muchos videos y pequeños manuales leidos pero cuesta y gracias que estan los foros estos con su gente preparada para echar una mano.
lo que se tendria que hacer es un "MANUAL PARA PARA INICIARSE EN ARDUINO COMO DIOS MANDA " O PARA CORTOS
FACILITO FACILITO DESDE CERO.
" ESTO NO ES UNA QUEJA "

que os parecen estos motores se podrian controlar con arduino?