Show Posts
Pages: [1] 2 3
1  International / Español / Re: ciclos anidados? saltos??... ayuda on: December 19, 2012, 03:06:49 pm
emm bueno, al fin he probado este ultimo programa y en teoria trabaja bien, lo estuve checando observando con el serial como se comportaba, imprimiendo en pantalla lo q hay en la variable pos y lo q la fotoresistencia sensa, pues, ha funcionado bien, al acercar una fuente de luz se rompe el ciclo y pasa a la siguiente instruccion, lo malo es q el servo no se detiene :S intente agregando una instruccion directa para el servo, algo como "myservo.write(180);" afuera del for, esto ha detenido el movimiento del servo, pero tambien se detiene el programa con mensajes de error de tipo serial Event, si alguien me pudiera indicar q estoy haciendo mal se los agradeceria

saludos
2  International / Español / Re: ciclos anidados? saltos??... ayuda on: December 17, 2012, 03:59:06 pm
hola, disculpa la demora, he estado bastante ocupado, mira aqui esta mas o menos el programa o al menos la parte a la q me refiero

#include <Servo.h>
Servo myservo;                 
int val=0;
int pos = 0;   
//para los leds:
int ledPin1 =8;
int ledPin2 =9;
int ledPin3 =11;
int SlB = 3;   // SlB :SENSOR DE LUZ
void setup()
{
   pinMode (ledPin1, OUTPUT);
   pinMode (ledPin2, OUTPUT);
   pinMode (ledPin3, OUTPUT);
        myservo.attach(12);
        Serial.begin(9600);
        pinMode(SlB, INPUT);
}
void loop()
{
    int val = Serial.read()-48;
    switch (val)//encendido de leds a traves de un integrado
    {
        case 1:
            {
                digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
              break;
            }
        case 2:
        {
                digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, LOW);
              break;
        }
        case 3:
        {
                digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, LOW);
              break;
        }
        case 4:
        {
                digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, HIGH);
              break;
        }
        case 5:
        {
                digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, HIGH);
              break;
        }
    }//fin de switch
     
     //inicio de servo
    for(pos = 0; pos < 180; pos += 1)
    {   
      if (analogRead(SlB)>= 700) break;     
      else
      {
        myservo.write(pos);             
        delay(15);
      }       
    } //fin de for
    delay(5000); 
}

en cuanto a lo de el acoplamiento de los 2 servos, es buena idea, pero la verdad es q en mi ciudad no se consiguen y no hay dinero para mandarlos traer, lamentablemente, bueno gracias por el apoyo y por la paciencia sobre todo jeje saludos
3  International / Español / Re: ciclos anidados? saltos??... ayuda on: December 15, 2012, 04:31:42 pm
hola, perdon por la demora, he estado un poco ocupado

bueno como ya te comente antes Max_Maker el servo se mueve despues de q algun led se enciende, ese no es problema en realidad, utilizo un switch case para encender los leds, sepues de eso se pone en marcha el servo, sobre este esta montada una fotoresistencia (esta va conectada a ua entrada analogica del arduino) y cuando esta sensa la luz de uno de los leds (cuando sensa un poco mas de 700, para ser un poco mas precisos) es cuando el servo debe recibir la señal de paro, o no se si se pueda solo salir del ciclo en el q esta el servo y despues continuar con la seccion del programa q sigue.

la razon por la cual se decidio modificar el servo es por q la serie de leds es algo larga, y con la carrera q nos ofrecia el  servo de fabrica no alcanzaba toda esta longitud, es por eso q se decidio modificarlo.

espero con esto me explique mejor, gracias por tu ayuda y saludos.
4  International / Español / Re: ciclos anidados? saltos??... ayuda on: December 13, 2012, 05:37:05 pm
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
}
5  International / Español / Re: ciclos anidados? saltos??... ayuda on: December 13, 2012, 09:59:15 am
ok, muchas gracias ahora lo pruebo y les aviso si me funciono

saludos
6  International / Español / Re: ciclos anidados? saltos??... ayuda on: December 12, 2012, 01:54:42 pm
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 smiley
7  International / Español / Re: ciclos anidados? saltos??... ayuda on: December 12, 2012, 01:09:55 pm
bueno primero q nada gracias por responder tan pronto a ambos smiley

