Go Down

Topic: ciclos anidados? saltos??... ayuda (Read 3 times) previous topic - next topic

sustirijiyo

Max_Maker gracias por responder tan pronto

la verdad no se si en realidad el servo lea como q esta a 90° solo se q se comporta como si lo estuviera.
mira lo q intento hacer es es algo asi:
tengo una serie de leds, y tengo el servo, montado en el servo tengo la fotoresistencia, elservo se mueve a traves de unas guias a lo largo de la serie de leds, al haber un led encendido, la fotoresistencia lo sensa como un valor arriba de 700(ya cuando estacerca del led), en ese momento necesito q el servo se detenga, es en el momento en el q ha llegado a su "Target" como decia Mitxel

espero aclarar algo, ustedes si me han aclarado varias cosas, gracias

saludos :)

Max_Maker

#6
Dec 12, 2012, 08:17 pm Last Edit: Dec 13, 2012, 05:21 am by Max_Maker Reason: 1
Ahh guay... Pues este sería el código:

#include <Servo.h>

int LDR = 3;
Servo servo1;

void setup ()
{
 servo1.attach(23);
 pinMode(LDR,INPUT);
}

void loop()
{
       if (analogRead(LDR) >= 700)
           {
               servo1.write(90);            //Para que se detenga al encontrar el LED encendido
           }
       else if (analogRead(LDR) < 700)
           {
               servo1.write(91);            //Para que gire indefinidamente o vuelva a girar si se apaga el LED
           }
}

El programa está basado en el supuesto de mi anterior comentario (el servo piensa que siempre está en 90º y si le mandas 91º nunca llega y por lo tanto no para, con 89º igual en sentido opuesto).

Fácil, sencillo y para toda la familia.
Fácil, sencillo y para toda la familia.

sustirijiyo

ok, muchas gracias ahora lo pruebo y les aviso si me funciono

saludos

sustirijiyo

Max_Maker con la novedad de q no esta sirviendo el programa, lo intente asi tal cual lo dejaste y no ha funcionado,

la cosa es q con el programa original q viene de ejemplo  para servos si funciona(con lo q yo llegue a la conclusion de q en realidad no lee al servo como si estubiera exactamente a 90°), el unico problema sigue siendo el paro,  no se como hacerlo parar, pero bueno este es mas o menos el programa q use y funciono, el servo da vuelta a un lado indefinidamente y despues al otro, el problema sigue siendo el como lo detengo  :S jaja aqui use el serial para comunicarme en lugar de la fotoresistencia ya q por el momento no la tengo.

cualquier idea es bienvenida, gracias y saludos

#include <Servo.h>
Servo myservo;               
int val=0;
int pos = 0;   
void setup()
{
  myservo.attach(9);
  Serial.begin(9600);
}
void loop()
{
  val = Serial.read()-48;
 
  switch (val)
  {
  case 1:
  {
    for(pos = 0; pos < 180; pos += 1)
    {           
    myservo.write(pos);             
    delay(15);                       
    }
    break;
  }
  case 2:
  {
    for(pos = 180; pos>=1; pos-=1)     
    {                               
    myservo.write(pos);             
    delay(15);                       
    }//for
    break;
  }//case 2
}//switch
}

Max_Maker

A ver, dime en qué condiciones se mueve el servo y en cuáles se para, y entonces te podré adaptar el programa.
A las malas, si resulta que no hay ninguna instrucción que lo haga pararse, se incorpora un optoacoplador (como un relé) entre el positivo del servo y alimentación, de manera que lo desconectas cuando llega a la posición.
Pero lo más importante, lo primero que nos tienes que decir es como se comporta tu servo, sino no te podemos ayudar.

PD: Si no quieres que se mueva circularmente, ¿porque has modificado el servo?
Fácil, sencillo y para toda la familia.

Go Up