Actividad 2:

 

Actividad 2: El servomotor

El objetivo de esta actividad es añadir el movimiento de los servomotores a la actividad anterior. En este caso, partiendo de los objetivos de la actividad anterior, cuando un led esté encendido, el servomotor tiene que estar en una posición. Cuando el led se apague, se debe cambiar de posición el servomotor.

Montaje eléctrico

Continuando con el esquema anterior, nos van a hacer falta adicionalmente los siguientes componentes para poder desarrollar esta actividad:

  • 2 Servomotores

A continuación, se puede ver una imagen en la que se aprecia el montaje propuesto:


 

 

 

El esquema de conexiones propuesto conectar los servomotores es el siguiente:

  • Pin digital 10 → Servomotor 1

  • Pin digital 11 → servomotor 2

Para poder usar un servomotor hay que hacer dos pasos previos, el primero de ellos es declarar
que se va a utilizar un objeto de tipo servo, lo segundo es indicar en que pin se va a conectar.
A partir de este punto se puede empezar a modificar la posición a la que apunta el servo
libremente. A continuación se muestra un código ejemplo:

Servo servoMotor1;
servoMotor1.attach(servo_1); // Indicamos en que pin se conectan el servomotor
servoMotor1.write(0); // definimos posición inicial
Una de las acciones que hay que realizar en esta actividad es alternar el estado de un led y de
un servomotor. Para ello se puede hacer uso de la siguiente expresión, la cual simplifica
enormemente el código a emplear para llevar a cabo la acción planteada.

digitalWrite(LedRojo, !digitalRead(LedRojo));
//Agregamos librerías
#include <Servo.h>

// Definimos a que pin se conecta cada componente
#define LedRojo 3
#define LedVerde 4
#define Pulsador_1 5
#define servo_1 10
#define servo_2 11
#define Pulsador_2 13

bool estadoVerde = false;
bool estadoRojo = false;

bool ultimoEstadoPulsador1 = HIGH;
bool ultimoEstadoPulsador2 = HIGH;

// Creamos los objetos
Servo servoMotor1;
Servo servoMotor2;

void setup() {
  pinMode(LedRojo, OUTPUT);
  pinMode(LedVerde, OUTPUT);
  pinMode(Pulsador_1, INPUT);
  pinMode(Pulsador_2, INPUT);

  // Indicamos en que pines se conectan los servomotores
  servoMotor1.attach(servo_1);
  servoMotor2.attach(servo_2);

  // definimos posicion inicial para servomotores
  servoMotor1.write(0);
  servoMotor2.write(180);
}

void loop() {
  // Leer el estado actual de los pulsadores
  bool estadoPulsador1 = digitalRead(Pulsador_1);
  bool estadoPulsador2 = digitalRead(Pulsador_2);

  // Detectar flanco descendente en Pulsador 1
  if (ultimoEstadoPulsador1 == HIGH && estadoPulsador1 == LOW) {
    estadoVerde = !estadoVerde;
    digitalWrite(LedVerde, estadoVerde);

    // subir o bajar servo dependiendo del estado del led
    if(digitalRead(LedVerde)==HIGH){
      servoMotor2.write(60);
    }
    else{
      servoMotor2.write(0);
    }
  }

  // Detectar flanco descendente en Pulsador 2
  if (ultimoEstadoPulsador2 == HIGH && estadoPulsador2 == LOW) {
    estadoRojo = !estadoRojo;
    digitalWrite(LedRojo, estadoRojo);

    // subir o bajar servo dependiendo del estado del led
    if(digitalRead(LedRojo)==HIGH){
      servoMotor1.write(90);
    }
    else{
      servoMotor1.write(180);
    }
  }

  // Actualizar los últimos estados de los pulsadores
  ultimoEstadoPulsador1 = estadoPulsador1;
  ultimoEstadoPulsador2 = estadoPulsador2;

  delay(100); // Pequeña pausa para evitar rebotes
}
Vistas
14 Número de vistas
14 Vistas de miembros
0 Vistas públicas
Acciones
0 Gustos
0 No me gusta
0 Comentarios
Compartir en redes sociales
Compartir enlace
Compartir por correo

Por favor iniciar sesión para compartir esto webpage por correo.