bueno pues la modificacion q se le hizo al servo fue ponerle 2 resistencias de valores iguales, en lugar del potenciometro q traen de fabrica, (no se como insertar imagenes aqui para ser un poco mas explicito, pero la adjuntare al menos al final), se coloco el extremo de una de las resistencias en el extremo q deberia estar una de las patas del potenciometro, y del otro extremo la para de la segunda resistencia, despues las patas q no estaban conectadas se juntaron y  se soldaron en el lugar q deberia estar la pata intermedia del potenciometro, con esto me han dicho q el servo se comportaria aun como un servomotor normal pero q seria como si siempre estuviera a 90°.

0xDA_bit mi pregunta respecto a las estructuras condicionales, mi pregunta es,  q tipo de instruccion puedo usar para salir de un ciclo, aunq las condiciones del mismo no se hayan cumplido aun, como en el caso del for, ya q este no se cumpliria nunca, cual seria un tipo de "salto" para q al cumplirse la condicion del while, parara el for y se saltara hacia la siguiente instruccion, como dice Mitxel, un break, aunq no se si exista otra instruccion q sirva para lo mismo.

Mitxel espero q lo poco q supe explicar la modificacion te sirva un poco mas, tu codigo me parece miuy bueno, y con lo poco q se de programacion apenas y puedo entenderlo, podrias explicarme un poco mas?? te explico un poco mas de q se trata mi programa:

tenemos un servomotor (trucado) y este tiene q girar indefinidamente (olvide mencionar q junto con los ciclos estoy usando la llibreria q viene para servos) hasta q una fotoresistencia q esta en otro lado nos de un valor mayor a digamos 700 (ya q esta conectada a un pin analogico y se supone q nos da un valor entre 0 y 1023, corrijanme si me equivoco), esta fotoresistencia se activara con un led, y la luz esta practicamente controlada. ahora, despues de este proceso tengo otros cuantos procesos, movimientos de motores a pasos y encendido de leds, es por eso q pido ayuda para saltar del ciclo hacia la siguiente linea.

 bueno espero q eso sea suficiente, y si no, pueden preguntarme cuanto quieran, muchas gracias
8  International / Español / ciclos anidados? saltos??... ayuda on: December 12, 2012, 12:13:46 am
hola, espero q puedan ayudarme con esta duda q me ha surgido

estoy trtabajando con un servomotor y una fotoresistencia, a traves de esta se efectuara el paro del servo, y bueno he entendido q tengo q poner un par de ciclos anidados, algo mas o menos asi:

for (pos=0; pos<=180;pos+=1)//pos es una variable int en la q se guarda la posicion del motor
{
    while (val<= 1000)//donde val es una variable donde se va guardando el valor de la fotoresistencia
    {
        //codigo del servo y del sensado de la fotoresistencvia
    }
}

bueno algo asi, pero tengo mis dudas, puesto q el servo con el q estoy trabajando fue modificado para q girara 360° en lugar de 180°, por lo q me dicen q trabajara, de ahora en adelante como si siempre estuviera en 90° (se cambio su potenciometro por un par de resistencias), entonces segun entiendo se ciclaria el for a q nunca va a alcanzar la posicion de 180°...aun tengo dudas de esa parte, ppr favor diganme si me equivoco.

en fin, me gustaria saber si es buena idea el poner una especie de salto al finaldel while, con la misma condicion que este para q al terminar de ejecutarse, se saltara a la siguiente parte del codigo (no se nada acerca de saltos, me gustaria q me dieran un ejemplo o una explicacion), o q deberia de hacer? cualquier sugerencia, informacion y ejemplo son bienvenidos. gracias y saludos
9  International / Español / Re: sensor de paro fotoresistencia para servo on: December 03, 2012, 02:51:28 pm
hola, si, tambien se me ocurrio despues la idea del while, pero tu me la aclaraste, entonces seria algo asi

 For(int pos= 0; pos<= 180; pos += 1)
{
        while(val<= 700)
         {
              //instrucciones servo
         }
}

