Académique Documents
Professionnel Documents
Culture Documents
Santa María”
Microcontroladores
& Microprocesadores
Arequipa – Perú
Informe 4
“Resolución de Problema
Planteado: Ascensor de 4 pisos
e Introducción al Uso de
Display LCD mediante
Arduino”
1. Objetivos
Analizar procedimientos que se asocien al desarrollo de ejemplos prácticos cotidianos o
industriales.
Aprender el correcto uso de la librería LiquidCrystal.h y las conexiones necesarias en el
Arduino para su funcionamiento.
2. Material y equipo
Computador.
Placa Arduino (Uno, Leonardo, Mega, Nano, etcétera).
Placa de Entrenamiento.
Software de simulación.
1
3. Procedimiento
Enunciado:
Se propone elaborar el código de un ascensor que cuente con acceso a 4 diferentes plantas. El
ascensor inicialmente debe estar en el piso 1. Para realizar su llamado se hace uso de un
pulsador para cada piso. Una vez que el ascensor llega a su destino se abren las puertas (la
llegada se debe anunciar con una alarma sonora, típica en ascensores reales) y permanecen
abiertas por un determinado tiempo, suficiente para el ingreso de la persona. Pasado el tiempo
establecido, las puertas se cierran. Adicional a esto, mediante un display de siete segmentos se
debe mostrar el piso donde se encuentra el ascensor. Finalmente, también se debe tener en
consideración que el ascensor sube y baja por acción de un motor eléctrico.
Consideraciones:
La apertura de la puerta se hará con un servomotor, pero para efectos prácticos se hará
uso de un led. A medida que el ángulo cambia, la intensidad luminosa del led también
varía haciendo notar su correcto funcionamiento. Cuando se abren las puertas, el led
ilumina poco; por el contrario, cuando se van cerrando, el led ilumina más.
Tomando en cuenta lo anterior, cuando el ascensor se mueve entre pisos, la puerta
debe permanecer cerrada, por ende, el led permanecerá encendido y con máxima
iluminación.
Para mostrar el piso en el que se ubica el ascensor, se hace uso de un display de siete
segmentos. Se hace uso de un BCD.
El motor que se encarga de subir y bajar el ascensor idealmente para que el giro se
haga en una u otra dirección haría uso de un puente H. Para simular este efecto,
mientras baja se encenderá un led, y mientras sube se encenderá otro. Cuando el
ascensor esta sin movimiento, ninguno de los leds se enciende.
La placa de entrenamiento solo poseía pulsadores normalmente cerrados, por ende el
código cambia pero el funcionamiento es el mismo.
Determinación de entradas y salidas:
Entradas:
o 4 pulsadores: para 4 pisos distintos. Necesarios para llamar al ascensor al piso
donde uno se ubica.
Salidas:
o Un motor eléctrico: Para simular su funcionamiento se usaron 2 leds. Un led para
la subida del ascensor (giro horario) y un led para la bajada del ascensor (giro
antihorario).
o Un servomotor: Para simular su funcionamiento se uso 1 led. Cuando se abre la
puerta (0 grados) el led pierde luminosidad. Cuando se cierra la puerta (360
grados) el led aumenta su luminosidad.
o Un display de siete segmentos: Para simular su funcionamiento se usaron 3 leds
(piso 1: led 1 encendido, piso 2: led 2 encendido, piso 3: led 1 y 2 encendidos,
piso 4: led 3 encendido). Al contar con un display y un BCD en la placa de
entrenamiento no es necesario simular el comportamiento sino simplemente usar
estos dispositivos.
o Un buzzer (piezoeléctrico): Al contar con un buzzer en la placa de entrenamiento
no es necesario simular el comportamiento sino simplemente usar este
dispositivo.
Código en Arduino:
#include <Servo.h>
Servo motor;
int Piso1 = 0;
int Piso2 = 0;
int Piso3 = 0;
int Piso4 = 0;
int SubirAscensor = 2;
int BajarAscensor = 3;
void setup() {
pinMode(SubirAscensor, OUTPUT);
pinMode(BajarAscensor, OUTPUT);
pinMode(PIEZO, OUTPUT);
Serial.begin(9600);
pinMode(PulsadorPiso4, INPUT);
pinMode(PulsadorPiso2, INPUT);
pinMode(PulsadorPiso3, INPUT);
pinMode(PulsadorPiso1, INPUT);
motor.attach(9);
void loop() {
Piso1 = digitalRead(PulsadorPiso1);
Piso2 = digitalRead(PulsadorPiso2);
Piso3 = digitalRead(PulsadorPiso3);
Piso4 = digitalRead(PulsadorPiso4);
numeroPlanta(i);
// Código piso 4
if (Piso4 == LOW) {
while (i < 4) {
i++;
ArribaUp();
numeroPlanta(i);
}
i = 4;
Puerta();
}
// Código piso 3
if (Piso3 == LOW) {
if (i > 3) {
while (i > 3) {
i--;
AbajoDown();
numeroPlanta(i);
}
}
// Código piso 2
if (Piso2 == LOW) {
if (i > 2) {
while (i > 2)
{
i--;
AbajoDown();
numeroPlanta(i);
}
i = 2;
}
if (i < 2) {
while (i < 2) {
i++;
ArribaUp();
numeroPlanta(i);
}
i = 2;
}
Puerta();
}
// Código piso 1
if (Piso1 == LOW) {
if (i > 1) {
while (i > 1)
{
i--;
AbajoDown();
numeroPlanta(i);
}
}
i = 1;
Puerta();
}
void setup() {
lcd.begin(16, 2);
lcd.print("Christian");
}
void loop() {
lcd.setCursor(0, 1);
}
void setup() {
lcd.begin(16, 2);
lcd.print("Christian Flores");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print("Luis Carpio");
}