Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integrantes:
Maicol Andrés Vásquez Contrera
Juan Andrés Gómez Gómez
Andrés Felipe Jiménez Cervantes
Andrés Felipe Guerra Iguarán
Diego Oliveros Romero
Programa:
Ingeniería Mecatrónica
Grupo:
1ª
Profesora:
Carlos Andrés Ochoa Pertuz
Curso:
Introducción a la ingeniería mecatrónica
Diagrama esquemático de conexión:
Servo myservo;
Servo myservo2; // nombramos a los servos
Servo myservo3;
Servo myservo4;
int val;
int val2; //declaramos las variables de cada servo
int val3;
int val4;
// se declara una bandera booleana que al inicio tendrá valor de “falso”. Y, cuando
bool flag=false; sea verdadera las 6 posiciones guardadas y registradas en la memoria del
programa estarán listas para ejecutarse.
void setup() {
myservo.attach(2);
myservo2.attach(3);
Indicamos los pines a los que irá
myservo3.attach(4); conectado cada servo
myservo4.attach(5);
pinMode(8, INPUT_PULLUP);
Indicamos los pines a los que irán conectados los pulsadores,
pinMode(9, INPUT_PULLUP); los configuramos como entrada y usarán una resistencia pullup
pinMode(10, INPUT_PULLUP);
pinMode(7, OUTPUT); Indicamos el pin al que irá conectado el led y lo configuramos como salida
void loop() {
val = analogRead(0); //el servo 1 recibirá una lectura análoga del potenciómetro conectado al pin 0
val = map(val,0,1023,0,270 //el servo 1 hará un mapeo de la señal que le envíe el potenciómetro
Serial.print (" el valor del angulo del servo 1 = "); //el puerto serial imprimirá lo que
está dentro del paréntesis
Serial.println (val); //el puerto serial imprimirá los valores del ángulo del servo 1 de
acuerdo con el valor que tome este
val2 = analogRead(1); //el servo 2 recibirá una lectura análoga del potenciómetro
conectado al pin 0
val2 = map(val2,0,1023,0,270); //el servo 2 hará un mapeo de la señal que le envíe el potenciómetro
Serial.print (" el valor del angulo del servo 2 = "); //el puerto serial imprimirá lo que
está dentro del paréntesis
Serial.println (val2); //el puerto serial imprimirá los valores del ángulo del servo 2 de
acuerdo con el valor que tome este
val3 = analogRead(2); //el servo 3 recibirá una lectura análoga del potenciómetro
val3 = map(val3,0,1023,0,270); //el servo 3 hará un mapeo de la señal que le envíe el potenciómetro
Serial.print (" el valor del angulo del servo 3 = "); "); //el puerto serial imprimirá lo
que está dentro del paréntesis
Serial.println (val3); //el puerto serial imprimirá los valores del ángulo del servo 3 de
acuerdo con el valor que tome este
val4 = analogRead(3); //el servo 4 recibirá una lectura análoga del potenciómetro
val4 = map(val4,0,1023,0,270); //el servo 4 hará un mapeo de la señal que le envíe el potenciómetro
if (digitalRead(8)== LOW) {
contador_angulos=contador_angulos+1;
Si el pulsador conectado al pin 8 se
Serial.println("interruptor accionado"); acciona, entonces aumente el
Serial.println("angulos guardados"); contador de ángulos en 1 y prenda
por un segundo el led conectado al
digitalWrite(7, HIGH); pin 7
delay(1000);
digitalWrite(7, LOW);
if (contador_angulos == 1) {
posicion1[0]=val; Si el contador de ángulos es igual a
1, entonces registre el primer
posicion1[1]=val; arreglo de posiciones de los servos
posicion1[2]=val3; en la memoria del programa
posicion1[3]=val4;
}
if (contador_angulos == 2) {
posicion2[0]=val; Si el contador de ángulos es igual a
2, entonces registre el segundo
posicion2[1]=val2; arreglo de posiciones de los servos
posicion2[2]=val3; en la memoria del programa
posicion2[3]=val4;
}
if (contador_angulos == 3) {
Si el contador de ángulos es igual a
posicion3[0]=val;
3, entonces registre el tercer
posicion3[1]=val2; arreglo de posiciones de los servos
en la memoria del programa
posicion3[2]=val3;
posicion3[3]=val4;
}
if (contador_angulos == 4) {
posicion4[0]=val; Si el contador de ángulos es igual a
4, entonces registre el cuarto
posicion4[1]=val2; arreglo de posiciones de los servos
en la memoria del programa
posicion4[2]=val3;
posicion4[3]=val4;
if (contador_angulos == 5) {
posicion5[0]=val; Si el contador de ángulos es igual a
5, entonces registre el quinto
posicion5[1]=val2;
arreglo de posiciones de los servos
posicion5[2]=val3; en la memoria del programa
posicion5[3]=val4;
if (contador_angulos == 6) {
posicion6[0]=val; Si el contador de ángulos es igual a
6, entonces registre el sexto arreglo
posicion6[1]=val2;
de posiciones de los servos en la
posicion6[2]=val3; memoria del programa y cambie el
valor de la bandera booleana a
posicion6[3]=val4; verdadero
flag=true;
Serial.println(val);
Serial.println(val2); Imprima en el puerto serial los
ángulos que tomen los servos
Serial.println(val3);
Serial.println(val4);
Serial.println ("------------");
void secuencia() {
while(1) {
if (digitalRead(10)== LOW) {
Si el pulsador conectado al pin 10
digitalWrite(7, HIGH); se acciona, entonces encienda por
1 segundo el led conectado al pin 7
delay(1000);
y salga de la secuencia
digitalWrite(7, LOW);
Serial.println("He salido de la secuencia");
break;
}
Serial.println("posicion 2");
myservo.write(posicion2[0]); Ejecute el segundo arreglo de
posiciones que se registró
myservo2.write(posicion2[1]);
anteriormente y espere por 5
myservo3.write(posicion2[2]); segundos antes de ejecutar el
siguiente arreglo de posiciones
myservo4.write(posicion2[3]);
delay(5000);
if (digitalRead(10)== LOW) {
Si el pulsador conectado al pin 10
se acciona, entonces encienda por
1 segundo el led conectado al pin 7
y salga de la secuencia
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
Serial.println("He salido de la secuencia");
break;
}
Serial.println("posicion 3");
Ejecute el tercer arreglo de
myservo.write(posicion3[0]); posiciones que se registró
anteriormente y espere por 5
myservo2.write(posicion3[1]);
segundos antes de ejecutar el
myservo3.write(posicion3[2]); siguiente arreglo de posiciones
myservo4.write(posicion3[3]);
delay(5000);
if (digitalRead(10)== LOW) {
Si el pulsador conectado al pin 10
digitalWrite(7, HIGH);
se acciona, entonces encienda por
delay(1000); 1 segundo el led conectado al pin 7
y salga de la secuencia
digitalWrite(7, LOW);
Serial.println("He salido de la secuencia");
break;
}
Serial.println("posicion 4");
myservo.write(posicion4[0]); Ejecute el cuarto arreglo de
posiciones que se registró
myservo2.write(posicion4[1]); anteriormente y espere por 5
segundos antes de ejecutar el
myservo3.write(posicion4[2]);
siguiente arreglo de posiciones
myservo4.write(posicion4[3]);
delay(5000);
if (digitalRead(10)== LOW) {
Si el pulsador conectado al pin 10
digitalWrite(7, HIGH);
se acciona, entonces encienda por
delay(1000); 1 segundo el led conectado al pin 7
y salga de la secuencia
digitalWrite(7, LOW);
Serial.println("He salido de la secuencia");
break;
}
Serial.println("posicion 5");
Ejecute el quinto arreglo de
myservo.write(posicion5[0]);
posiciones que se registró
myservo2.write(posicion5[1]); anteriormente y espere por 5
segundos antes de ejecutar el
myservo3.write(posicion5[2]); siguiente arreglo de posiciones
myservo4.write(posicion5[3]);
delay(5000);
if (digitalRead(10)== LOW) {
digitalWrite(7, HIGH); Si el pulsador conectado al pin 10
se acciona, entonces encienda por
delay(1000);
1 segundo el led conectado al pin 7
digitalWrite(7, LOW); y salga de la secuencia
Serial.println("posicion 6");
myservo.write(posicion6[0]); Ejecute el sexto arreglo de
posiciones que se registró
anteriormente y espere por 5
segundos antes de ejecutar el
siguiente arreglo de posiciones
myservo2.write(posicion6[1]);
myservo3.write(posicion6[2]);
myservo4.write(posicion6[3]);
delay(5000);
if (digitalRead(10)== LOW) {
digitalWrite(7, HIGH);
delay(1000); Si el pulsador conectado al pin 10
se acciona, entonces encienda por
digitalWrite(7, LOW);
1 segundo el led conectado al pin 7
Serial.println("He salido de la secuencia"); y salga de la secuencia
break;
}
}
}
Con el suministro de energía alimentamos a los servos para que puedan moverse.
Los pulsadores los hemos programado para que funcionen de la siguiente manera:
El pulsador 1 (o el de la derecha) nos sirve para grabar y registrar las posiciones
de los servos en la memoria de la placa. En el puerto serie aparecerá el mensaje
“ángulos guardados” cuando se haya presionado correctamente el pulsador.
También se prenderá el led que hemos incluido, como señal de que el pulsador ha
sido presionado correctamente.
El pulsador 2 (o el del medio) nos sirve para ejecutar las posiciones que
anteriormente hemos registrado y guardado en la memoria, este pulsador no
funcionará si no se han registrado antes las 6 posiciones. En el puerto serie
aparecerá el mensaje “Ejecución de ángulos guardados activada” “estoy dentro de
la secuencia” cuando se haya presionado el pulsador. También se prenderá el led
que hemos incluido, como señal de que el pulsador ha sido presionado
correctamente.
El pulsador 3 (o el de la izquierda) nos sirve para detener la secuencia de la
ejecución de los ángulos registrados. Para que el pulsador 3 funcione debe
accionarse después de que los servos terminen de moverse y justo cuando vaya a
comenzar otra ejecución de ángulos. En el puerto serial aparecerá el mensaje "he
salido de la secuencia" cuando se haya presionado correctamente, además
también se prenderá el led que hemos incluido, como señal de que el pulsador ha
sido presionado correctamente.
Otras vistas: