Está en la página 1de 39

UNIVERSIDAD ESTATAL

PENÍNSULA DE SANTA ELENA

FACULTAD DE SISTEMAS Y TELECOMUNICACIONES

CARRERA DE ELECTRÓNICA Y
TELECOMUNICACIONES

DOCENTE

ING. SENDEY VERA

PROYECTO

LABORATORIO DE ELECTRÓNICA II

PARALELO

ELECTRÓNICA 6/1

SEMESTRE

SEXTO

LA LIBERTAD – ECUADOR

2018 – 2019
ÍNDICE
GRUPO 1

1.-DISEÑO DE LA BAQUELITA E INTERCONEXIÓN DE DIODOS LED DE


DESPLAZAMIENTO (LED1 Y LED 2) PARA PRESENTACIÓN DE DATOS Y
CONEXIÓN INTERFAZ PARA TRASMISIÓN DE DATOS HACIA EL PANEL
LED 1 Y LED 2 (DESPLAZAMIENTO)

INTRODUCCION:

OBJETIVO GENERAL

OBJETIVO ESPECIFICO

MARCO TEÓRICO

¿Qué ES UN WS2812B?:

DISEÑO DE LA BAQUELITA E INTERCONEXIÓN DE DIODOS LED DE


DESPLAZAMIENTO

REPRESENTACION DE PANEL:

LISTA DE MATERIALES:

ESPECIFICACIONES DE CONSUMO:

GRUPO 2

6,7. DISEÑO DE INTERFAZ INALAMBRICA PARA ENVIO DE DATOS AL


PANEL LED1 Y AL PANEL LED2

TRABAJAR CON MODULOS BLUETOOTH PARA EL ENVIO DE DATOS

DESARROLLO DEL CODIGO PARA ENVIO DE DATOS EN ARDUINO

7. DISEÑO DE APLICACIÓN PARA CELULAR PARA ENVIÓ DE DATOS


PANEL LED1

PLATAFORMAS UTILIZADAS

DESARROLLO DE LA APLICACIÓN

8. DISEÑO DE APLICACIÓN PARA CELULAR PARA ENVIÓ DE DATOS


PANEL LED2

TRABAJAR EN MY APP INVENTOR Y ANDROID STUDIO


DESARROLLO DE LA APLICACIÓN EN APP INVENTOR

GRUPO 3

9. DISEÑO DE CRONOMETRO APLICADO EN ARDUINO PARA ENVIO DE


DATOS AL PANEL LED 1 Y 2

TEMPORIZADOR PARA JUEGOS DE BASKETBALL

CRONOMETRO PARA LOS PARTIDOS DE FUTBOL

10.DISEÑO DE APLICACIÓN MÓVIL PARA EL LED 1 Y LED 2


GRUPO 1
INTEGRANTES: ADRIANA CASTILLO LINDAO, FRANKLIN LOPEZ SILVA,
MAURICIO MUÑOZ RODRIGUEZ, MARIO PILCO TOMALÀ, LISSETTE
SANTISTEVAN CATUTO, TANIA TOMALÀ QUINDE, ZULLY TUMBACO
REYES

1.-DISEÑO DE LA BAQUELITA E INTERCONEXIÓN DE


DIODOS LED DE DESPLAZAMIENTO (LED1 Y LED 2)
PARA PRESENTACIÓN DE DATOS Y CONEXIÓN
INTERFAZ PARA TRASMISIÓN DE DATOS HACIA EL
PANEL LED 1 Y LED 2 (DESPLAZAMIENTO)
INTRODUCCION:

Una Pantalla de LED es un dispositivo electrónico conformado por Leds, que


puede desplegar datos, información, imágenes, vídeos, etc. a los espectadores
cercanos a la misma. Se caracteriza por estar compuesto por diodos emisores
de luz o Leds, derivada de las siglas inglesas LED.

Los LEDs RGB consisten, como se puede ver en la fotografía de la derecha, en


tres leds (un rojo, un azul y un verde) que se combinan para emitir luz blanca a
diferentes temperaturas. Son de baja potencia y se pueden utilizar cientos o
incluso miles. El punto fuerte de los LEDs RGB es su capacidad de ofrecer una
amplia gama de colores. Esto es posible ya que, al utilizar tres LEDs de
diferentes colores, el color verde no tiene tanta intensidad como la de los LEDs
blancos y se obtiene una densidad espectral de los colores más pura. De este
modo es posible reproducir algunos colores que en pantallas LCD CCFL no
sería posible.

WS2812B es una fuente de luz LED de control inteligente en la que el circuito


de control y el chip RGB están integrados. Un paquete de 5050 componentes
incluye internamente el cierre de datos del puerto digital inteligente y la
amplificación de la señal circuito de accionamiento ficticio.
También incluye un oscilador interno de precisión y una corriente constante
programable de voltaje de 12 V, parte de control e-nt, que garantiza de manera
efectiva la altura del color de la luz del punto de píxel coherente. El protocolo
de transferencia de datos utiliza un solo modo de comunicación NZR. Después
del reinicio de encendido del píxel, el puerto DIN recibe los datos del
controlador, el primer píxel recopila los datos iniciales de 24 bits y luego los
envía al seguro interno de datos, los otros datos que se remodelan por la señal
interna que modifican el circuito de amplificación enviado a la siguiente
cascada píxel a través del puerto DO. Después de la transmisión para cada
píxel, la señal para reducir 24bit. pixel adopta auto resha-ping la tecnología de
transmisión, que hace que el número de píxeles en cascada no se limite a la
transmisión de la señal, solo depende de la velocidad de transmisión de la
señal.

OBJETIVO GENERAL

Diseñar un panel con tiras Led de desplazamiento y fijo de 4 cifras para


presentación de datos que se transmitirán por medio de una conexión interfaz
(Arduino uno) e inalámbrica (BLUETOOTH) para poder editar los datos a través
de una aplicación diseñada por los estudiantes, con el fin de utilizarlos como
cronometro deportivo y marcador inalámbrico.

OBJETIVO ESPECIFICO

 Aplicar en integrar los conocimientos adquiridos en diferentes materias


de la carrera.

 Comunicarse con facilidad por escrito, estructurando el contenido del


texto y los soportes gráficos para facilitar la comprensión.

 Analizar los resultados y pruebas realizadas sobre el proyecto con el fin


de emitir unas conclusiones que recojan tanto las aportaciones
concretas del desarrollo realizado como las líneas futuras que surjan del
mismo.
MARCO TEÓRICO
¿Qué ES UN WS2812B?:

Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada,
por lo que es posible variar el color de cada LED de forma individual (a
diferencia de las tiras RGB convencionales en las que todos los LED cambian
de color de forma simultánea).

Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x
5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único
encapsulado los 3 colores RGB. La genial novedad del WS2812B (y resto de
familia) es añadir un integrado dentro de cada LED, que permite acceder a
cada pixel de forma individual. Por este motivo este tipo de LED se denominan
“individual addressable”.

Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde


dotar de iluminaciones distintas zonas con una única tira, animaciones
complejas, o incluso generar pantallas enteras de alta luminosidad.

¿CÓMO FUNCIONA UN WS2812B?

El funcionamiento de un WS2812b es realmente ingenioso. Cada LED dispone


de un integrado que almacena 3 bytes (24 bits), que corresponden con los 3
colores del RGB. Cada pixel puede tener 256 niveles en 3 colores, lo que
supone un total de 16.777.216 posibles colores. Cuando un LED recibe un flujo
de bytes, almacena los últimos bytes recibidos y trasmite los que contenía al
siguiente LED. Finalmente, con una señal de “resetcode” cada LED muestra el
último valor almacenado. Esta genial idea permite hacer configuraciones de
múltiples LED, en los que únicamente tenemos que comunicarnos con el
primero de ellos y cada LED se actúa de transmisor de la secuencia a los LED
posteriores. Además, permite que podamos encadenar o dividir tiras de LED y
cualquier fragmento seguirá funcionando porque todos los LED tienen
exactamente el mismo comportamiento. Cada vez que un punto trasmite al
siguiente una señal, realiza una reconstrucción de forma que la distorsión y el
ruido no se acumulan. Esto permite alimentar tiras de más de 5m sin necesidad
de dispositivos adicionales. La transmisión de 0 y 1 y resetcode se realiza
mediante señales pulsadas temporizadas.

 Un 0 se realiza por un pulso HIGH de 0,35 us, seguido de un periodo


LOW de 0,9.

 Un 1 se realiza por un pulso HIGH de 0,9us y LOW 0,35us.

La

frecuencia de funcionamiento es superior a 400Hz/s. Esto permite que se


puedan animar más de 1024 puntos a una tasa refresco de 30fps. Para más
información y detalles sobre su funcionamiento, os aconsejamos consultar el
Datasheet del WS2182B.

ESQUEMA MONTAJE

El esquema eléctrico para conectar LED WS2812b es sencillo. Cada LED


alimenta al siguiente, por lo cual solo tendremos que conectar con el primer
elemento de la formación. Disponemos de 3 pines, 2 de alimentación (5V y
GND) y entrada de datos (Din) para recibir los datos desde Arduino.
DISEÑO DE LA BAQUELITA E INTERCONEXIÓN DE DIODOS
LED DE DESPLAZAMIENTO

Diseño de la baquelita e interconexión de diodos led de desplazamiento (LED1)

Diseño de la baquelita e interconexión de diodos led fijo hasta 4 cifras (LED2)


Diseño de baquelita para tiras led con sofware Proteus

COMPOSICIÓN DE DATOS 24 BITS


APLICACIÓN TÍPICA DEL CIRCUITO

REPRESENTACION DE PANEL:

Ilustración 1. Panel pequeño.

Total del consumo 54.24A con una fuente de 60 A para abastecer los Led’s.
PRECIO DE LOS COMPONENTES A UTILIZAR

LISTA DE MATERIALES:
1. Fuente De Poder Altek 750w Slim
2. Metro Tira Led Rgb Direccionable Ws2812b Arduino
3. Borneras
4. Arduino uno
5. Resistencias 330 ohm
6. PCB
7. Cables macho hembra
8. Aluminio compuesto
9. Cables para las tiras led metro

ESPECIFICACIONES DE CONSUMO:

LED WS2182b

Consume unos 60mA (0,3W), (20mA por cada componente de color) Esto
supone un consumo de 9W para 30 LED, y 18W para 60 LED, lo que es mucha
potencia en una fuente de 5V.

Como vamos a utilizar 15 metros de tiras leds y cada metro vienen 60 leds.

900 leds (60 mA)


Total = 54A
Arduino Mega
200mA cada uno
Total = 200mA
Consumo del Bluetooth
Total= 40mA
Total de consumo
54A + 200mA + 40mA= 54.24A

GRUPO 2
INTEGRANTES: SAMANTHA GUAMAN, CARLOS PARRALES, JOSUÉ
PLAZA, CRISTHIAN MUÑOZ.

6,7. DISEÑO DE INTERFAZ INALAMBRICA PARA ENVIO


DE DATOS AL PANEL LED1 Y AL PANEL LED2

TRABAJAR CON MODULOS BLUETOOTH PARA EL ENVIO DE


DATOS

Módulos bluetooth. Este dispositivo ayudará a la comunicación de los datos


con la pantalla LED, estos módulos son convenientes de usar, ya que se
pueden programar en la plataforma de arduino, la cual es muy factible para
dicho proyecto.

Un módulo para poder trabajar podría ser el modelo Hc-06 el cual tiene las
siguientes características.

 Especificación bluetooth v2.0 + EDR (Enhanced Data Rate)


 Modo esclavo (Solo puede operar en este modo)
 Puede configurarse mediante comandos AT (Deben escribirse en
mayúscula)
 Chip de radio: CSR BC417143
 Frecuencia: 2.4 GHz, banda ISM
 Modulación: GFSK (Gaussian Frequency Shift Keying)
 Antena de PCB incorporada
 Potencia de emisión: ≤ 6 dBm, Clase 2
 Alcance 5 m a 10 m
 Sensibilidad: ≤ -80 dBm a 0.1% VER
 Velocidad: Asincrónica: 2 Mbps (max.) /160 kbps, sincrónica: 1 Mbps/1
Mbps
 Seguridad: Autenticación y encriptación (Password por defecto: 1234)
 Perfiles: Puerto serial Bluetooth
 Módulo montado en tarjeta con regulador de voltaje y 4 pines
suministrando acceso a VCC, GND, TXD, y RXD
 Consumo de corriente: 30 mA a 40 mA
 Voltaje de operación: 3.6 V a 6 V
 Dimensiones totales: 1.7 cm x 4 cm aprox.
 Temperatura de operación: -25 ºC a +75 ºC

DESARROLLO DEL CODIGO PARA ENVIO DE DATOS EN


ARDUINO

A continuación, presentaremos un código de conexión básico para el envío de


datos utilizando comandos AT en el módulo Hc-06.

El Módulo Bluetooth HC-06 permite la configuración de algunos de sus


parámetros de funcionamiento mediante el uso de comando AT. Los comandos
AT son una lista de comandos que inician siempre con las letras AT, estos
comandos son enviados por medio de un puerto Serie por lo que
necesitaremos un Arduino o Conversor USB Serial para poder enviar los
comandos desde nuestra PC.
Algunos parámetros que vienen por defecto se muestran a continuación:
- Nombre por defecto: “linvor” o “HC-06”
- Código de emparejamiento por defecto: 1234
- La velocidad por defecto (baud rate): 9600
El Módulo HC-06 viene configurado de fábrica como "Esclavo" (Slave) y no
puede ser cambiado a "Maestro" como si lo permite el módulo HC-05.
Modos de trabajo del HC-06:
El Módulo Bluetooth HC-06 tiene dos estados de funcionamiento los cuales es
importante conocer:
 E1) Modo AT (Desconectado):
- Entra a este modo tan pronto alimentamos el módulo, y cuando no se ha
establecido una conexión bluetooth con ningún otro dispositivo...
- EL LED del módulo está parpadeando (frecuencia de parpadeo del LED es de
102ms).
- En este modo es cuando se debe enviar los comandos AT en caso se quiera
configurar algún parámetro, si se envían otros datos diferentes a los comandos
AT, el HC-06 los ignorará.

E2) Modo Conectado:

- Entra a este modo cunado se establece una conexión con otro dispositivo
bluetooth.

- El LED permanece encendido sin parpadear.

- Todos los datos que se ingresen al HC-06 por el Pin RX se trasmiten por
bluetooth al dispositivo conectado, y los datos recibidos se devuelven por el pin
TX. La comunicación es transparente para el programador.

- En este Modo el HC-06 no puede interpretar los comandos AT.

Conexión entre la PC y el Módulo HC-06:

Entendido lo anterior, veamos las conexiones para configurar el HC-06.


Se puede hacer un programa o "sketch" en Arduino que haga toda la
configuración, pero nosotros lo haremos manualmente desde la PC, esto lo
podemos hacer de dos formas:

Hacer la comunicación entre la PC y el módulo de forma indirecta a través de


un Arduino:
Y su conexión en la placa arduino sería la siguiente.

Ahora es necesario compilar y cargar el siguiente sketch que hemos preparado,


que como vemos lee el Monitor Serial de nuestro IDE y se lo envía serialmente
hacia los pines RXD y TXD de nuestro módulo HC-06.
#include <SoftwareSerial.h> // Incluimos la librería SoftwareSerial
SoftwareSerial BT (10,11); // Definimos los pines RX y TX del Arduino
conectados al Bluetooth
void setup()
{
BT.begin(9600); // Inicializamos el puerto serie BT que hemos creado
Serial.begin(9600); // Inicializamos el puerto serie
}
void loop()
{
if(BT.available()) // Si llega un dato por el puerto BT se envía al monitor
serial
{
Serial.write(BT.read());
}
if(Serial.available()) // Si llega un dato por el monitor serial se envía al puerto
BT
{
BT.write(Serial.read());
}
}

Hacer la comunicación entre la PC y el módulo de forma


Directa usando un Conversor USB-Serial:

Y si conexión seria la siguiente.

Configurando el Módulo HC-06:

En nuestro ejemplo usaremos un conversor USB serial PL2303 que se ha


instalado en nuestra PC como puerto serial "COM5", por lo que antes de abrir
el Monitor serial en el IDE Arduino debemos escoger dicho puerto.

Es bueno recordar que para enviar los comandos AT, nuestro HC-06 debe
estar en Modo AT, esto significa sin conexión bluetooth con otro dispositivo o
verificar que LED del HC-06 esté parpadeando.
Una vez hecho las configuraciones y conexión correspondientes, abrimos
el Monitor serial del IDE de Arduino, también podemos usar
cualquier otro monitor serial como: Termite.

En la parte inferior del monitor debemos escoger “No hay fin de línea” y la
velocidad “9600 baud” (la velocidad por defecto de nuestro HC-06, si se lo ha
cambiado poner la velocidad correspondiente)

Realizado lo anterior, podemos ahora enviar los comandos AT a nuestro


Bluetooth:
Test de comunicación:
Lo primero es comprobar si nuestro bluetooth responde a los comandos AT
Enviar: AT
Recibe: OK
Si recibimos como respuesta un OK entonces podemos continuar, sino verificar
las conexiones o los pasos anteriores.
Cambiar nombre de nuestro módulo HC-06:
Por defecto nuestro módulo bluetooth se llama “HC-06” o “Linvor” esto se
puede cambiar con el siguiente comando AT
Enviar: AT+NAME<Nombre>   Ejm: AT+NAMERobot
Respuesta: OKsetname     
El nombre puede ser de hasta 20 caracteres como máximo
Cambiar Código de Vinculación:
Por defecto viene con el código de vinculación (Pin) “1234”, para cambiarlo hay
que enviar el siguiente comando AT
Enviar: AT+PIN<Pin>   Ejm: AT+PIN1465
Respuesta: OKsetPIN 

