Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y...

17
Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Arduino. Conectar a Arduino un sensor ultrasónico para medición de distancias. Programar Arduino para obtener el dato proporcionado por el sensor ultrasónico. Conectar a Arduino un circuito integrado para sensado de temperatura. Programar Arduino para obtener y operar el dato del sensor de temperatura. Conectar las salidas PWM de Arduino a un LED RGB. Programar Arduino para manejar intensidades individuales y en conjunto de los colores del LED RGB. 1 Computadora con sistema operativo Linux o Windows y con el programa Arduino IDE instalado. 1 Cable USB (tipo A hacia tipo B). 1 Tarjeta Arduino UNO R2 o R3. 1 Sensor Ultrasónico HC-SR04. 1 Circuito integrado LM35. 1 Módulo de LED RGB. 1 Breadboard. 1 Pinza punta plana. 1 Cortadora (pinza de corte diagonal). Cables UTP. El sensor ultrasónico HC-SR04 Características: El módulo de alcance ultrasónico HC-SR04 provee una función de medida sin contacto de 2 a 400 cm, el rango de exactitud puede alcanzar a 3mm. Los módulos incluyen transmisores ultrasónicos, receptor y circuito de control. El principio básico de funcionamiento es el siguiente: 1. Usar una señal de disparo de al menos 10uS de nivel alto, (Pin Trig). 2. El módulo automáticamente envía ocho pulsos con frecuencia de 40KHz y detecta si hay una señal de pulsos de retorno. 3. Si la señal retorna, en el pin Echo se genera un pulso, el tiempo que este pulso permanece en nivel alto es proporcional al tiempo de envío y recepción del tren de pulsos de 40KHz. Objetivos Específicos. Materiales y equipos. Facultad: Ingeniería Escuela: Electrónica Asignatura: Interfaces y Periféricos (IYP111). Lugar de Ejecución: Microprocesadores (3.23). Introducción Teórica.

Transcript of Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y...

Page 1: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 1

Conexión de sensores y manejo

de LED RGB con Arduino.

Conectar a Arduino un sensor ultrasónico para medición de distancias.

Programar Arduino para obtener el dato proporcionado por el sensor ultrasónico.

Conectar a Arduino un circuito integrado para sensado de temperatura.

Programar Arduino para obtener y operar el dato del sensor de temperatura.

Conectar las salidas PWM de Arduino a un LED RGB.

Programar Arduino para manejar intensidades individuales y en conjunto de los colores

del LED RGB.

1 Computadora con sistema operativo Linux o Windows y con el programa Arduino

IDE instalado.

1 Cable USB (tipo A hacia tipo B).

1 Tarjeta Arduino UNO R2 o R3.

1 Sensor Ultrasónico HC-SR04.

1 Circuito integrado LM35.

1 Módulo de LED RGB.

1 Breadboard.

1 Pinza punta plana.

1 Cortadora (pinza de corte diagonal).

Cables UTP.

El sensor ultrasónico HC-SR04

Características:

El módulo de alcance ultrasónico HC-SR04 provee una función de medida sin contacto de

2 a 400 cm, el rango de exactitud puede alcanzar a 3mm. Los módulos incluyen

transmisores ultrasónicos, receptor y circuito de control. El principio básico de

funcionamiento es el siguiente:

1. Usar una señal de disparo de al menos 10uS de nivel alto, (Pin Trig).

2. El módulo automáticamente envía ocho pulsos con frecuencia de 40KHz y detecta si

hay una señal de pulsos de retorno.

3. Si la señal retorna, en el pin Echo se genera un pulso, el tiempo que este pulso

permanece en nivel alto es proporcional al tiempo de envío y recepción del tren de

pulsos de 40KHz.

Objetivos Específicos.

Materiales y equipos.

Facultad: Ingeniería

Escuela: Electrónica

Asignatura: Interfaces y Periféricos (IYP111).

Lugar de Ejecución: Microprocesadores (3.23).

Introducción Teórica.

Page 2: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

2 Interfaces y Periféricos. Guía 4.

El cálculo es según la siguiente fórmula:

𝐷 =𝑡𝐻 ∗ 340

2 (m) (Ec. 1)

Donde:

D: Es la distancia medida por el sensor.

tH: Es el tiempo en alto del pulso resultante en la medición.

