Está en la página 1de 28

INTRODUCCIÓN A MICROCONTROLADORES

INTEGRANTES PROFESOR
______________________________________________. __________________________________________.
______________________________________________. GRUPO: _________________________________.
______________________________________________. FECHA DE ENTREGA: _____________________.

OBJETIVOS
1. Identificar las características de una señal digital.
2. Distinguir entre una señal digital y una señal análoga.
3. Identificar un microcontrolador.
4. Identificar la función de configuración de parámetros
5. Identificar la función de ejecución del programa
6. Reproducir algunas instrucciones básicas de programación
7. Identificar algunas aplicaciones de entradas y salidas digitales
EQUIPOS Y COMPONENTES NECESARIOS
EQUIPOS Y ELEMENTOS SUMINISTRADOS POR EL LABORATORIO:
1 Computador portátil
1 Arduino Mega2560 + cable de conexión PC (cable USB tipo AB) o Arduino Uno.
1 Multímetro Digital
ELEMENTOS QUE DEBEN TRAER LOS ESTUDIANTES:
1 Tablero de conexiones (protoboard) 1 Cortafríos
1 Par de pinzas. 1 Pelacables
1 LED 1 Resistor de 10 kΩ
4 Resistores de 270 Ω 1 Pulsador para protoboard
LED RGB (De preferencia de ánodo común de cuatro terminales. Cátodo común también podría
1
usarse)
1 20 cm de cable UTP (cables o “cortos” para conexiones en protoboard)

1
TRABAJO PREVIO PARA LA REALIZACIÓN DE LA PRÁCTICA EN FORMA REMOTA
I. ACCESO A LA PLATAFORMA VIRTUAL DE EMULACIÓN
Antes de iniciar la práctica, es necesario que el estudiante ingrese al enlace
https://www.tinkercad.com/learn/circuits, pulse con el ratón el botón “Comenzar a usar Tinkercad” y cree
una cuenta. El sistema da la opción de vincular cuentas existentes de Facebook, Google, Yahoo, entre otros,
el estudiante es libre de escoger la manera de vinculación. Tal y como se muestra en la Figura 1.

Figura 1. Pantalla de ingreso a la plataforma y registro .

Una vez haya ingresado, ubicar en la parte izquierda de la pantalla la barra de opciones y seleccionar
“Circuits” y escoger la opción “Crear nuevo circuito” a la derecha del menú. Tal y como se muestra en la
Figura 2.

Figura 2. Menú de opciones.

2
DESARROLLO DE LA PRÁCTICA
II. INTRODUCCIÓN A MICROCONTROLADORES
Un microcontrolador es un circuito embebido (sistema de computación que incluye componentes
adicionales al microprocesador), el cual reúne en un encapsulado varios componentes electrónicos, así
como los caminos necesarios para interconectar estos componentes. El componente principal de un
microcontrolador es un microprocesador, el cuál comúnmente se referencia como CPU (unidad central
de procesamiento).
Para que un procesador pueda cumplir su función de procesamiento requiere de memorias (de
programa y de datos), de buses (interconexiones), de un reloj y de un circuito de alimentación eléctrica.
Además de embeber (Dicho de una cosa: Contener o encerrar dentro de sí a otra1) estos elementos, el
microcontrolador también incluye otros componentes electrónicos, que tienen funciones específicas,
que le agregan versatilidad y flexibilidad al procesador.
Estos componentes son los periféricos. Los periféricos más comunes son: puertos digitales de
Entrada/Salida (I/O), temporizadores, contadores, conversores análogo-digital (ADC) y digital-análogo
(DAC) e interfaces de comunicación.
Existen varios tipos de microcontroladores en el mercado, uno de ellos es el ATMEGA256 de Atmel, el
cual puede apreciarse en la Error: Reference source not found.
Este microcontrolador en particular tiene 100 pines (terminales), cada uno cumple con una función
definida; entre estas funciones están: la alimentación, el nivel de referencia (tierra), entradas y salidas
digitales, osciladores, conversión análoga digital, PWM, comunicación serial, etc.
Cada fabricante de microcontroladores adiciona otros periféricos u otras funcionalidades concebidas
para ciertas aplicaciones, con el fin de promover y facilitar el uso de sus microcontroladores en áreas
específicas de la Electrónica.
Este microcontrolador es el que usa la plataforma Arduino Mega, que es de muy fácil uso y está pensada
para personas que no tengan conocimiento técnico (aficionados, diseñadores, artistas) pero que desean
realizar diferentes desarrollos o proyectos.
Por lo tanto, para la introducción a los microcontroladores se utilizará el sistema de desarrollo Arduino
Mega, que facilita la realización y comprensión de algunas operaciones básicas pero que posee un
lenguaje de programación limitado y que debido a su facilidad de programación, nos permite acceder a
varias funciones necesarias en el desarrollo de proyectos más complejos o más eficientes, las cuales
serán requeridas en el proceso de diseño durante su evolución como estudiante de ingeniería
electrónica y posteriormente como ingeniero.