Configurar la velocidad de comunicación:


La velocidad por defecto es de 9600 baudios, para cambiarlo se hace uso del
siguiente comando AT:
Enviar: AT+BAUD<Número>
Respuesta: OK<baudrate>
Donde <Número> equivale a una velocidad de <baudrate>, los valores pueden
ser:
Número---baudrate
  1 ---------1200
  2 ---------2400
  3 ---------4800
  4 ---------9600
  5 ---------19200
  6 ---------38400
  7 ---------57600
  8 ---------115200
7. DISEÑO DE APLICACIÓN PARA CELULAR PARA
ENVIÓ DE DATOS PANEL LED1
PLATAFORMAS UTILIZADAS

App Inventor para Android es una aplicación web de código abierto


originalmente proporcionada por Google y que ahora mantiene el Instituto de
Tecnología de Massachusetts (MIT), que permite a los recién llegados a la
programación de computadoras crear aplicaciones de software para el sistema
operativo Android (OS).

Utiliza una interfaz gráfica muy similar a Scratch y la interfaz de usuario de


StarLogo TNG, que permite a los usuarios arrastrar y soltar objetos visuales
para crear una aplicación que puede ejecutarse en dispositivos Android. En el
proceso de crear App Inventor, Google se basó en una importante investigación
previa en informática educativa, así como en el trabajo realizado en Google en
entornos de desarrollo en línea.

DESARROLLO DE LA APLICACIÓN

Se inicia con la interfaz que la plataforma facilita, tal como los botones, cuadros
de texto, interruptores, listas de comandos, entre otras. En la cual el desarrollo
depende netamente del programador.
El sistema de bloques de la aplicación es lo
primordial para que esta funcione adecuadamente,
de no ser así provocaría errores en el dispositivo.
Como se muestra a continuación el programa esta
basado en la conexión del dispositivo con el panel,
que en este caso será el receptor de la
información que se le proveerá, por lo que se optó
en utilizar un módulo bluetooth.

En el cual nos indica el estado de la conexión:


En el siguiente cuadro de texto se visualiza los servicios y los permisos que
tiene la aplicación en el dispositivo

<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest


xmlns:android="http://schemas.android.com/apk/res/android"
package="appinventor.ai_josueplaza37.Panel" platformBuildVersionCode="26"
platformBuildVersionName="8.0.0">

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permission android:name="android.permission.BLUETOOTH"/>

<application android:debuggable="false" android:icon="@drawable/ya"


android:label="Panel"
android:name="com.google.appinventor.components.runtime.multidex.MultiDexAppl
ication" android:theme="@style/AppTheme">

<activity android:configChanges="keyboard|keyboardHidden|orientation|
screenSize" android:name=".Screen1"
android:windowSoftInputMode="stateHidden">

<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

<activity android:configChanges="keyboardHidden|orientation"
android:name="com.google.appinventor.components.runtime.ListPickerActivity"
android:screenOrientation="behind"/>

<provider
android:authorities="appinventor.ai_josueplaza37.Panel.provider"
android:exported="false" android:grantUriPermissions="true"
android:name="android.support.v4.content.FileProvider">

<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>

</provider>

</application>

</manifest>
8. DISEÑO DE APLICACIÓN PARA CELULAR PARA
ENVIÓ DE DATOS PANEL LED2

TRABAJAR EN MY APP INVENTOR Y ANDROID STUDIO

App Inventor es un entorno de desarrollo de software creado por Google Labs


para la elaboración de aplicaciones destinadas al sistema operativo Android. El
usuario puede, de forma visual y a partir de un conjunto de herramientas
básicas, ir enlazando una serie de bloques para crear la aplicación. El sistema
es gratuito y se puede descargar fácilmente de la web. Las aplicaciones
creadas con App Inventor están limitadas por su simplicidad, aunque permiten
cubrir un gran número de necesidades básicas en un dispositivo móvil.

Android Studio es el entorno de desarrollo integrado oficial para la plataforma