340 es la velocidad media del sonido en m/s.

La forma de conexión puede observarse en la siguiente figura:

Vcc Trig Echo GND

Figura 1. Conexiones de Sensor HC-SR04.

Parámetros Eléctricos:

Característica Valor

Voltaje de Trabajo 5 V

Corriente de trabajo 15 mA

Frecuencia de operación 40 Hz

Rango máximo 4 m

Rango mínimo 2 cm

Ángulo de medida 15 grados

Señal de entrada de disparo Pulso TTL de 10S

Señal de salida de Echo Nivel TTL y el rango proporcional

Dimensiones 45 x 20 x 15 mm Tabla 1. Parámetros eléctricos de sensor ultrasónico.

En la Figura 2 se presenta el diagrama de tiempo que describe el funcionamiento del sensor

Page 3: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 3

Figura 2. Diagrama de tiempo HC-SR04.

Circuito Integrado para medición de temperatura LM35:

Características:

1. Directamente calibrado en Celsius (grados centígrados).

2. Factor de escala lineal de +10mV/°C.

3. 0.5°C de exactitud asegurada (a 25°C).

4. Comprobado para el rango completo de -55°C a 150°C.

5. Adecuado para aplicaciones remotas.

6. Bajo costo debido a su técnica de fabricación.

7. Opera desde 4V a 30V.

8. Corriente de consumo menor a 60μA.

9. Baja disipación de calor, 0.08°C en aire quieto.

10. No linealidad sólo de ± ¼ °C típica.

11. Baja impedancia de salida, 0.1Ω para 1mA de carga.

Los circuitos de la serie LM35 son dispositivos en circuito integrado de precisión para

medición de temperatura con una salida de voltaje linealmente proporcional a la

temperatura en grados centígrados. El LM35 no requiere alguna calibración externa o ajuste

para proporcionar exactitudes típicas de ± ¼ °C en la temperatura de una habitación y ± ¾

°C sobre un rango completo desde -55°C a 150°C. La baja impedancia, salida lineal, y la

calibración precisa inherente del LM35 hace que la interfaz para lectura o circuitería de

control, sea muy fácil. El dispositivo se usa con una sola fuente de alimentación o con una

fuente bipolar. Debido a que el LM35 consume solamente 60μA de la fuente, tiene una baja

disipación de calor menor a 0.1°C en aire quieto.

La forma típica de conexión de un LM35 se muestra en la figura 3.

Page 4: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

4 Interfaces y Periféricos. Guía 4.

Figura 3. Sensor de temperatura en grados centígrados básico (2°C a 150°C).

Para lograr el rango completo se requiere de una fuente bipolar y la conexión presentada en

la figura 4 (se requiere que la entrada analógica donde se conectará la salida pueda recibir

valores negativos, este no sería el caso de Arduino).

Figura 4. Sensor de temperatura en grados centígrados en rango completo.

La configuración de pines del empaquetado se muestra en la Figura 5.

Figura 5. Pines y su función en empaquetado TO92.

Sensor de Temperatura y Humedad Relativa DHT11

El sensor DHT 11 es capaz de realizar mediciones simultáneas de humedad relativa y

temperatura, entrega su lectura de forma digital. Se puede encontrar aplicaciones para el

DHT 11 en el control de invernaderos, monitoreo de centros de datos, climatización de

casas, edificios, etc.

Page 5: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 5

Comunicación del DHT 11 con Arduino.

El DHT11 no utiliza una interfaz serial estándar como I2C, SPI o 1 Wire (es similar a este

último). En cambio requiere su propio protocolo para comunicarse a través de un solo hilo.

Afortunadamente el protocolo de comunicación del DHT11 es simple y puede

implementarse fácilmente utilizando los pines de Entrada/Salida del Arduino.

Arduino debe comenzar la comunicación con el DHT11 manteniendo la línea de datos en

estado bajo durante al menos 18 ms. Luego el DHT11 envía una respuesta con un pulso a

nivel bajo (para indicar su presencia) de 80 uS y luego deja “flotar” la línea de datos por

otros 80 uS. En la figura de abajo, el pulso de inicio enviado por el microcontrolador está

coloreado en rojo, mientras que la respuesta desde el sensor está coloreada en azul.

Figura 6. Inicialización de comunicación entre Arduino y Sensor DHT11.

