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:
si pudieran decirme algun tip, se los agradeceria mucho
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