Android. Fue anunciado el 16 de mayo de 2013 en la conferencia Google I/O, y
reemplazó a Eclipse como el IDE oficial para el desarrollo de aplicaciones para
Android. Está basado en el software IntelliJ IDEA de JetBrains y ha sido
publicado de forma gratuita a través de la Licencia Apache 2.0. Está disponible
para las plataformas Microsoft Windows, macOS y GNU/Linux. Ha sido
diseñado específicamente para el desarrollo de Android

DESARROLLO DE LA APLICACIÓN EN APP INVENTOR

1. Primero desarrollamos la interfaz gráfica


Para conectarnos al panel le damos en
conectar y se nos abrirá una lista que nos
mostrará los dispositivos bluetooth más
cercanos y seleccionaremos el del panel
led2, en caso de existir un error en la
aplicación el texto nos mostrara mensaje
diciendo error en la conexión, Ahora para
encender y apagar las luces led del panel,
quienes nos ayudan con eso son los
botones ON Y OFF.
2. Así es como se verá nuestra aplicación al abrirla en nuestro celular.
Para enviar un mensaje solo seleccionamos el cuadro de color blanco y
automáticamente se abre nuestro teclado, donde podremos enviar números y
letras, y ahí tenemos los botones que nos ayudan a enviar el mensaje y a
borrarlo.

Programación por bloques

En este
bloque le decimos a la aplicación que cuando la abrimos, en la parte de texto

se nos va a mostrar desconectado.

Aquí le estamos diciendo que cuando seleccionemos conectar, nos muestre la


lista de dispositivos bluetooths más cercanos.

En este bloque ejecutamos la orden de conectarnos con nuestro módulo de


bluetooth del panel, si todo está correcto nos saldrá en texto conectado, si no
entonces nos
aparecerá un mensaje
diciendo error en la
conexión.
En este bloque le enviamos la orden al panel de encender los leds, nótese que
se envía una palabra en forma de carácter “ON”, que previamente ya debe ser
programa en Arduino, que, al recibir esa señal, nuestras luces led se van a
encender.

De la
misma forma que en el bloque anterior, solo que ahora enviamos el mensaje,
nuestro Arduino tiene que estar programado para cuando reciba la señal “E”
tiene que estar listo para recibir el mensaje que hemos escrito con anterioridad
en la casilla blanca.

Aquí estamos declarando la sentencia de cuando borremos el mensaje, ya no


salga nada en nuestro panel, y tampoco en nuestra aplicación

Este bloque es igual al


bloque donde prendíamos los leds con el botón “ON”

En este último bloque es cuando nos desconectamos del módulo de bluetooth,


entonces nos tiene que aparecer un mensaje que diga desconectado.
Yen resumen este es el código para crear una aplicación capaz de conectarse
y enviar un mensaje a través de bluetooth hacia un panel de luces leds.
GRUPO 3
Nombres: Lenny Guanoluisa, Roger Proaño, Víctor Plúa, Jean Monserrate

9. DISEÑO DE CRONOMETRO APLICADO EN ARDUINO


PARA ENVIO DE DATOS AL PANEL LED 1 Y 2
LITERAL 9 Y 10

TEMPORIZADOR PARA JUEGOS DE BASKETBALL

En este diseño podremos encontrar tres pulsadores que nos permitirá elegir el
tiempo que se tomará en cada partido al finalizar el tiempo encenderá una
alarma indicadora de que el tiempo se ha terminado y que el partido ha
concluido.

Cada linea de codigo se Explica acontinuacioón:

#include <LiquidCrystal.h> //Libreria del display LCD


#define TONO_ERROR 600
#define TIME_INTERVAL 3000

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


int buzzer = 6; //Alarma
int ahoras = 0; //Variable a mostrar por LCD de las horas
int aminutos = 0; //Variable a mostrar por LCD de los minutos
int asegundos = 0; //Variable a mostrar por LCD de los segundos
int segundostotal = 0; //Tiempo total
int msg= 0; //Barrera para el mensaje de bienvenida

int start = A1; //Pulsador de arranque


int empieza = 1024; // Variable para almacenaje del pulsador de arranque

int buth = A5; //Pulsador de Horas


int butm = A4; //Pulsador de Minutos
int buts = A3; //Pulsador de segundos

int varbuth = 0; //Variable para almacenar el valor del pulsador de horas


int varbutm = 0; //Variable para almacenar el valor del pulsador de
minutos
int varbuts = 0; //Variable para almacenar el valor del pulsador de
segundos