Codificación de bits:

La codificación de datos está basada en un esquema de ancho de pulso (se toma en cuenta

el ancho del estado alto): Un pulso ancho representa un 1 lógico, un pulso corto representa

un 0 lógico.

Figura 7. Codificación de 1 y 0 lógico en la trama de datos del sensor DHT11.

Page 6: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

6 Interfaces y Periféricos. Guía 4.

Todos los bits comienzan con un pulso bajo de 50 uS. Las librerías de comunicación con el

DHT11 aprovechan este pulso para sincronización. Luego viene un pulso alto que varía

según el estado lógico o el valor del bit que el DHT11 desea transmitir:

Se utilizan pulsos de 26 a 28 uS para un “0”

Se utilizan pulsos de 70 uS para un “1”

En la siguiente figura se resume el inicio de una comunicación con el DHT11.

Figura 8. Trama de comunicación entre Arduino y DHT11.

Una transmisión completa comienza como ya se describió y se compone de 40 bits (5

bytes) que incluyen todos los datos que el sensor puede proporcionar. En cuanto a los datos

que se transmiten, su interpretación es como sigue:

El primer byte que se recibe es la parte entera de la humedad relativa (RH).

El segundo byte es la parte decimal de la humedad relativa (en DHT11, siempre es 0).

El tercer byte es la parte entera de la temperatura.

El cuarto byte es la parte decimal de la temperatura. (en DHT11, siempre es 0).

El quinto byte es la suma de comprobación (checksum), resultante de la suma de todos

los bytes anteriores.

Figura 9. Sensor DHT11 de la marca KEYES.

Manejo de Periféricos Analógicos Mediante Arduino.

La plataforma Arduino, basada en microcontrolador AVR, hereda la capacidad intrínseca

de dicho microcontrolador para manejar periféricos analógicos mediante técnicas de

conversión específicas. Dichas técnicas consisten en la conversión analógica a digital

(ADC) y modulación por ancho de pulso (PWM). Cada una permite interactuar con

periféricos analógicos que proveen información de entrada (ADC) o que aceptan

información de salida (PWM)

Page 7: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 7

Conversión analógica a digital.

El microcontrolador cuenta con un ADC integrado en el mismo chip, que permite tomar

lecturas analógicas de voltaje de un dispositivo que genere tensiones entre 0 y 5V. La

configuración de dicho módulo es automática, bastando solamente con invocar la función

de lectura de datos, la cual se detalla a continuación:

analogRead(numero_pin): Realiza la lectura sobre el pin analógico que se le especifique

(Sólo se permiten los pines A0 al A5). El valor que devuelve es un número entero

proporcional al voltaje de entrada, de tal forma que si se introducen 0V devuelve un valor

de 0 y si se introducen 5V devuelve un valor de 1023, con todos los voltajes intermedios se

producen valores distribuidos linealmente a lo largo de este intervalo. Nótese que no es

necesario configurar previamente un pin analógico para poderlo usar con esta función.

Advertencia: El rango válido para los voltajes de entrada es solamente de 0 a 5V. Si

introduce voltajes negativos, o bien, voltajes positivos arriba de 5V, podrá dañar de manera

permanente el dispositivo.

Modulación por ancho de pulso (PWM).

El Microcontrolador AVR cuenta también con dispositivos temporizadores que permiten

generar señales externas, las cuales emplean la modulación por ancho de pulso para

manejar cargas que sean compatibles con este esquema. Vale aclarar que la técnica en sí, es

completamente diferente de la conversión digital a analógica (DAC), puesto que no se

generan tensiones analógicas constantes (por ejemplo entre 0 y 5V) en ningún momento,

sino que más bien la carga es encendida y apagada rápidamente, produciendo un efecto

equivalente a proveer un nivel de potencia intermedio, que puede variar entre

completamente apagado y completamente encendido. Además, de manera similar al ADC,

los módulos temporizadores son inicializados de manera automática, bastando con invocar

la función que se detalla a continuación:

analogWrite (numero_pin, ciclo_de_trabajo): Genera una señal PWM sobre un pin

digital que tenga esa capacidad (denotado con ~). El rango válido para el ciclo de trabajo va

desde 0 (completamente apagado) hasta 255 (completamente encendido).

Nótese que no todas las cargas son compatibles con la modulación PWM, por lo que se

recomienda que se informe antes de emplearla con algún dispositivo en particular. La

técnica funciona bien con algunas cargas como LEDs y motores DC pequeños, mas no con

cargas como relés o motores DC sin escobillas (como los ventiladores para chasís de

computadora).

Page 8: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

8 Interfaces y Periféricos. Guía 4.

Parte 1: Sensor ultrasónico HC-SR04

1. Encienda la computadora. Cuando cargue el sistema operativo utilice las siguientes

credenciales:

Usuario: usuario0

Contraseña: usuario

2. Conecte el sensor ultrasónico HC-SR04 como se presenta en la Figura 10.

Figura 10. Conexión del sensor HC-SR04 a Arduino.

3. Abra el Arduino IDE y digite el siguiente sketch para el manejo del sensor sin el uso de

una librería de Arduino.

int disparo = 12; //pin para dar el disparo

int echo = 11; //pin para recibir el pulso que sirve para medir distancia

int centimetros; //Variable que guarda la distancia medida

int durPulso; //Variable que mide la duración del pulso

void setup(){ //Pon tu codigo aqui, para correr una vez:

pinMode(disparo, OUTPUT);

pinMode(echo, INPUT);

Serial.begin(9600);

}

void loop(){ //Pon tu codigo principal aqui, corre repetidamente:

medircm(); //Llamado a función externa al loop

if(durPulso == 0){

Serial.println("fuera de rango");

}

else{

Serial.print(centimetros);

Serial.println("cm");

}

delay(500);

}

void medircm() //Función externa al loop

{

digitalWrite(disparo,HIGH); //Escribe el pulso de 10uS en alto

delayMicroseconds(10);

digitalWrite(disparo,LOW);

durPulso = pulseIn(echo,HIGH,5800); //Mide la duración del pulso en Echo

centimetros = durPulso / 58; //Cálculo de la distancia en cm.

}

Código 1. Programa que realiza la secuencia de operación del sensor HC-SR04.

Procedimiento.

Page 9: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 9

4. Programe el Arduino Uno.

5. Coloque su mano frente al sensor a diferentes distancias mientras observa el monitor

serial del Arduino IDE.

6. Para el siguiente código es necesario instalar la librería Newping la cual provee

funciones que pueden manejar hasta 8 sensores ultrasónicos conectados a Arduino. Esta

puede ser descargada de:

https://bitbucket.org/teckel12/arduino-new-ping/downloads

7. Abra Arduino IDE e instale la librería desde el menú Programa > Incluir Librería >

Añadir Librería .zip.

8. Reinicie Arduino IDE.

9. Haga un nuevo sketch y copie el siguiente código en él:

// ---------------------------------------------------------------------------

// Ejemplo de sketch con librería NewPing que hace un ping a dos veces por segundo.

// ---------------------------------------------------------------------------

#include <NewPing.h>

#define PIN_DISPARO 12 //Pin de Arduino conectado al pin Trig del sensor

#define PIN_ECO 11 //Pin de Arduino conectado al pin Echo del sensor

#define DISTANCIA_MAX 200 //Máxima distancia (en centímetros). La máxima distancia

//del sensor es 400 cm.

//Configuraciones de pines en librería.

//También se configura distancia máxima.

NewPing sonar(PIN_DISPARO, PIN_ECO, DISTANCIA_MAX);

void setup(){

Serial.begin(9600); //Se abre el monitor serial a 9600 bauds para ver los resultados.

}

void loop(){

delay(500); //Espera 500ms entre pings (2 veces por segundo).

//29 ms debería ser el más corto delay entre pings.

unsigned int uS = sonar.ping();

//Envía ping, se obtiene el tiempo de ping en //microsegundos (uS).

Serial.print("Ping: ");

Serial.print(uS / US_ROUNDTRIP_CM);

//Se convierte el tiempo de ping a distancia (0 = fuera del rango de distancia)

Serial.println("cm");

}

Código 2. Uso de la librería Newping 1.8 para la lectura de la distancia con HC-SR04.

10. Programe el Arduino Uno.

11. Coloque su mano frente al sensor a diferentes distancias mientras observa el monitor

serial del Arduino IDE.

Parte 2. Ejemplo de uso de LM35.

12. Conecte el LM35 a Arduino como se muestra en la siguiente figura:

