Está en la página 1de 8

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ

CENTRO DE TECNOLOGÍAS AVANZADAS DE MANUFACTURA

FUNDAMENTOS DE PROGRAMACIÓN DE MICROCONTROLADORES


Y ARDUINO
Examen Final
(Julio 2019)

Indicaciones generales
 Duración: 6:00 P.M del 08/11/2019 – 6.00 P.M 12/11/2019
 Materiales o equipos a utilizar: Hojas de datos, Arduino IDE y Navegador Web
 El examen consta de dos partes, una teórica y otra práctica. La parte teórica
consta de preguntas para resolver empleando los conceptos desarrollados en
clase y aplicaciones con diferentes módulos o componentes electronicos; esta
parte tiene una calificación de 16 puntos. La segunda parte se realizará en la
computadora y los programas desarrollados deberán ser nombrados de la
siguiente forma ApellidoNombre_Px, en donde x debe ser reemplazado por el
número de pregunta desarrollada. Finalmente se deberán enviar estos
programas por correo a afsegovia@pucp.pe hasta las 6:00 P.M del martes 12 de
Noviembre del 2019.

Nombre:

Primera Parte – 15 Puntos


Pregunta 1 – Conceptos generales – 5 Puntos
a) Se le pide seleccionar 5 de las siguientes 10 preguntas y responderlas a partir de los
conceptos vistos en clases. Cada pregunta respondida correctamente tiene un valor de
1 Punto.

1. Escriba las sentencias que configuran el puerto PB3 como salida digital con nivel lógico
HIGH
DDRB |=0b00001000 PORTB |=0b00001000
2. Escriba las sentencias que configuran el puerto PD2 como entrada digital con
resistencia Pull-Up activada.
DDRD &=0b11111011 PIND |=0b00000100
3. Escriba las sentencias que configuran los puertos PD3, PD4 y PD6 como salidas
digitales
DDRD |=0b01011000
4. Si la resolución del módulo ADC de un microcontrolador es de 8 bits, determine el
intervalo de valores digitales que se obtienen en la lectura de un dato analógico
5. La frecuencia de muestreo un microcontrolador es de 10 Khz, ¿Es posible procesar una
señal de audio de 15 Khz? Explique por que
Si el muestreo es de 10KHz significa que solo puede realizar 10,000 lecturas por segundo
y si la señal es de 15KHz (15,000 muestras) hay una perdida de muestreo, por lo que la
señal de salida fallaría o se dispararía sola.
6. Para un microcontrolador con 8 Mhz de ciclo de reloj y con un preescalador n = 1,
determine la frecuencia de la onda PWM.
7. Determine el valor a escribir en el registro OCR0A para emitir una PWM que simule un
voltaje analógico de 3.5 V
8. Revise la librería Stepper instalada en la carpeta de instalación de Arduino, y escriba la
sentencia que crea un objeto con los atributos requeridos por la función constructor.
9. Determine el valor del preescalador para obtener una obtener una onda PWM con una
frecuencia de 7.8 Khz a partir de una señal de reloj de 16 Mhz.
10. Escriba las sentencias que crean un puerto Serial en los puertos PD4 como Rx y PD5
como Tx.

SoftwareSerial Gustavo(4,5)
Pregunta 2 – Puertos E/S del ATMEGA328P – 4 Puntos

a) Los microcontroladores manejan sus diferentes funciones y módulos a partir de


los valores lógicos que estos poseen en sus registros. Los registros son circuitos
lógicos que permiten almacenar información en forma binaria. El
microcontrolador ATMEGA328P (el cual se encuentra integrado en Arduino UNO
y Arduino NANO) cuenta con registros de configuración de 8 bits. Se tienen los
siguientes registros pertenecientes al microcontrolador ATMEGA328P, escriba
en forma binaria el valor final que se obtiene luego de las operaciones
realizadas: 1 Punto

R1 = 0b01011100; //Valor inicial del registro


R1 |= 0b00000011; //Operación 1
R1 &= 0b11110011; //Operación 2
R1= 0b01010011; //Resultado luego de
operación 1 y 2

R2 = 0b00001100;
R2 |= 0b00101100;
R2 &= 0b11111011;
R2 = 0b00101000;

b) Se tienen los registros R3 y R4 con valores inicialmente desconocidos, ya que


anteriormente han sido configurados por un compañero de la universidad; sin
embargo, usted requiere configurarlos sin modificar el trabajo realizado por su
compañero. Escriba las sentencias para: 1 Punto