pero corrigene si estoy mal, el for se seguira ejecutando, aunque en realidad no moveria mas el servo verdad???
si es asi, habria una forma de q al cumlirse el while se diera un salto hacia la siguiente sentencia (la q sigue del for)(algo como un goto)???

 gracias por las respuestas y saludos
10  International / Español / Re: Problema com "goto" on: December 03, 2012, 02:09:33 pm
wow  muchas gracias a todos me han ayudado bastante

Mixtel
 me has sacado de una buena duda q era las funciones, pero aun hay varias q traigo atoradas en la cabeza,bueno lo q pasa es q mi programa final tiene varios procesos y la mayoria son de ciclos for y while (y algunos if else y cases tambien), me parecia buena idea crear estos procesos cada uno por su parte y despues llamarlos con el goto (ahora cambiandolos por funciones), aqui les dejo un diagrama asi medio simple de lo q seria el proceso de mi programa (espero pr q es la primera ves q trato de poner una imagen aqui jaja)
11  International / Español / Re: sensor de paro fotoresistencia para servo on: November 29, 2012, 10:53:04 am
Hola, gracias por responder, claro, se me olvido poner eso.

Si, cuando fo fotorresistencia envie un valor mayor a digamos 700 se envía la señal de paro.

Había pensado en un par de fors anidados, algo así:

val // esta variable tendría dentro de si el valor de la fotorresistencia

For(val<= 700)
{
    For(int pos= 0; pos<= 180; pos += 1)
    {
        //Instrucciones del servo
    }
}

 necesito algún tipo de salto o paro?

Despues de este codigo aún tengo unas cuantas instrucciones q debe realizar.

12  International / Español / sensor de paro fotoresistencia para servo on: November 28, 2012, 06:31:03 pm
hola estoy trabajando con un servomotor y quisiera hacer q pare a traves de una fotoresistencia, el problema es q no estoy seguro de como hacerlo, intente con un solo ciclo for pero no me funciono, alguna sugerencia???
13  International / Español / Re: Problema com "goto" on: November 28, 2012, 02:44:40 pm
tambien me gustaria q me explicaran si es posible los usos e funciones q uno mismo crea para despues llamarlas a lo largo de un programa, para utilizarlos en lugar del goto, gracias
14  International / Español / Re: Problema com "goto" on: November 28, 2012, 02:42:24 pm
ok este fue el primer programa q hice... despues lo modifique tanto q le quite los goto y le puse muchas cosas diferentes jeje

int ledPin1 = 8;
int ledPin2 = 9;
int ledPin3 = 11;
int ledPin4 = 12;
int fotoRes = 0;
int val = 0;

void setup()

{
   pinMode (ledPin1, OUTPUT);
   pinMode (ledPin2, OUTPUT);
   pinMode (ledPin3, OUTPUT);
   pinMode (ledPin4, OUTPUT);
   Serial.begin (9600);
}

void loop()
{
   val= Serial.read()-48;

   if(val =='1')
   {
      goto encled1;
   }
   
   else if (val =='2')
   {
      goto encled2;
   }

   else if (val =='3')
   {
      goto encled3;
   }

   else if (val =='4')
   {
      goto encled4;
   }

   else {goto finFin;}

   encled1:
      {digitalWrite(ledPin1, HIGH);
      goto finFin;}
   encled2:
      {digitalWrite(ledPin2, HIGH);
      goto finFin;}
   encled3:
      {digitalWrite(ledPin3, HIGH);
      goto finFin;}
   encled4:
      {digitalWrite(ledPin4, HIGH);
      goto finFin;}
   
   finFin:
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, HIGH);
      digitalWrite(ledPin4, HIGH);
      delay(500);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
}



15  International / Español / Problema com "goto" on: November 27, 2012, 06:05:09 pm
Hola

Yo se que la mayoria me diran q eso de usar el goto no es lo mas indicado, aun asi quisiera aprender a utilizarlo y el problema es q tengo un pequeño programa de prueba pero no se por q la palabra no me la toma como codigo, osea q pues no se cambia de color, y bueno veo q la sintaxis es asi simple (goto label;) bueno quisiera saber si en realidad estoy mal o q necesito para utilizarla bien, un ejemplo me vendria de maravilla.

Gracias y saludos.
Pages: [1] 2 3