Page 10: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

10 Interfaces y Periféricos. Guía 4.

Figura 11. Conexión LM35 a entrada analógica A1 del Arduino.

13. Programe el Arduino con el siguiente sketch de ejemplo, compruebe los datos obtenidos

en el monitor serial.

Nota:

Este programa hace uso de la referencia interna de 1.1 para la entrada analógica con el

objetivo de lograr mayor precisión en la medida.

float tempC;

int reading;

int tempPin = A1;

void setup()

{

analogReference(INTERNAL);

Serial.begin(9600);

}

void loop()

{

reading = analogRead(tempPin);

tempC = reading / 9.31;

Serial.println(tempC);

delay(1000);

}

Código 3. Ejemplo de programa para el manejo de sensor de temperatura LM35.

14. Trate por algún medio de cambiar la temperatura circundante al sensor (sin tocar con

alguna superfici1e caliente para no dañar el empaque) y compruebe que se generan

cambios en los datos mostrados en el monitor serial.

Parte 3. Uso de sensor de temperatura y humedad relativa DHT11.

15. Descargue la librería unificada de sensores de la compañía Adafruit de las siguientes

direcciones:

https://github.com/adafruit/DHT-sensor-library

https://github.com/adafruit/Adafruit_Sensor/archive/master.zip

Page 11: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 11

16. Repita los pasos 7 y 8 para agregar la librería al entorno de desarrollo de Arduino.

17. Conecte el sensor de temperatura y humedad relativa DHT11 a Arduino con la siguiente

configuración de pines:

Pin S del módulo a pin 2 de Arduino.

Pin medio del módulo a VCC (+5V).

Pin – del módulo a GND.

Figura 12. Conexión de sensor DHT11 entrada digital 2 del Arduino Uno.

18. Haga un nuevo sketch y copie el siguiente código en él:

//EJEMPLO SENSOR DHT11 1

#include "DHT.h"

//CONSTRUCTOR DEL OBJETO DHT RECIBE EL PIN EN EL QUE SE CONECTA EL

//SENSOR

//Y TAMBIEN RECIBE EL TIPO DE SENSOR QUE VAMOS A CONECTAR

DHT dht(2, DHT11);

void setup() {

// PREPARAR LA COMUNICACION SERIAL

Serial.begin(9600);

Serial.println("Prueba del sensor DHT11");

// PREPARAR LA LIBRERIA PARA COMUNICARSE CON EL SENSOR

dht.begin();

}

void loop() {

//ESPERAR ENTRE MEDICIONES, NECESARIO PARA EL BUEN FUNCIONAMIENTO

delay(2000);

//LEER LA HUMEDAD USANDO EL METODO READHUMIDITY

float h = dht.readHumidity();

//LEER LA TEMPERATURA USANDO EL METODO READTEMPERATURE

float t = dht.readTemperature();

//REVISAR QUE LOS RESULTADOS SEAN VALORES NUMERICOS VALIDOS,

//INDICANDO QUE LA COMUNICACION ES CORRECTA

if (isnan(h) || isnan(t)) {

Serial.println("Falla al leer el sensor DHT11!");

return;

}

// IMPRIMIR RESULTADO AL MONITOR SERIAL

Serial.print("Humedad: ");

Serial.print(h);

Serial.print(" % ");

Serial.print("Temperatura: ");

Serial.print(t);

Serial.println(" *C");

}

Código 4. Ejemplo de programa para el manejo de sensor DHT11.

Page 12: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

12 Interfaces y Periféricos. Guía 4.

Parte 4. Conexión y uso de led RGB con salidas PWM.

19. Conecte el Arduino y el módulo RGB como se muestra en la siguiente figura:

Figura 13. Conexión de módulo led RGB a Arduino.

20. Escriba el siguiente sketch en Arduino IDE, descárguelo y describa qué es lo que hace:

int Rojo = 3;

int Verde = 5;

int Azul = 6;

int brillo = 0;

int i=0;

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

pinMode(Rojo, OUTPUT); //Configurar pines como salida

pinMode(Verde, OUTPUT);

pinMode(Azul, OUTPUT);

}

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

digitalWrite(Rojo,HIGH); //Se apaga LED Rojo por ser Ánodo Común

digitalWrite(Verde,HIGH); //Se apaga LED Verde