Colocar a 1 los bit’s 0 Y 6 del registro R3 : |=01000001


Colocar a 0 los bit’s 1 y 3 del registro R3 : &=11110101
Colocar a 1 los bit’s 0 Y 2 del registro R4 : |=00000101
Colocar a 0 los bit’s 4,5 y 7 del registro R4 : &=01001111
c) Reconozca la configuración realizada en el siguiente ejemplo de código: 1 Punto
Puerto configurado Entrada o salida Nivel lógico/Resistencia
(PXn) Pull-up
PC1 SALIDA 0
PC2 SALIDA 0
PC3 ENTRADA 0

d) Escribir el código correspondiente para realizar la siguiente configuración de


puertos. Configurar el puerto PB3, PB4, PB5, PD6 Y PD7 como usa salida digital
con un valor lógico inicial de 0 V. Configurar el puerto PC1, PC2 y PD4 como
entradas digitales con la resistencia Pull-Up activada para el puerto PD4; y
desactivada para PC1 y PC2 1 Punto

DDRB|=00111000;
DDRD|=11000000;
DDRD&=11101111;
DDRC&=11111001;
PORTB&=11000111;
PORTD&=00111111;
PINC&=11111001;
PIND|=00010000;
Pregunta 3 – Temporizadores y ondas PWM – 4 Puntos

a) Las ondas PWM tratan de simular la emisión de voltajes analógicos en un


Arduino; para esto hacen uso de un ciclo de trabajo que va desde 0 % a 100 %.
Este ciclo de trabajo es configurado en el registro OCRxn. Configure el registro
OCRxn para los siguientes casos. Dibuje las ondas PWM asumiendo un periodo
de 10 s e indique el tiempo en alta y el valor a escribir en el registro OCRxn.
Asumir un temporizador de 8 bits en modo de Fast PWM. – 2 Puntos

1. Se desea un voltaje analógico a la salida de 2 V

OCRxn : 102
Tiempo en alta : 4s

2. Se desea un voltaje analógico a la salida de 2.5 V

OCRxn : 127
Tiempo en alta : 5s

3. Se desea un voltaje analógico de 4V

OCRxn : 204
Tiempo en alta : 8s
b) Las ondas PWM se modifican a partir de los registros TCCRxA y
TCCRxB, donde x representa el número de temporizador a utilizar. –
2 Puntos

1. Utilizar el pin D6 de Arduino NANO, reconocer el temporizador y


canal al cual se encuentra conectado

Temporizador = TCCRxA |=10000011


Canal =A

2. Seleccionar el modo de onda a utilizar y el modo de Fast PWM.

COM01=1
COM02=0
WGM02=1
WGM01=1
WGM00=1

TCCRxA = 10000011

3. Seleccionar un preescalador igual a 256 y configurar el registro


TCCRxB

CS00 =0
CS01 =0
CS02 =1

TCCRxB = 00001100

4. Para un ciclo de trabajo de 20% escribir el valor correspondiente en


el registro OCRxn

OCR0A = 51
Pregunta 4 – Utilización de librerías – 2 Puntos

a) Describa la accion que realiza cada una de las siguientes sentencias: - 2 Puntos

SoftwareSerial Puerto1(5,4): convierte el puerto digital 5 en Rx (recepcion) y


el 4 en Tx(transmision).

Serial.begin(9600): inicia la comunicación serial y configura el numero de


baudios a utilizar.

Serial.print(“Arduino”): imprime la palabra “Arduino” como primera sentencia


en el monitor serial, podría ser cualquier palabra.

Dato = Serial.read(): lee los datos generados por la comunicación serial y


los almacena para usarlos.
Segunda Parte – 5 Puntos
Pregunta 1 – Comunicación Serial y utilización de librerías – 5 Puntos

a) El sensor ultrasonido cuenta con diferentes modos de


programación: utilizando las sentencias nativas de arduino,
utilizando registros o instanciando una librería.

1.-Descargar la librería desarrollada por “gamegine”- 1 Punto

2. Al interior de esta librería se encuentra el archivo .h en donde se tiene lo


siguiente:

Inicializar la comunicación serial con el ordenador a una velocidad de 9600


baudios. – 1 Punto
Crear el objeto de la clase HCSR04 con Trig = 16 y Echo = 17 – 1 Punto
3. Codificar un programa en donde se realice una lectura del sensor cada
segundo y esta sea mostrada en el monitor serial en el siguiente formato: - 2
Puntos
Distancia: <distancia>
Donde <distancia> toma el valor leído por el sensor.

También podría gustarte