1
Tomado de la RAE.es

3
Figura 3. Configuración de pines del microcontrolador ATmega256. (Tomado de
https://www.arduino.cc/en/Hacking/PinMapping2560)

1. Lo primero que se hará será identificar los elementos que conforman la tarjeta Arduino MEGA o
Arduino UNO, las cuales han sido pedidas dentro del equipo necesario para realizar esta práctica, que se
muestra en la Figura 4.

4
9

5 2&4
6
9 8

1
7 3
Figura 4. Tarjetas Arduino Mega 2560 y Arduino UNO

5
Preguntas de reflexión 1. Reconocimiento de las partes de la tarjeta.
A partir de los números indicados en los recuadros de la Figura 4, identifique las siguientes partes de la
tarjeta:
Número del
Parte
recuadro
Conector de alimentación

Conector puerto USB al computador

Botón de reinicio (reset)


Salidas digitales con opción PWM
(Pulse Width Modulation o Modulación
por ancho de pulso)
LED de indicación de encendido (ON)

Entradas análogas

Entrada/salida digital

Microprocesador ATmega256 o

Cristal del oscilador de 16 MHz

Preguntas de reflexión 2. Reconocimiento de la tarjeta


¿Logra identificar alguna otra parte dentro de la tarjeta?
¿Puede identificar los conectores de tierra (GND) en la tarjeta?

6
III. PROGRAMACION DEL MICROCONTROLADOR
2. Busque en el computador el logo del software (No abra aún el programa), mostrado en la Figura 5, que
permite escribir el código para programar el Arduino IDE. Si no encuentra este logo, puede descargarlo
e instalarlo desde: https://www.arduino.cc/en/Main/Software# y mientras se instala puede proceder
con la realización de la guía.

Figura 5. Logo de Arduino IDE


3. Antes de ejecutar el programa, se debe conectar el Arduino a un puerto USB del computador mediante
al cable USB, como el mostrado en la Figura 6.

Figura 6. Cable USB.


4. Al conectar la tarjeta, el LED de indicación de encendido (ON) debe encenderse. De no ser así, consulte
con su profesor.
5. Una vez conectada la tarjeta al computador, se debe comprobar a qué puerto de comunicación (COM)
está conectada la tarjeta del Arduino.
6. Para esta comprobación se abre el Panel de control y se selecciona Hardware, tal y como se muestra en
la Figura 7.

Figura 7. Pantalla del Panel de control

7
7. De allí se selecciona la opción de Administración de dispositivos del menú Dispositivos e impresoras, tal
y como se muestra en la Figura 8.

Figura 8. Acceso al Administrador de dispositivos


8. Al abrir la ventana de administración de dispositivos mostrado en la Figura 9, se puede observar en la
sección Puertos (COM y LPT) que en este ejemplo el Arduino MEGA 2560, está en el puerto COM3 del
computador.

Figura 9. Ventana de Administración de dispositivos.

8
Preguntas de reflexión 3. Conexión del Arduino al computador
¿A qué puerto de su computador está conectada la tarjeta del microcontrolador?
9. Ahora puede ejecutarse el programa con el cual se abre el ambiente de programación, Arduino IDE, del
microcontrolador, el cual es el logo mostrado en la Figura 5.
10. Al ejecutar este programa aparece una ventana como la mostrada en la Figura 10.
11. La primera acción que debe realizarse es configurar este programa para que pueda comunicarse con la
tarjeta del microcontrolador. Para ello se debe seleccionar la tarjeta adecuada que se usará.

Figura 10. Ventana de inicio de Arduino IDE

12. Se elige del menú superior la opción Herramientas (Tools) y luego de la lista desplegada se selecciona la
opción Placa (Board), con lo cual se despliega de nuevo una lista con las tarjetas disponibles y se elige la
tarjeta Arduino Mega 2560/Arduino Uno, tal y como se muestra en la Figura 11.
Herramientas → Placa → Arduino Mega 2560 ó Herramientas → Placa → Arduino Uno

9
Figura 11. Selección de la tarjeta del microcontrolador.

13. Una vez ha sido seleccionada la tarjeta con la cual se va a trabajar, se debe seleccionar el puerto con el
cual se comunica la tarjeta con el computador. Para ello, se elige del menú superior la opción
Herramientas (Tools) y luego de la lista desplegada se selecciona la opción Puerto (Port) y allí se
selecciona el puerto observado en la Figura 9. En nuestro ejemplo fue el COM3.
Herramientas → Puerto → COM3.

14. Luego de haber elegido la placa y seleccionado el puerto de comunicación, de tal forma que pueda
efectuarse la comunicación de forma adecuada, entre el computador y la tarjeta, se puede proceder a
escribir el programa que se quiere ejecutar desde el microcontrolador.
15. Como se observa en la Figura 10, en la ventana que se desplegó cuando se abrió el entorno de
programación, se tiene el siguiente texto:
void setup() {
// put your setup code here, to run once:
}

void loop() {
// put your main code here, to run repeatedly:
}

16. Este texto está compuesto por dos funciones: setup y loop, que deben estar en cualquier código que
desee programarse en este microcontrolador. El código de estas funciones debe escribirse dentro de las
llaves ({ }). El texto void que está al inicio de cada función, significa que estas funciones se ejecutan,
pero que no devuelven ningún parámetro (valor de regreso).
17. En la función setup, se escribe el código que se realizará solamente una vez, por ejemplo: iniciación de
variables, definición de parámetros, definición de configuración de pines.

10
18. En la función loop, se escribe el código que se estará ejecutando continuamente, de tal forma, que
mientras el microcontrolador esté prendido el programa estaría en funcionamiento permanentemente.
NOTA: Observe que las palabras propias del lenguaje de programación se identifican con un color
diferente al del texto.

11
IV. SEÑALES DIGITALES DE ENTRADA Y DE SALIDA.
Como se mencionó anteriormente, los terminales (pines) digitales, pueden configurarse como entradas o
salidas. El primer proyecto de introducción a un lenguaje de programación se le suele llamar “Hola mundo”.
En nuestro caso, este primer proyecto deberá encender y apagar un LED.

Preguntas de reflexión 4. LED


¿Qué significa la sigla LED?
¿Cuáles son las diferencias que hay entre un LED y una bombilla?
¿Cuál es la diferencia entre un LED y un diodo?
19. Se debe realizar el montaje mostrado en la Figura 12. El pin o terminal digital de salida será el número
53 en el Arduino Mega (pin 12 en el Arduino Uno) y la resistencia en serie a conectar es de 270 Ω.

Figura 12. Montaje para un LED intermitente en el Arduino Mega.

20. La conexión y configuración de la tarjeta del microcontrolador con el tablero de conexiones ( protobard)
deben ser así:

Pines del Arduino Mega 2560 o


Configuración Componente
Pines del Arduino Uno.

53 o 12 Salida digital Terminal 2 del led (ánodo +)

GND Tierra Terminal 1 del led (cátodo -)

21. La forma de identificar los terminales de un LED correctamente se muestra en la Figura 13.
22. Al tomar el LED, se puede palpar una parte plana, este será el lado del terminal del cátodo (negativo) y
la parte redonda será donde se encuentra el terminal del ánodo (positivo).
23. Como ya se ha mencionado, se debe configurar el pin 53 (o pin 12) de la tarjeta del microcontrolador,
como una salida digital, la cual solo tiene dos posibles valores “uno lógico” (1) y “cero lógico” (0).

12
Preguntas de reflexión 5. Salida digital
¿Qué significa en valor de la señal de salida un “uno lógico” (1) o un “cero lógico” (0)?
¿Cómo podría conocerse a qué valor de voltaje equivaldría un “uno lógico” (1) en este circuito?
¿Cómo podría conocerse a qué valor de voltaje equivaldría un “cero lógico” (0) en este circuito?
¿Cuándo la señal sea un “uno lógico” (1), el LED se encenderá o se apagará?
¿Cuál es la razón por la cual se debe conectar una resistencia en serie con el diodo?

Figura 13. Identificación de los terminales de un LED.


(Imagen tomada de:
http://www.mcmajan.com/mcmajanwpr/wp-content/uploads/2012/08/electronics_led_diagram.png )

24. Una vez terminada la conexión de los componentes (hardware), se puede proceder a la realización del
código (software) para que se ejecute la acción requerida.
25. En el programa debe configurarse como salida el pin53 (o pin12) de la tarjeta, para esto en la función
setup, debe escribirse lo siguiente: pinMode(53, OUTPUT); // En el Arduino Mega
pinMode(12, OUTPUT); // En el Arduino Uno

Donde “pinMode” es el comando que configura el pin. Dentro del paréntesis, debe ir el nombre del pin
(número), luego separado por una coma “,” el valor de configuración, que puede ser salida (OUTPUT) o
entrada (IN).

NOTA: Observe que el comando termina con un “punto y coma” (;), el cual le indica al programa que
este es el fin del comando. De llegar a omitirse, se generará un error de formato de código
(compilación).

26. Si se desea comentar esta instrucción puede escribirse: // Configura el pin digital 53 (o 12) como salida

Los comentarios dentro del texto se escriben después de doble barra inclinada “//”, por esta razón si se
escribe alguna palabra propia del lenguaje después de esta notación, esta NO cambiará de color, porque
es tomada como texto y no como comando.
27. Se sugiere ponerle título al código, este puede ser, por ejemplo:
// Hola mundo. Encender y apagar un LED

13
28. Ya realizada la configuración del pin53 (o pin12) como salida digital, dentro de la función setup (solo se
realiza esta configuración una sola vez en el programa), se debe escribir el código necesario para que la
salida entregue los valores necesarios para que se encienda y se apague el LED. Como esta acción se
repetirá indefinidamente mientras se ejecute el programa, los comandos deben escribirse dentro de la
función loop.
29. Para esto se define que la salida del pin53 (o pin12) será alta (HIGH), lo que equivale a un “uno lógico”
(1). Para tal fin se debe escribir lo siguiente: digitalWrite(53, HIGH); // Mega
digitalWrite(12, HIGH); // Uno
Donde “digitalWrite” es el comando que escribe el valor en el pin (define el valor de salida digital el pin).
Dentro del paréntesis, debe ir el nombre del pin (número), luego separado por una coma “,” el valor a
escribir, que puede ser alto (HIGH) o bajo (LOW).
30. Si se desea comentar esta instrucción puede escribirse: // Pone un valor alto en el
pin53.
// Pone un valor alto en el pin12.
31. Para que se pueda visualizar el encendido del LED, se debe dejar un tiempo el pin53 (o pin12) en alto,
por esta razón, se debe escribir la siguiente instrucción: delay(1000);
Donde “delay” es el comando que define el tiempo de espera para realizar la siguiente acción. Dentro
del paréntesis, debe ir el valor (en milisegundos) del tiempo a esperar.
32. Si se desea comentar esta instrucción puede escribirse: // Tiempo de espera en ms.
33. Ahora el LED debe apagarse, para tal fin se pone el pin53 (o pin12) en bajo (cero lógico), para esto se
debe escribir la siguiente instrucción: digitalWrite(53, LOW); // Mega
digitalWrite(12, LOW); // Uno
34. Si se desea comentar esta instrucción puede escribirse: // Pone un valor bajo en el pin53.
// Pone un valor bajo en el pin12.
35. Finalmente se debe esperar un tiempo para poder visualizar adecuadamente el LED apagado. Para esto
se debe escribir la siguiente instrucción: delay(500);
36. De esta forma el texto escrito debe ser similar al que se muestra a continuación para el Arduino Mega:

// Hola mundo. Encender y apagar un LED

void setup() {
// put your setup code here, to run once:
pinMode(53, OUTPUT);
// Configura el pin digital 53 como salida
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(53, HIGH); // Pone un valor alto en el pin53.
delay(1000); // Tiempo de espera en ms.
digitalWrite(53, LOW); // Pone un valor bajo en el pin53.
delay(500); // Tiempo de espera en ms.
}

14
Y este para el Arduino Uno.
// Hola mundo. Encender y apagar un LED
void setup() {
// put your setup code here, to run once:
pinMode(12, OUTPUT);
// Configura el pin digital 12 como salida
}
 
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(12, HIGH);// Pone un valor alto en el pin12.
delay(1000); // Tiempo de espera en ms.
digitalWrite(12, LOW); // Pone un valor bajo en el pin12.
delay(500); // Tiempo de espera en ms.
}

37. Una vez se termine de realizar esta última instrucción “delay(500);” concluye la función loop en
su recorrido, pero vuelve a iniciar de nuevo, ejecutando el comando “digitalWrite(53,
HIGH);” ó “digitalWrite(12, HIGH);” y así se repite el ciclo continuamente.
38. Al haber finalizado el código, se debe realizar una verificación del mismo. Para esto se selecciona el
símbolo de aprobación, comprobación, revisado o chequeado (“chulo” o “palomita”) que realiza la
verificación, tal y como se muestra en la Figura 14.

15
Figura 14. Selección para la verificación del código

La primera vez que se realiza la verificación, el programa pedirá que se almacene el archivo con algún
nombre. Seleccione el nombre del archivo y la carpeta donde se guardará. Se sugiere que el nombre sea
indicativo de la función del programa y para evitar que se confunda con otros programas similares de
otras personas, podría incluirse el número del grupo de laboratorio en el nombre del autor.
39. Este proceso de verificación tomará algún tiempo y al finalizar, el resultado de la verificación se
mostrará en la franja negra debajo del código, tal y como se muestra en la Figura 14.
40. Si se presenta algún error, se debe verificar la escritura del código, de no aparecer ningún error, este
programa ya estará listo para cargarse al microcontrolador.

41. Para cargar el programa al microcontrolador, se selecciona la flecha que indica hacia la derecha, del
menú superior, tal y como se muestra en la Figura 15.

Figura 15. Comando para cargar el programa al microcontrolador

42. En este instante se debería observar el parpadeo del LED. Si no es así, verifique la conexión del LED en el
circuito. Consulte a su profesor.

16
Preguntas de reflexión 6. Salida digital
¿Cómo lograría que el LED parpadee con mayor velocidad?

43. Modifique el código de tal forma que aumente la frecuencia de parpadeo del LED.

17
V. SEÑALES DIGITALES DE ENTRADA Y DE SALIDA.

44. A continuación, se utilizará un LED RGB (Red-Green-Blue), que permite emitir luz roja, azul o verde,
según el usuario decida. Esta funcionalidad permite realizar diferentes combinaciones de intensidad de
estos colores, para así dar a nuestro sentido de la vista la percepción de diferentes colores más allá que
estos tres mencionados. Esto se logra mediante la combinación aditiva de colores.
45. La forma correcta para la conexión del led RGB se presenta en la Figura 16.

1: Rojo
2: Punto común (Terminal más larga)
3: Verde
4: Azul

2 3
4

Figura 16. Lectura de las terminales de un led RGB y composición de colores básicos

46. Los LED RGB pueden ser de ánodo común (los LED rojo, verde y azul tienen conectados su ánodo entre
ellos) tal y como se muestra en la Figura 17. También está la configuración de LED RGB de cátodo común
(todos los LED tiene conectados su cátodo a un punto en común, tal y como se muestra en la Figura 17.

Figura 17. Diagrama esquemático un de LED RGB de ánodo común y un de LED RGB de cátodo común

Ya que ambas configuraciones implican diferente tipo de conexión, lo primero que debería hacerse
antes de proceder a montar el circuito es identificar si el LED RGB que se tiene, es ánodo común o
cátodo común.

Preguntas de reflexión 7. LED RGB


¿Cómo puede identificarse que un LED RGB es de ánodo común o cátodo común?

47. Una vez identificado el tipo de LED RGB que se tiene, se procede a realizar el montaje del circuito. Si el
LED es de ánodo común, se debe realizar el montaje mostrado en la Figura 18. Los pines de salida

18
Digital serán los números 49, 51 y 53 en el Arduino Mega o los pines 3, 5 y 7 en el Arduino Uno. Así
mismo, el valor de cada una de las resistencias en serie a conectar con cada terminal del led es de 270
Ω.

Figura 18. Montaje con el Arduino Mega para el control de un led RGB Ánodo Común.

48. Las conexiones y configuración de la tarjeta del microcontrolador con el tablero de conexiones
(protoboard), con un LED RGB de ánodo común, deben ser así:

Pines del Arduino Mega 2560 o


Configuración Componente
Pines del Arduino Uno
Resistencia 1 @ 270 Ω (al terminal
49 o 3 Salida digital
1 del LED. Rojo)
Resistencia 2 @ 270 Ω (al terminal
51 o 5 Salida digital
3 del LED. Verde)
Resistencia 3 @ 270 Ω (al terminal
53 o 7 Salida digital
4 del LED. Azul)
GND Tierra Bus interno inferior protoboard
Bus externo inferior protoboard
5V + 5V
y Ánodo del LED RGB. Terminal 2

49. Si el LED RGB que se tiene es cátodo común, se debe realizar el montaje mostrado en la Figura 19. Los
pines de salida Digital serán los números 49, 51 y 53 en el Arduino Mega o 3, 5 y 7 en el Arduino Uno.
Así mismo, el valor de cada una de las resistencias en serie a conectar con cada terminal del led es de
270 Ω.

19
Figura 19. Montaje en el Arduino Mega para el control de un led RGB Cátodo Común

50. Las conexiones y configuración de la tarjeta del microcontrolador con el tablero de conexiones
(protoboard), con un LED RGB de cátodo común, deben ser así:

Pines del Arduino Mega


Configuración Componente
2560
49 Salida digital Resistencia 1 @ 270 Ω (al terminal 1 del LED. Rojo)
Resistencia 2 @ 270 Ω (al terminal 3 del LED.
51 Salida digital
Verde)
53 Salida digital Resistencia 3 @ 270 Ω (al terminal 4 del LED. Azul)
Bus interno inferior protoboard
GND Tierra
y Cátodo del LED RGB. Terminal 2
5V + 5V Bus externo inferior protoboard

51. Una vez terminada la conexión de los componentes (hardware), se puede proceder a la realización del
código (software) para que se ejecute la acción requerida.
NOTA: La siguiente guía de programación son para el caso de un LED RGB ánodo común. Si el LED RGB es
cátodo común invierta los valores de HIGH por LOW y LOW por HIGH.
52. Se desea que el LED RGB, cambie de color con la siguiente secuencia a intervalo de un segundo: rojo,
verde, azul y apagado.
53. Cree un archivo nuevo: Archivo (File) → Nuevo (New). Al hacer esto, salen de nuevo las funciones setup
y loop.
54. Póngale un nombre al inicio del código, por medio de un comentario. A modo de ejemplo podría ser:
// LED RGB. Secuencia de colores primarios
55. En el programa debe configurarse como salida los pines 49, 51 y 53 de la tarjeta Arduino Mega o los
pines 3, 5 y 7 del Arduino Uno. Recuerde que esto se lleva a cabo en la función setup. A modo de
ejemplo se muestra la configuración del PIN53 y su respectiva documentación:
pinMode(53, OUTPUT); // Configura el pin digital 53 como salida

20
56. Realice la configuración de los pines restantes. Una vez finalizada esta configuración, se procede a
escribir el código en la función loop.
57. Ya que son tres salidas, se debe definir el valor para cada una de ellas. De esta forma, si solo desea
activarse el LED rojo (PIN49 o PIN3), este debe ponerse en bajo (LOW) y los otros dos PIN51 o PIN5 y
PIN53 o PIN7 en alto (HIGH). Esto se realiza así, ya que el LED RGB es ánodo común, es decir, se
enciende con nivel bajo.
58. A modo de ejemplo se muestra la asignación de valores a los pines 49, 51 y 53 y su respectiva
documentación:
// Cógigo para LED RGB Ánodo común
digitalWrite(49, LOW); // Encender el led rojo con el pin49.
digitalWrite(51, HIGH); // Apagar el led verde con el pin51.
digitalWrite(53, HIGH); // Apagar el led azul con el pin53.
delay(1000); // Tiempo de espera en ms.

59. Realice la programación de los estados siguientes del LED RGB para su respectivo cambio de color.

60. Verifique el código, cárguelo en el microcontrolador y compruebe el funcionamiento.

Preguntas de reflexión 8. LED RGB


¿Cómo debería modificarse el código, para que la secuencia de colores sea: amarillo, magenta (morado),
aguamarina (cyan) y blanco?
¿Cómo debería modificarse el circuito, para obtener el color naranja?

21
VI. LECTURA DE VALORES DE ENTRADA.
61. Hasta el momento se ha realizado la programación para controlador el parpadeo de un LED, sin
embargo, una vez inicie a correrse el programa, el usuario no tiene control sobre el mismo. Ahora se
desea poner una entrada al microcontrolador, para que se pueda controlar el encendido o apagado del
LED.
62. Se debe realizar el montaje mostrado en la Figura 20. El pin de salida Digital será el número 53 en el
Arduino Mega o el pin 10 en el Arduino Uno, el pin de entrada Digital será el número 45 en el Arduino
Mega y será el pin número 8 en el Arduino Uno. Así mismo, se debe poner un pulsador y el valor de las
resistencias en serie a conectar es de 270 Ω (para el LED) y 10 kΩ (para el pulsador).

Figura 20. Montaje para el control de un led con de un pulsador

63. Las conexiones y configuración de la tarjeta del microcontrolador con el tablero de conexiones
(protoboard), con el LED y el pulsador, deben ser así:

Pines del Arduino Mega 2560 o


Configuración Componente
Pines del Arduino Uno
45 o 8 Entrada digital Pulsador
53 o 10 Salida digital Terminal + del led (ánodo)
GND Tierra Bus interno inferior protoboard
5V + 5V Bus externo inferior protoboard

NOTA: Se debe verificar con el multímetro digital en función de medidor de continuidad, los pines
correspondientes al pulsador, de tal forma que los que se conectan en el tablero de conexiones
(protoboard) a la resistencia de 10 kΩ y a la alimentación de 5V, estén normalmente abiertos y solo se
conecten al presionar el botón del pulsador.
64. Se probará la correcta conexión entre la tarjeta y los elementos del tablero de conexiones, mediante un
código que encienda el LED cuando se mantenga presionado el pulsador y se apague al momento de
liberarlo.

22
65. Cree un archivo nuevo y póngale un nombre al inicio del código, por medio de un comentario.
66. En el programa debe configurarse como salida el PIN53 en el Arduino Mega y el PIN10 en el Arduino
Uno y como entrada el PIN45 de la tarjeta del Arduino Mega o el PIN8 en el Arduino Uno. Como ya se ha
mencionado, esto debe realizarse en la función setup. Para la configuración del PIN45 o PIN8 como
entrada debe escribirse lo siguiente:
pinMode(45, INPUT); // Configura el pin digital 45 como entrada.
(pulsador)
pinMode(8, INPUT); // Configura el pin digital 8 como entrada.
(pulsador)
67. Realice la configuración de los pines restantes. Una vez finalizada esta configuración, se procede a
escribir el código en la función loop. Se desea conocer el estado en el cual se encuentra el pulsador
(presionado o liberado), que está asociado al PIN45 o al PIN8.
68. Lo que se debe hacer es leer el valor de entrada del pulsador (entrada digital). Si esta libre el valor será
“cero lógico”, debido a que el voltaje es de 0V, al no haber circulación de corriente por la resistencia. Si
se oprime el pulsador, el valor de entrada será un “uno lógico”, ya que en el terminal del pulsador habrá
el mismo voltaje que el otro terminal, es decir 5 V.
69. Por lo tanto, para conocer en qué estado se encuentra el pulsador, debe leerse el valor de la entrada en
el PIN45 o del PIN8. Para tal fin se debe escribir lo siguiente: digitalRead(45);
digitalRead(8);
Donde “digitalRead” es el comando que lee el valor en el pin (definido como entrada digital). Sin
embargo, esta lectura carece de utilidad tal y como está, porque este valor leído debería poder
almacenarse en algún lugar, para poder utilizarla más adelante. El espacio donde se debería almacenar
este valor leído (o un valor calculado) se llama variable, el cual como su nombre lo indica su valor puede
cambiar o variar en el proceso de ejecución del programa.
Para poder utilizar una variable, debe primero definirse antes de la función setup. En nuestro caso
llamaremos a la variable “pulsador”, aunque se le puede poner cualquier otro nombre.
70. Para la definición de la variable debe escribirse lo siguiente:
int pulsador = 0; // Define la variable pulsador
Donde “pulsador” es el nombre dado a la variable, “int” es la definición del tipo de variable que se va a
utilizar, en este casi será una variable entera (integer), o sea, solo puede tomar valores de número
enteros. Finalmente, a la variable se le asigna un valor inicial, en nuestro caso se le asigna el valor de
cero “0”. Por lo tanto, para que quede bien definida la instrucción de lectura del valor de entrada, el
código que se escribirá debe ser:
pulsador = digitalRead(45); // Lee el estado del pulsador para el Mega
pulsador = digitalRead(8); // Lee el estado del pulsador para el Uno
71. Al conocerse el valor de la variable “pulsador” que a su vez nos indica el estado (libre o presionado) de
este dispositivo, debe tomarse la decisión de encender o apagar el LED a partir de este valor. Para tal
fin, se le debe preguntar al microcontrolador por el valor de la variable y a partir de este ejecutar la
acción requerida.
72. Para preguntar por el valor de la variable y tomar una decisión a partir de este valor, se utiliza una
instrucción llamada condicional, la cual tiene como estructura “SI condición, ENTONCES acción”. En

23
nuestro caso, si el pulsador esta oprimido (entrada digital en 1 lógico, o sea nivel alto –HIGH-), se
enciende el LED y si no o sea el pulsador esta liberado (entrada digital en 0, o sea nivel bajo –LOW-), se
apaga el LED.
73. Por lo tanto, para preguntar por el estado de la variable y tomar la decisión correspondiente, se debe
escribir lo siguiente en el Arduino Mega y si fuera el Arduino cambiar el PIN53 por el PIN10:

if (pulsador == HIGH) { // Se pregunta el estado del pulsador


digitalWrite(53, HIGH); // Se enciende el led en el pin53.
}
else {
digitalWrite(53, LOW); // Se apaga el led en el pin53.
}

74. De esta forma el texto escrito debe ser similar al que se muestra a continuación:
75. Verifique el código, cárguelo en el microcontrolador y compruebe el funcionamiento.

// Encender y apagar un LED con un pulsador

int pulsador = 0; // Define la variable pulsador

void setup() {
// put your setup code here, to run once:

pinMode(45, INPUT); // Configura el pin45 o pin8 digital como entrada.

//(pulsador)
pinMode(53, OUTPUT); // Configura el pin digital 53 ó 10 como salida
}

void loop() {
// put your main code here, to run repeatedly:
pulsador = digitalRead(45); // Lee el estado del pulsador o pin8
if (pulsador == HIGH) { // Se pregunta el estado del pulsador
digitalWrite(53, HIGH); // Se enciende el led en el pin53 o pin10
}
else {
digitalWrite(53, LOW); // Se apaga el led en el pin53 o pin10
}

76. Una vez se ha comprobado el correcto funcionamiento de este código, podemos concluir el programa
tal y como se pidió, es decir, que al presionar el pulsador el LED cambie de estado. Para esto sólo se
debe modificar el código como tal (software), sin realizar ninguna modificación en el montaje
(hardware).
Preguntas de reflexión 9. Algoritmo
Antes de escribir el código, escriba la descripción con sus propias palabras de lo que debe hacer el programa,
paso a paso, sin omitir detalles, por obvio que pueda parecer. Recuerde que el microprocesador se limita a
realizar los comandos que se le han escrito.

24
77. Escriba el código necesario, para que se realice la función de cambio de estado en el LED cuando se ha
presionado el pulsador.
NOTA: Se sugiere crear otra variable que indique el estado actual del LED (puede llamarse “actual”),
para que una vez se lea este estado actual y coincida con el botón presionado, se produzca el cambio de
estado.
78. Una vez que ha terminado de escribir el código, verifíquelo, cárguelo en el microcontrolador y
compruebe su funcionamiento.
NOTA: Puede comparar su código realizado con el siguiente mostrado en el recuadro siguiente. No
existe una única forma de solucionar el problema indicado
79. Al comprobar el funcionamiento del programa es posible que este no realice su trabajo correctamente,
ya que, al presionar el pulsador, el LED no cambia adecuadamente de estado.
Esto se debe a que, al presionar el pulsador, el microcontrolador realiza la lectura de esta presión
muchas veces (es decir, el LED se estaría prendiendo y apagando a muy alta frecuencia, por lo tanto,
para nuestros ojos siempre permanecería encendido), así que, al soltarlo, no se sabría exactamente por
parte del usuario, si el último estado fue encendido o apagado.

25
// Cambiar de estado un LED al presionar un pulsador
int pulsador = 0; // Define la variable pulsador
int estado_led = 0; // Define el estado actual del LED. 0 = apagado

void setup() {
// put your setup code here, to run once:

pinMode(45, INPUT); // Configura el pin45 digital como entrada. (pulsador)


pinMode(53, OUTPUT); // Configura el pin digital 53 como salida
}

void loop() {
// put your main code here, to run repeatedly:
pulsador = digitalRead(45); // Lee el estado del pulsador

if (pulsador == HIGH) { // Se pregunta el estado del pulsador


estado_led = 1 – estado_led; // Cambia el estado actual
}

if (estado_led == 1) {// Pregunta por el estado al que debe pasar el LED


digitalWrite(53, HIGH); // Se enciende el led en el pin53.
}
else {
digitalWrite(53, LOW); // Se apaga el led en el pin53.
}
}

80. Para corregir este problema, se debe aplicar el cambio solamente cuando el pulsador haya pasado de
estar liberado a estar presionado. Para que esto pueda evaluarse se debe crear otra variable, que en
este caso será:
int pulsador_anterior = 0; // Define el estado anterior del pulsador

26
Preguntas de reflexión 10. Modificación de Algoritmo
Antes de escribir el código, escriba la descripción con sus propias palabras de lo que debe hacer el programa,
paso a paso, sin omitir detalles, por obvio que pueda parecer. Recuerde que el microprocesador se limita a
realizar los comandos que se le han escrito.
81. Escriba el código necesario, para que se realice la función de cambio de estado en el LED cuando se ha
presionado el pulsador.
82. Una vez que ha terminado de escribir el código, verifíquelo, cárguelo en el microcontrolador y
compruebe su funcionamiento.
NOTA: Puede comparar su código realizado con el mostrado en la siguiente página. No existe una única
forma de solucionar el problema indicado.
83. Se debería notar una mejora en el funcionamiento del programa, sin embargo, aún no funciona
correctamente. Esto se debe a que, al presionar el pulsador, su parte mecánica no hace un contacto
permanente entre sus terminales, sino que se presenta un rebote entre ellos (bounce), lo que hace que
a veces haya contacto y otras veces no, lo que se traduce en un funcionamiento inadecuado de nuestro
programa.
84. Para corregir este problema de bounce (rebote) que se presenta en los dispositivos de contacto
mecánico, existen varias técnicas. Una de ellas, simple y económica, consiste en poner un tiempo de
retardo posterior a la lectura del valor del pulsador. Para esto, se utiliza la instrucción: delay(25);
Recuerde que delay mantiene un tiempo de espera en ms, antes de continuar ejecutando el programa,
con esto, se reduce la posibilidad de lectura de los rebotes debido a la presión del pulsador.
85. Una vez que ha terminado de escribir el código, verifíquelo, cárguelo en el microcontrolador y
compruebe su funcionamiento. En este caso debería funcionar mejor.

27
// Cambiar de estado un LED al presionar un pulsador
int pulsador = 0; // Define la variable pulsador
int pulsador_anterior = 0; // Define el estado anterior del pulsador
int estado_led = 0; // Define el estado actual del LED. 0 = apagado

void setup() {
// put your setup code here, to run once:

pinMode(45, INPUT); // Configura el pin45 digital como entrada. (pulsador)


pinMode(53, OUTPUT); // Configura el pin digital 53 como salida
}

void loop() {
// put your main code here, to run repeatedly:
pulsador = digitalRead(45); // Lee el estado del pulsador

if ( (pulsador == HIGH) && (pulsador_anterior == LOW) ){


// Se pregunta el estado actual y anterior del pulsador
estado_led = 1 – estado_led; // Cambia el estado actual
delay(25);
}

pulsador_anterior = pulsador; // Se actualiza el estado anterior

if (estado_led == 1) {// Pregunta por el estado al que debe pasar el LED


digitalWrite(53, HIGH); // Se enciende el led en el pin53.
}
else {
digitalWrite(53, LOW); // Se apaga el led en el pin53.
}
}

Preguntas de reflexión 11. Explicación del Algoritmo


A partir del código anterior, describa la función de cada instrucción y el funcionamiento completo del
programa.

28

También podría gustarte