digitalWrite(Azul,HIGH); //Se apaga LED Azul

for(i=0; i<256; i=i+5){ //Se hacen incrementos de 5

brillo=i; //El valor del brillo será el contador i

analogWrite(Rojo,255-brillo); //Comienza del PWM desde el

delay(50); //Máximo al mínimo

} //Por ser Ánodo Común

digitalWrite(Rojo,HIGH); //Se apaga el led Rojo

for(i=0; i<256; i=i+5){ //Se hace la operación similar al led Rojo

brillo=i;

analogWrite(Verde,255-brillo);

delay(50);

}

digitalWrite(Verde,HIGH); //Se apaga el led Verde

for(i=0; i<256; i=i+5){ //Se hace la operación similar al led Rojo

brillo=i;

analogWrite(Azul,255-brillo);

delay(50);

}

digitalWrite(Azul,HIGH); //Se apaga led Azul

delay(10);

}

Código 5. Programa para manejo de led RGB.

Page 13: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 13

21. Descargue el siguiente programa y describa su funcionamiento.

int Rojo = 3;

int Verde = 5;

int Azul = 6;

int brilloR = 0;

int brilloG = 0;

int brilloB = 0;

int entero=0;

int ascii=0;

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

pinMode(Rojo, OUTPUT); //Configurar pines como salida

pinMode(Verde, OUTPUT);

pinMode(Azul, OUTPUT);

}

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

digitalWrite(Rojo,HIGH); //Se apaga LED Rojo por ser Ánodo Común

digitalWrite(Verde,HIGH); //Se apaga LED Verde

digitalWrite(Azul,HIGH); //Se apaga LED Azul

brilloR = random(255);

brilloG = random(255);

brilloB = random(255);

analogWrite(Rojo,255-brilloR);

analogWrite(Verde,255-brilloG);

analogWrite(Azul,255-brilloB);

delay(2000);

}

Código 6. Programa para manejo LED RGB.

22. El siguiente sketch permitirá al usuario poner los datos del brillo del led RGB por

medio del monitor serial, escríbalo en Arduino IDE y descárguelo.

//Programa para solicitar al usuario los niveles de brillo

//desde el monitor serial.

int Rojo = 3;

int Verde = 5;

int Azul = 6;

int brilloR = 0;

int brilloG = 0;

int brilloB = 0;

int entero=0;

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

pinMode(Rojo, OUTPUT); //Configurar pines como salida

pinMode(Verde, OUTPUT); //Los pines deben ser PWM (~)

pinMode(Azul, OUTPUT);

Serial.begin(9600);

digitalWrite(Rojo,HIGH); //Se apaga LED Rojo por ser Ánodo Común

digitalWrite(Verde,HIGH); //Se apaga LED Verde

digitalWrite(Azul,HIGH); //Se apaga LED Azul

}

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

rRGB(); //Llamada a función rRGB()

analogWrite(Rojo,255-brilloR); //Escribe nivel de brillo en LED

analogWrite(Verde,255-brilloG);

analogWrite(Azul,255-brilloB);

delay(250);

}

void rRGB(){ /*rRGB es una función para introducir los niveles de

Page 14: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

14 Interfaces y Periféricos. Guía 4.

brillo

desde el monitor serial*/

Serial.println(""); //línea en blanco

Serial.print("Escriba el nivel de rojo: "); //mensaje

while(Serial.available()==0){} //Pausa esperando dato brilloR

brilloR = Serial.parseInt(); //El dato ascii recibido se convierte

Serial.print(brilloR); //a entero

Serial.println("");

Serial.print("Escriba el nivel de verde: ");

while(Serial.available()==0){} //Pausa esperando dato brilloG

brilloG = Serial.parseInt();

Serial.print(brilloG);

Serial.println("");

Serial.print("Escriba el nivel de azul: ");

while(Serial.available()==0){} //Pausa esperando dato brilloB

brilloB = Serial.parseInt();

Serial.println(brilloB);

}

Código 7. Programa para selección de niveles de color RGB.

23. Abra un navegador de internet y vaya a la dirección http://htmlcolorcodes.com/es/

24. Elija un color moviendo el punto con el mouse y desplazando el scroll de la derecha

como se muestra en la siguiente figura:

Figura 14. Selección de color y niveles de RGB.

