- Portada
- Ensamblaje mecánico
-
Montaje electrónico y Programación
-
Introducción al Montaje Electrónico
-
Resistencias y Ejemplos de cálculo
-
La protoboard y los LEDs
-
Actividad 1: LEDs del Puente
-
El pulsador
-
Actividad 2: Control de luces con Pulsadores
-
El Zumbador
-
Actividad 3: Aviso sonoro
-
Motores DC
-
Puente en H
-
Actividad 4: Mover el Puente Levadizo
-
El Servomotor
-
Actividad 5: Barrera de control de acceso
-
Sensor de proximidad por ultrasonidos
-
Actividad 6: Detección de obstáculos
-
- Para terminar
Actividad 5: Barrera de control de acceso
Actividad 5

Implementar barrera de acceso
En esta actividad, donde ya tenemos nuestro Puente Levadizo con los movimientos básicos implementados, vamos a incluir el uso de la barrera de control de acceso controlada con el servomotor. El material necesario para la actividad será:
1 x Servomotor.
El esquema de montaje es el siguiente:

Las conexiones del Arduino son las siguientes:
Servomotor: Pin 3.
Debemos programar el Arduino UNO para que el Puente, además de realizar las funciones que conseguimos implementar en el apartado anterior, sea capaz de bajar la barrera del Servomotor mientras el Puente Levadizo se encuentre levantado.
Pista 1: Librería necesaria
Recuerda que para poder utilizar el servomotor debes incluir la librería "Servo" al comienzo de tu programa de la siguiente manera:
#include <Servo.h>
Esta librería viene por defecto instalada con el Arduino IDE.
Pista 2: Crear el objeto de la librería
Cuando utilizamos una librería, normalmente debemos crear lo que se llama un Objeto para poder utilizar las funciones añadidas. Para este caso concreto, debemos crear un Objeto del tipo Servo que nos permita controlar en nuestro código el servomotor. La creación es como sigue:
Servo miObjeto;
donde "miObjeto" es el nombre que queremos dar a la variable que vamos a crear para acceder a todas las funciones de la librería.
La creación del objeto debe estar ubicada antes del Setup.
Servo miObjeto;
donde "miObjeto" es el nombre que queremos dar a la variable que vamos a crear para acceder a todas las funciones de la librería.
La creación del objeto debe estar ubicada antes del Setup.
Pista 3: Inicializar el servomotor
Recuerda que en el Setup de nuestro código debemos inicializar el servomotor utilizando la siguiente función:
donde "miObjetoServo" es el Objeto de tipo Servo que hemos creado previamente y "pin" es el número del Pin, que debe permitir PWM (en Arduino UNO son los pines que van acompañados del símbolo "~"), donde tenemos el
servomotor conectado.
miObjetoServo.attach(pin);
donde "miObjetoServo" es el Objeto de tipo Servo que hemos creado previamente y "pin" es el número del Pin, que debe permitir PWM (en Arduino UNO son los pines que van acompañados del símbolo "~"), donde tenemos el
servomotor conectado.
Pista 4: Controlar el servomotor
Recuerda que para mover el servomotor debemos utilizar la siguiente función:
donde "miObjetoServo" es el Objeto de tipo Servo que hemos creado previamente y "grados" es la posición en la que queremos colocar el servomotor en grados (entre 0º y 180º).
miObjetoServo.write(grados);
donde "miObjetoServo" es el Objeto de tipo Servo que hemos creado previamente y "grados" es la posición en la que queremos colocar el servomotor en grados (entre 0º y 180º).
Solución código C++
#include <Servo.h> // Librería para servomotor
int pinLedRojos = 13; // Pin de los LEDs Rojos
int pinLedVerdes = 12; // Pin de los LEDs Verdes
int pinPulsadorSubida = 5; // Pin del Pulsador de Arranque
int pinPulsadorBajada = 4; // Pin del Pulsador de Parada
int pinZumbador = 8; // Pin del Zumbador Pasivo
int pinVelocidadMotor = 9; // Pin para controlar la velocidad del Motor
int pinDireccionMotor1 = 10; // Pin para controlar Motor en una dirección
int pinDireccionMotor2 = 11; // Pin para controlar Motor en otra dirección
int pinServomotor = 3; // Pin para controlar el Servomotor
bool arriba = false; // Variable para guardar el estado del puente
// Creamos un objeto del tipo Servo
Servo servomotor;
void setup() {
// Configuramos como salida los pines donde están los LEDs
pinMode(pinLedRojos, OUTPUT);
pinMode(pinLedVerdes, OUTPUT);
// Configuramos como entrada los pines donde están los Pulsadores
pinMode(pinPulsadorSubida, INPUT);
pinMode(pinPulsadorBajada, INPUT);
// Configuramos como salida el pin donde se encuentra el Zumbador
pinMode(pinZumbador, OUTPUT);
// Configuramos como salida los pines relacionados con el Motor
pinMode(pinVelocidadMotor, OUTPUT);
pinMode(pinDireccionMotor1, OUTPUT);
pinMode(pinDireccionMotor2, OUTPUT);
// Asignamos el pin a nuestro objeto Servo
servomotor.attach(pinServomotor);
// Configuramos la posición inicial del Servo
servomotor.write(90);
}
void loop() {
// Comprobamos que se pulse la Subida y el puente esté abajo
if((digitalRead(pinPulsadorSubida) == HIGH) && (arriba == false)) {
// Bajamos la barrera del Servo
servomotor.write(180);
// Puedes ajustar los retardos si quieres que el puente suba o baje más
delay(600);
// Comenzamos el ascenso del puente
digitalWrite(pinDireccionMotor1, HIGH);
digitalWrite(pinDireccionMotor2, LOW);
analogWrite(pinVelocidadMotor, 255);
// Encendemos los LEDs Rojos y Apagamos los LEDs Verdes
digitalWrite(pinLedRojos, HIGH);
digitalWrite(pinLedVerdes, LOW);
// Generamos el tono con el Zumbador
// Frecuencia 1000 Hz, duración 500 ms
tone(pinZumbador, 1000, 500);
// Hacemos una pausa de 1 segundo
delay(600);
// Encendemos los LEDs Verdes y Apagamos los LEDs Rojos
digitalWrite(pinLedRojos, LOW);
digitalWrite(pinLedVerdes, HIGH);
// Hacemos una pausa de 1 segundo
delay(600);
// Encendemos los LEDs Rojos y Apagamos los LEDs Verdes
digitalWrite(pinLedRojos, HIGH);
digitalWrite(pinLedVerdes, LOW);
// Generamos el tono con el Zumbador
// Frecuencia 1000 Hz, duración 500 ms
tone(pinZumbador, 1000, 500);
// Hacemos una pausa de 1 segundo
delay(600);
// Encendemos los LEDs Verdes y Apagamos los LEDs Rojos
digitalWrite(pinLedRojos, LOW);
digitalWrite(pinLedVerdes, HIGH);
// Hacemos una pausa de 1 segundo
delay(600);
// Pausamos el ascenso del puente
digitalWrite(pinDireccionMotor1, LOW);
digitalWrite(pinDireccionMotor2, LOW);
analogWrite(pinVelocidadMotor, 0);
// Guardamos en la variable que estamos arriba
arriba = true;
}
// Comprobamos que se pulse la Bajada y el puente esté arriba
if((digitalRead(pinPulsadorBajada) == HIGH) && (arriba == true)) {
// Comenzamos el ascenso del puente
digitalWrite(pinDireccionMotor1, LOW);
digitalWrite(pinDireccionMotor2, HIGH);
analogWrite(pinVelocidadMotor, 255);
// Encendemos los LEDs Rojos y Apagamos los LEDs Verdes
digitalWrite(pinLedRojos, HIGH);
digitalWrite(pinLedVerdes, LOW);
// Generamos el tono con el Zumbador
// Frecuencia 1000 Hz, duración 500 ms
tone(pinZumbador, 1000, 500);
// Hacemos una pausa de 1 segundo
delay(400);
// Encendemos los LEDs Verdes y Apagamos los LEDs Rojos
digitalWrite(pinLedRojos, LOW);
digitalWrite(pinLedVerdes, HIGH);
// Hacemos una pausa de 1 segundo
delay(400);
// Encendemos los LEDs Rojos y Apagamos los LEDs Verdes
digitalWrite(pinLedRojos, HIGH);
digitalWrite(pinLedVerdes, LOW);
// Generamos el tono con el Zumbador
// Frecuencia 1000 Hz, duración 500 ms
tone(pinZumbador, 1000, 500);
// Hacemos una pausa de 1 segundo
delay(400);
// Encendemos los LEDs Verdes y Apagamos los LEDs Rojos
digitalWrite(pinLedRojos, LOW);
digitalWrite(pinLedVerdes, HIGH);
// Hacemos una pausa de 1 segundo
delay(400);
// Pausamos el ascenso del puente
digitalWrite(pinDireccionMotor1, LOW);
digitalWrite(pinDireccionMotor2, LOW);
analogWrite(pinVelocidadMotor, 0);
// Subimos la barrera del Servo
servomotor.write(90);
// Guardamos en la variable que estamos arriba
arriba = false;
}
}
| Vistas | |
|---|---|
| 1 | Número de vistas |
| 1 | Vistas de miembros |
| 0 | Vistas públicas |
Compartir por correo
Por favor iniciar sesión para compartir esto webpage por correo.