Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/07/2009 #1


Proyecto seguidor de movimiento, activacion de sensores
Hola, saludos a todos, primero que nada les explicare un poco mi proyecto. Éste trata de un seguidor de movimiento, la idea es esta, una placa Arduino diecimila, dos servomotores (180º) y tres sensores infrarojos de proximidad sharp

Los dos servomotores le dan dos grados de libertad a mi proyecto, en la punta lleva los tres sensores puestos en las esquinas de un triangulo de acrílico, los sensores están a 12 cm. de separación entre si, la forma en que supuestamente seguirá el movimiento será, tomando los valores de los sensores uno a uno, y después moviendo los servos para que los sensores siempre obtengan una distancia mas o menos parecida (que significara que el medio del triangulo apunte al objetivo).

Ahora bien, mi duda es esta, conectar la alimentación de los sensores a la misma alimentación de los servos?(el pin de 5V de la arduino) o puedo conectar la alimentación de los sensores a las salida digitales de la Arduino y activarlas por medio del código?

Mi duda al conectarlo a la alimentación de 5v es que se mantendrían siempre activados los 3, por lo que habría distorsión en la medición ya que los tres estarían emitiendo y recibiendo o no? o esto no pasa?

Porque mi problema es que yo los tengo conectados a las salidas digitales, pero no me funciona

Adjunto mi código, ojala me pudieran ayudar, de antemano muchas gracias

codigo:

Código:
int laser=11; // Pin del láser
int infrarojo1=6; // Pin del sensor infrarojo 1
int infrarojo2=5; // Pin del sensor infrarojo 2
int infrarojo3=4; // Pin del sensor infrarojo 3
int distancex = 0; // Distancia de la lectura del infrarojo 1
int distancey = 0; // Distancia de la lectura del infrarojo 2
int distancez = 0; // Distancia de la lectura del infrarojo 3
int pos;
int analogPin1=1; // Entrada analoga del infrarojo 1 
int analogPin3=3; // Entrada analoga del infrarojo 2
int analogPin5=5; // Entrada analoga del infrarojo 3



#include <Servo.h>

Servo myservo1;
Servo myservo2;

void setup()
{
  Serial.begin(9600); 
  pinMode(laser,OUTPUT);// Pin del láser configurado como salida
  pinMode(infrarojo1,OUTPUT); // Pin del infrarojo configurado como entrada
  pinMode(infrarojo2,OUTPUT);
  pinMode(infrarojo3,OUTPUT);
  myservo1.attach(9); // Pin del servomotor 1
  myservo2.attach(8); // Pin del servomotor 2
  
}
void loop()
{
  //digitalWrite(laser,HIGH); // Láser encendido
  digitalWrite(infrarojo1,HIGH); // Sensor 1 encendido
  delay(100); // Tiempo de delay necesitado para la captura del dato
  distancex=analogRead(analogPin1); //Lectura del dato de proximidad 
  digitalWrite(infrarojo1,LOW); // Apagado del Sensor 1
  digitalWrite(infrarojo2,HIGH);
  delay(100);
  distancey=analogRead(analogPin3);
  digitalWrite(infrarojo2,LOW);
  digitalWrite(infrarojo3,HIGH);
  delay(100);
  distancez=analogRead(analogPin5);
  digitalWrite(infrarojo3,LOW);
  
  if((distancey-distancez > 1)) //  1 = minimo desfase entre las ditancias recibidas y un movimiendo de 1º del servomotor 
      for(pos>=1; pos-=1;)            // Mueve hacia la derecha el servomotor de la base
  {                                
    myservo1.write(pos);              // El servomotor se mueve a la posición "pos"
    delay(15);                       // Espera de 15 ms para llegar a destino
  } 
  
  
    
  if((distancez-distancey > 1)) // 1 = minimo desfase entre las ditancias recibidas y un movimiendo de 1º del servomotor 
   for(pos < 180; pos += 1;)          // Mueve hacia la izquierda el servomotor de la base
  {                                 
    myservo1.write(pos);              // El servomotor se mueve a la posición "pos"
    delay(15);                        // Espera de 15 ms para llegar a destino
  }
    
 if((distancex-distancey > 1)) // 1 = minimo desfase entre las ditancias recibidas y un movimiendo de 1º del servomotor 
    for(pos>=1; pos-=1;)             // Mueve hacia abajo el servomotor del brazo
  {                                
    myservo2.write(pos);             // El servomotor se mueve a la posición "pos"
    delay(15);   
  }

 if((distancey-distancex > 1)) //  1 = minimo desfase entre las ditancias recibidas y un movimiendo de 1º del servomotor 
   for(pos < 180; pos += 1;)         // Mueve hacia arriba el servomotor del brazo 
  {                                  // in steps of 1 degree 
    myservo2.write(pos);             // El servomotor se mueve a la posición "pos"
    delay(15);                     
  }
 
    
}
si pudieran decirme algun tip, se los agradeceria mucho
15/07/2009 #2


bueno ya lo termine, y lo pude hacer funcionar
gracias por las lecturas
27/01/2010 #3


Respuesta: Proyecto seguidor de movimiento, activacion de sensores
hola tosky tu proyecto me parece muy interesante por que me serviria de ayuda para armar el mio ke de ante mano te comento quiero hacer un robot de laberinto me podrias ayudar con el codigo completo y la implementacion.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.