25. Abra el monitor serial, deberá estar solicitándole que introduzca el nivel de rojo, como

se muestra en la siguiente figura:

Page 15: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 15

Figura 15. Funcionamiento de programa para manejo de RGB con PWM.

26. Introduzca el número que en el sitio web está marcado como R, luego dé clic en enviar

y así vaya colocando los niveles que se presentan para el color deseado.

Nota:

Para que funcione correctamente el programa se debe tener la configuración “Sin ajuste

de línea” y a 9600 baudios como se mostró en la Figura 15.

27. Haga uso de los ejemplos anteriores para resolver algunas situaciones presentadas en el

análisis de resultados.

28. Desarme y haga entrega del equipo que se le proporcionó en orden.

29. Apague la computadora, incluyendo el monitor.

30. Deje en orden su puesto de trabajo.

1. Con el sensor HC-SR04 haga un programa que cuando la distancia a un objeto sea

mayor a 10 cm haga que un led RGB sea de color rojo, de lo contrario que sea verde.

2. Con el sensor LM35 haga un programa que determine si la temperatura es menor a 25

°C un led RGB tenga un color verde, si se encuentra en el rango de 25 a 32° sea

anaranjado y si es mayor a 32°C que sea rojo.

3. Aplicando lo visto con la lectura de variables analógicas haga uso de una

fotoresistencia para detectar los niveles de luz del ambiente y dependiendo de su valor

encender o apagar un led.

Análisis de Resultados.

Page 16: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

16 Interfaces y Periféricos. Guía 4.

1. Investigue acerca de sensores ultrasónicos que posean mayor alcance que el HC-SR04

2. Investigue sobre sensores de temperatura y humedad relativa que puedan ser

conectados a Arduino.

Sitio web de los desarrolladores: www.arduino.cc

Referencia en línea del lenguaje: http://arduino.cc/en/Reference/HomePage

Massimo Banzi, “Getting started with Arduino” O'Reilly Media / Make Publisher,

Marzo 2009, ISBN: 978-0-596-15551-3

Hoja técnica HC-SR04: http://elecfreaks.com/store/download/HC-SR04.pdf

Hoja técnica LM35: www.ti.com/lit/ds/symlink/lm35.pdf

http://bot-boss.com/tutorial-arduino-medir-distancia-sensor-ultrasonico-hc-sr04/

Librería Newping: https://bitbucket.org/teckel12/arduino-new-ping/downloads

Arduino Playground http://playground.arduino.cc/Main/LM35HigherResolution

https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/

Actividad complementaria.

Bibliografía.

Page 17: Conexión de sensores y manejo de LED RGB con Asignatura: … · 2018-09-10 · Interfaces y Periféricos. Guía 4. 1 Conexión de sensores y manejo de LED RGB con Asignatura: Interfaces

Interfaces y Periféricos. Guía 4. 17

EVALUACION

% 1-4 5-7 8-10 Nota

CONOCIMIENTO

25%

Conocimiento

deficiente de los

fundamentos

teóricos

Conocimiento y

explicación

incompleta de

los fundamentos

teóricos

Conocimiento

completo y

explicación clara

de los

fundamentos

teóricos

APLICACIÓN

DEL

CONOCIMIENTO

70%

No Terminó

completamente

el programa y

comentó mal el

código (30%)

No realizó el

circuito

correctamente

(40%)

Terminó

completamente

el programa

pero los

comentarios no

estaban del todo

correctos

El circuito

funcionó

Terminó

completamente el

programa con sus

comentarios

correctos

El circuito

funcionó

ACTITUD 2.5%

Es un

observador

pasivo.

Participa

ocasionalmente

o lo hace

constantemente

pero sin

coordinarse con

su compañero.

Participa

propositiva e

integralmente en

toda la práctica.

2.5%

Es ordenado;

pero no hace un

uso adecuado de

los recursos

Hace un uso

adecuado de los

recursos, respeta

las pautas de

seguridad; pero

es desordenado.

Hace un manejo

responsable y

adecuado de los

recursos

conforme a pautas

de seguridad e

higiene.

TOTAL 100%

Hoja de cotejo: 1

Guía 4: Conexión de sensores y manejo de LED RGB con Arduino.

Alumno:

Docente:

Maquina N°:

GL: Fecha: