Contenido del curso

Actividad 19

 

Apertura automática de una puerta

En esta actividad, vamos a utilizar un servomotor para simular el funcionamiento de un sistema de apertura y cierre automático de una puerta de garaje. El servomotor controlará el movimiento de la puerta, cambiando su posición entre completamente abierta y completamente cerrada en respuesta a un pulsador. Como añadido, indicaremos que la puerta está abierta o cerrada utilizando el LED Rojo (cerrada) y el LED verde (abierta).


Recuerda que la extensión de MentorBit para mBlock incluye el siguiente bloque con el que podemos
controlar un servomotor:


Recuerda que para incluir una librería previamente instalada en nuestro programa, debemos utilizar
la sentencia siguiente:

#include <MentorBitMotores.h>

En nuestro ejemplo incluiremos la librería MentorBitMotores, que facilita el uso de los diferentes motores
con MentorBit.
Recuerda que la librería de MentorBitMotores da acceso a la conexión de los servomotores empleando las
siguientes referencias:

- miObjetoMentorBitMotores.SERVOMOTOR_1
- miObjetoMentorBitMotores.SERVOMOTOR_2
Recuerda que la librería de MentorBitMotores da acceso a la siguiente función específica que inicializa
los puertos de los Servomotores:

miMentorBitMotores.inicializarServo(SERVOMOTOR);

Donde SERVOMOTOR es una de las dos referencias (SERVOMOTOR_1 o SERVOMOTOR_2) a los puertos para
Servomotores del MentorBit.
Recuerda que la librería de MentorBitMotores da acceso a la siguiente función específica que permite
controlar directamente la posición de los Servomotores:

miMentorBitMotores.moverServo(SERVOMOTOR, grados);

Donde SERVOMOTOR
es una de las dos referencias (SERVOMOTOR_1 o SERVOMOTOR_2) a los puertos para
Servomotores del MentorBit y grados es la posición exacta en grados que deseamos colocar el
Servomotor indicado.


Puedes descargar la solución pinchando en el siguiente icono:

 
#include <MentorBit.h>
#include <MentorBitMotores.h>

// Declaración de instancia de las clases
MentorBit miMentorBit;
MentorBitMotores miMentorBitMotores;

// Variable para indicar si la puerta está abierta o cerrada
bool la_puerta_esta_abierta = false;

// Inicialización del sketch
void setup() {

    // Configuramos los dos LEDs por defecto apagados
    digitalWrite(miMentorBit.LED_ROJO, HIGH);
    digitalWrite(miMentorBit.LED_VERDE, LOW);

    // Inicializamos el servomotor en el primer puerto
    miMentorBitMotores.inicializarServo(miMentorBitMotores.SERVOMOTOR_1);

}

// Bucle principal del sketch
void loop() {

    // Comprobamos que se ha pulsado el botón con la puerta cerrada
    if(!la_puerta_esta_abierta && (digitalRead(miMentorBit.PULSADOR_PULLDOWN_DIGITAL) == HIGH)) {

        // Indicando que la puerta está abierta
        digitalWrite(miMentorBit.LED_ROJO, LOW);
        digitalWrite(miMentorBit.LED_VERDE, HIGH);
        // Rotamos el servomotor a 90º
        miMentorBitMotores.moverServo(miMentorBitMotores.SERVOMOTOR_190);
        // Guardamos la marca que indica el estado de la puerta
        la_puerta_esta_abierta = true;
        // Esperamos un poco antes de continuar
        delay(500);

    // Comprobamos que se ha pulsado el botón con la puerta abierta
    } else if(la_puerta_esta_abierta && (digitalRead(miMentorBit.PULSADOR_PULLDOWN_DIGITAL) == HIGH)) {

        // Indicando que la puerta está cerrada
        digitalWrite(miMentorBit.LED_ROJO, HIGH);
        digitalWrite(miMentorBit.LED_VERDE, LOW);
        // Rotamos el servomotor a 0º
        miMentorBitMotores.moverServo(miMentorBitMotores.SERVOMOTOR_10);
        // Guardamos la marca que indica el estado de la puerta
        la_puerta_esta_abierta = false;
        // Esperamos un poco antes de continuar
        delay(500);

    }

}

Puedes descargar la solución sin utilizar nuestra librería en el siguiente icono:

Vistas
15 Número de vistas
15 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.