void setup()
{
lcd.begin(16, 2); // Configuramos el numero de columnas y filas del LCD.

pinMode(buzzer, OUTPUT); //Pin de alarma --> Salida


pinMode(buth, INPUT); //Pin de pulsador de horas --> Entrada
pinMode(butm, INPUT); //Pin de pulsador de minutos --> Entrada
pinMode(buts, INPUT); //Pin de pulsador de segundos --> Entrada
pinMode(start, INPUT); //Pin de pulsador de arranque --> Entrada

msg = 0; //Barrera del mensaje de bienvenida


empieza = 1024; //Barrera de arranque

varbuth = 1; //Barrera de horas


varbutm = 1; //Barrera de minutos
varbuts = 1; //Barrera de segundos

Serial.begin(9600);
}

void loop()
{
if(msg==0) //Mostramos el mensaje de bienvenida solo una vez
{
lcd.setCursor(0,0);
lcd.print("BIENVENIDOS...");
delay(2500);
msg = 1;
lcd.clear();
}

//-------------------------------------------------------------------------------------------------
// LECTURA DE LOS BOTONES Y ELECCIÓN DEL TIEMPO, NO SALE
DEL BUCLE HASTA PULSAR
// EL BOTON DE ARRANQUE
//-------------------------------------------------------------------------------------------------

do
{

varbuth = analogRead(buth); //Leemos boton de horas


varbutm = analogRead(butm); //Leemos boton de minutos
varbuts = analogRead(buts); //Leemos boton de segundos

if(varbuth > 0) //Si el boton ha sido pulsado, aumentamos las horas


en una unidad
{
ahoras = ahoras + 1 ;
delay(250);
}

if(varbutm > 0) //Si el boton ha sido pulsado, aumentamos los


minutos en una unidad
{
aminutos = aminutos + 1;
if(aminutos == 60) aminutos = 0;
delay(250);
}

if(varbuts > 0) //Si el boton ha sido pulsado, aumentamos los


segundos en una unidad
{
asegundos = asegundos + 1;
if(asegundos == 60) asegundos = 0;
delay(250);
}

lcd.setCursor(0,0);
lcd.print("Elige el tiempo"); //Muestra mensaje y las HH:MM:SS que
vayamos aumentando

lcd.setCursor(4,1);
if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un
"0" delante.
lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S
(1:M:S)
lcd.print(":");

if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone
un "0" delante.
lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S
(H:1:S)

lcd.print(":");
if (asegundos < 10) lcd.print("0"); // Si los segundos son menor que 10,
pone un "0" delante.
lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S
(H:M:1)

} while(analogRead(start) == 0); // Se repite el menu de elegir tiempo hasta


que pulsemos el boton de arranque.

segundostotal = asegundos + (aminutos * 60) + (ahoras * 60 * 60);


//Convierte el tiempo elegido en segundos!!

//-------------------------------------------------------------------------------------------------
// UNA VEZ PULSADO EL BOTON DE ARRANQUE Y ACUMULADO EL
TIEMPO, ENTRA EN EL SIGUIENTE WHILE
// Y NO FINALIZA HASTA TERMINAR LA CUENTA.
//-------------------------------------------------------------------------------------------------

while (segundostotal > 0)


{
delay (1000); //Descontamos en periodos de 1 segundo
segundostotal--;

ahoras = ((segundostotal / 60)/ 60); //Convertimos los segundos totales


en horas
aminutos = (segundostotal / 60) % 60; //Convertimos los segundos totales
en minutos
asegundos = segundostotal % 60; //Convertimos los segundos totales
en periodos de 60 segundos

lcd.setCursor(0,0);
lcd.print("Tiempo restante"); //Mostramos mensaje de tiempo restante

lcd.setCursor(4,1);
if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un
"0" delante.
lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S
(1:M:S)
lcd.print(":");

if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone
un "0" delante.
lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S
(H:1:S)

lcd.print(":");
if (asegundos < 10) lcd.print("0"); // si el valor de segundo esta por debajo
de 9 (unidad) antepone un cero
lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S
(H:M:1)

if (segundostotal == 0) //Si finaliza el tiempo


{
while(1) //Bucle infinito mostrando mensaje y haciendo
parpadear un led
{
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Tiempo");
lcd.setCursor(3,1);
lcd.print("Finalizado");

sonarTono(TONO_ERROR,TIME_INTERVAL);
exit(0);
}
}
}

//------------------------------------
// SONAR TONO
//------------------------------------
void sonarTono(int tono, int duracion)
{
tone(buzzer,tono,duracion);
delay(duracion);
}
CRONOMETRO PARA LOS PARTIDOS DE FUTBOL

En este diseño podremos ver el tiempo de forma ascendente que transcurrira


en un partido de futboll a este cronometro se le incluira un pulsador de Inicio y
un pulsador de pausa, necesario para pasusar el partido tras una falta de algun
jugador.

A continuación breve explicación del codiogo:

#include <LiquidCrystal.h> //Libreria del display LCD


#define TONO_ERROR 600
#define TIME_INTERVAL 3000
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Variables para los cálculos internos del cronómetro
int horas = 0;
int minutos = 0;
int segundos = 0;
int decimas = 0;
long milisegundos = 0;
int pulsador_inicio = A1; // pulsador_inicio en PIN digital 10
int pulsador_pausa = A3; // pulsador_pausa en PIN digital 9
void setup()
{
lcd.begin(16, 2); // Configuramos el numero de columnas y filas del LCD.
// put your setup code here, to run once:
Serial.begin(9600); // Comienzo de la comunicación serie
pinMode(pulsador_inicio, INPUT); // Pin digital 10 como entrada
pinMode(pulsador_pausa, INPUT); // Pin digital 9 como entrada

void loop()
{
// put your main code here, to run repeatedly:
// Si presionamos el pulsador de inicio se pone todo a cero
if(digitalRead(pulsador_inicio) == HIGH)
{
horas = 0;
minutos = 0;
segundos = 0;
decimas = 0;
lcd.clear();
}

// Si presionamos el pulsador de pausa se congela el tiempo hasta que lo


volvamos a presionar
if(digitalRead(pulsador_pausa) == HIGH)
{
delay(200);
while(digitalRead(pulsador_pausa) == LOW);
delay(200);
}

// Se cuentan los milisegundos transcurridos


milisegundos = millis();

// Si el tiempo transcurrido es mayor a una décima de segundo


if(milisegundos % 100 == 0)
{
decimas++;
// Si han pasado 10 décimas de segundo se cuenta un segundo
if(decimas == 10)
{
decimas = 0;
segundos++;
}
// Si han pasado 60 segundos se cuenta un minuto
if(segundos == 60)
{
segundos = 0;
minutos++;
}
// Si han pasado 60 minutos se cuenta una hora
if(minutos == 60)
{
minutos = 0;
horas++;
}
// Mostramos el tiempo a través del LCD
lcd.setCursor(0,0);
if(horas < 10)
{
lcd.print("0");
}
lcd.print(horas);
lcd.print(":");
lcd.setCursor(3,0);
if(minutos < 10)
{
lcd.print("0");
}
lcd.print(minutos);
lcd.print(":");
lcd.setCursor(6,0);
if(segundos < 10)
{
lcd.print("0");
}
lcd.print(segundos);
lcd.print("(");
lcd.setCursor(9,0);
lcd.print(decimas);
lcd.print(")");
}
}

Nota: estas simulaciones fueron realizado bajo una plataforma en linea de


arduino. El siguiente paso de esta programacion sera tranferir los datos de
salida al panel de tiras led ws2812b smart, pero para ello debimos diseñarlo de
esta manera ya que más adelante se tendria que intercabiar ideas y
programacio con la persona encargada de trasferencia de datos del panel de
tiras led.
SIMULACIÓN DE TIRAS LED RGB TIPO SMART WS2812B REALIZADA EN
PROTEUS.

Tema en desarrollo…

10.DISEÑO DE APLICACIÓN MÓVIL PARA EL LED 1 Y


LED 2
¿Qué es App inventor?
En un entorno de desarrollo de aplicaciones para dispositivos Android. Se trata
de servicios basados en la nube por lo que todas las tereas se realizan en un
navegador
.
DISEÑAR
SE AÑADE LISTA DE COMPONENTES

EDITOR DE BLOQUES

ENTORNO DE APLICACIÓN
ENTORNO DE APLICACIÓN PARA LED 1

ENTORNO DE APLICACIÓN PARA LED 2

MENÚ DE LA APP

OPCIÓN 1:
CONEXIÓN BLUETOOTH:

Permite seleccionar la dirección del dispositivo para conectarse.

OPCIÓN 2:

Permite seleccionar el deporte que se va a realizar.

SELECCIÓN DE EQUIPO:

OPCIÓN 1:

cronometro, inicio, pare, reiniciar.

OPCIÓN 2:

Nombres de los quipos, permite editar o ingresar los nombres de los equipos e
inviarlos al panel.

OPCIÓN 3:

Marcador, permite enviar al panel las anotaciones de cada equipo.

También podría gustarte