- Portada
- Fundamentos de MentorBit
- Alimentación de circuitos y dispositivos
-
Programación y ejercicios básicos
-
Introducción
-
Driver necesario para programar la placa
-
Descripción de mBlock
-
Descripción de IDE Arduino
-
Estructura de un programa
-
Variables
-
Tipos de datos
-
Operadores
-
Sintaxis
-
Principales Bloques
-
Principales funciones C/C++
-
Monitor Serial
-
Actividad 1: Mi primer programa
-
Estructuras de control
-
Actividad 2: Bucle for
-
Actividad 3: Bucle while
-
Actividad 4: Condicional if y else
-
Actividad 5: Sentencia Switch
-
Arrays
-
Actividad 6: Los Arrays
-
Recibir por Serie
-
Actividad 7: Recepción por bus serial
-
Funciones
-
Funciones en Bloques
-
Funciones en C/C++
-
Actividad 8: Mis primeras funciones
-
Clases en C/C++
-
Actividad 9: Mi primera Clase
-
Actividad 10: Mi propia Calculadora
-
-
Programación y ejercicios con hardware
-
Introducción a MentorBit
-
LEDs
-
Actividad 11: LEDs de colores
-
El LED RGB
-
Actividad 12: LED RGB
-
El pulsador
-
Actividad 13: Pulsador en Pull Down
-
Actividad 14: Pulsador en Pull Up
-
El Potenciómetro
-
Actividad 15: Potenciómetro
-
El Zumbador
-
Actividad 16: Zumbador Pasivo
-
La Fotorresistencia
-
Actividad 17: LDR
-
Sensor de temperatura DS18B20
-
Actividad 18: DS18B20
-
El Servomotor
-
Actividad 19: Servomotor
-
Motores Corriente Continua
-
Puente en H
-
Actividad 20: Motor DC
-
Introducción a Motores paso a paso
-
Actividad 21: Motor paso a paso
-
Displays 7 Segmentos
-
Actividad 22: Display 7 Segmentos
-
Pantallas LCD
-
Actividad 23: Pantalla LCD
-
Actividad 24: Pantalla LCD
-
Pantallas OLED
-
Actividad 25: Pantalla OLED
-
Actividad 26: Pantalla OLED
-
Reloj en Tiempo Real (RTC)
-
Actividad 27: RTC
-
Tarjeta micro SD
-
Actividad 28: Micro SD
-
Actividad 29: Micro SD & RTC
-
Actividad 30: Micro SD & RTC
-
Puertos para Módulos MentorBit
-
Puertos de Comunicaciones
-
Puertos Genéricos
-
- Problemas Adicionales
- Proyectos Finales
Actividad 19: Servomotor
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).

Pista 1 (Bloques): Mover un servomotor
Recuerda que la extensión de MentorBit para mBlock incluye el siguiente bloque con el que podemos
controlar un servomotor:

controlar un servomotor:

Pista 1 (C/C++): Incluir librería de motores
Recuerda que para incluir una librería previamente instalada en nuestro programa, debemos utilizar
la sentencia siguiente:
En nuestro ejemplo incluiremos la librería MentorBitMotores, que facilita el uso de los diferentes motores
con MentorBit.
la sentencia siguiente:
#include <MentorBitMotores.h>
En nuestro ejemplo incluiremos la librería MentorBitMotores, que facilita el uso de los diferentes motores
con MentorBit.
Pista 2 (C/C++): Conexiones de los Servomotores
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
siguientes referencias:
- miObjetoMentorBitMotores.SERVOMOTOR_1
- miObjetoMentorBitMotores.SERVOMOTOR_2
Pista 3 (C/C++): Inicializar los Servomotores
Recuerda que la librería de MentorBitMotores da acceso a la siguiente función específica que inicializa
los puertos de los Servomotores:
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.
Donde SERVOMOTOR es una de las dos referencias (SERVOMOTOR_1 o SERVOMOTOR_2) a los puertos para
Servomotores del MentorBit.
Pista 4 (C/C++): Control de los Servomotores
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:
Servomotor indicado.
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 Donde SERVOMOTOR es una de las dos referencias (SERVOMOTOR_1 o SERVOMOTOR_2) a los puertos para
Servomotor indicado.
Solución (C/C++)
#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_1, 90);
// 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_1, 0);
// 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 por correo
Por favor iniciar sesión para compartir esto webpage por correo.
