0% encontró este documento útil (0 votos)
323 vistas9 páginas

Temporizador - Arduino + LCD

Armado de temporizador con Arduino y display LCD 16x2

Cargado por

Ezequiel Perez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
323 vistas9 páginas

Temporizador - Arduino + LCD

Armado de temporizador con Arduino y display LCD 16x2

Cargado por

Ezequiel Perez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Temporizador: Arduino + LCD 2 22inepOTIL6IOR2OLe OD RADNANO 1 172 COMENTARIOS Floy quiero hablar de los displays LCD y su control y uso mediante una placa Arduino. El proceso de control de un LCD con Arduino nos abre un frente de interaccidn visual de la electrinica de un modo rapido, sencilloy efcaz 2Qué es un display LCD? De un modo muy resumido, las siglas LCD signifcan “Liquid Cristal Display” o en espaiiol “Pantalla de cristal liquido”, y es una pantalla delgada y plana, formada por un nimero de pixeles en color 0 monocromos colocados delante de una fuente de luz 0 reflectora. (Wikipedia ls, wikipedia ong/wikilP ristal ADs [uso de estas pantalla, esté tan extendide hoy en dia, que précticamente todos los aparatos electrénicos suelen llevarlas, para mejor uso y facilidad de interaccién [Existen muchos tipos de LCD, variando en forma y tamafo, mimero de pixeles color, y la gran mayoria tienen un coste de unos pocos €uros en cualquier tienda de electronica. El que voy a utilizar yo, es del tipo mis sencillo de controlar, y son los displays LCD disefados para interactuar con circuitos integrados, de entrada dle 4/8 bits en paraleio, basados en el controlador Hitachi HDA4780 (hit:/ www sparkéun com/datasheets/t CD/HDAA7SD pd [Estos se caracterizan principalmente por el nlimero de caracteres que son capaces de representar, que viene dado en su datasheet generalmente por tangs niimeros del tipo "BI", "16+2", "204, que significan “Numero de caracteres x Néimero de filas”, asf pues, un display LCD 16»2,e3 capa dle representar 2 ilas de 16 caracteres El display LCD que utilizaré yo (Gracias a Dani (htipu/cuningen wordpress.com) es de 162 caracteres, de fondo verde y caracteres negros con retroiluminacisn led de color verde: (htipsdelectronicavm files,wordpress.com/2011/06/3430-led162b-vhy-pny gue leyendo! (hitpss/electronicavm.wordpress,com/?011/06/22/temporizador-arduino-led/tmore-67 Estos displays se controlan muy facilmente con tna placa Arduino o un PIC y muy pocas lineas de cédigo. Para ello veamos sus pines para saber ‘como se conectan tpslfelectronicavm files wordpress com/201/yled?3.png) = Pin 1 Vss: GND o terra DOOOOOC000000000) ~ Pin 2— Vdd: Alimentacin Veco *3V. OOOOOOUOOOOOoOog} (Algunos pueden alimentarse a3 Vee) ~ Pin 3 Vo: Control del contraste del display, conectamos este pin al terminal variable de un. ha potencidmetro conectade a Vee y Masa en sus terminales extremos, Nea Best = Pin 4 RS: Selecciin de Registro. 2 | vai [ 5 0 logico: Registro de comandos (escritura), eee 1 logico: Registro de datos (escrtura,lectura) a [as [Renter Sl ~Pins- RW: S| E | Emsble (spate) 0 légico: Escritura del LCD. 7 [po [baa 58 1 L6gico: Lectura del LCD. 3 | pt _| baa | po | Dass = Pin 6 Enable: El famoso Enable de casi todos los componentes de la electénica digital. Un 10 [Ds] Dawa 1 logico sefala el inicio de escrtura o lectura del LCD, un 0 lio, desactiva todas las [Da Dae funciones, [ps [Dae 15 | D6 | Date ~ Pin 7-10 - Do/D3: Pines correspondlientes al bus de datos, 1s | D7 [Das TE DO corresponde a bit menos signifcativo. Estos pines nose utilizan si realizamos operaciones sobre el LCD de bis = Pin 11-14 - D4/1D7; Pines correspondientes al bus de datos D7 corresponde al bit més signficativo y puede utlizarse como “Busy Flag", sileemos sobre este pin, un 1 légico nos indicaré que el LCD se encuentra ocupado, ro permitiendonos realizar ninguna operacion hasta que se deshabilite, Ena tabla no aparecen, ya que no todos los displays disponen de los pines 15 y 16, yo he modificado la imagen para afadirlos,y son simplemente: = Pin 15 - Anodo de la retroiluminacién :R + 5. Ahora si, podemos meternos de leno en el control del LCD. Ena web de Arduino (tpy/wwwarduino.ccles) vienen muchos siemplos (httpularduino.cces/Tutorial/HomePage) con sus correspondientes Imagenes de eonexién del LCD con la placa en cuestién, ademés del cédigo para ponerlo en funcionamiento en pocos clicks El cédigo para poner en funcionamiento un LCD es muy sencllo,yse trata simplemente de declarar los pines a utilizar porel LCD, situar el cursor tenel caracter que deseemos escribir (N? caracter, Fila) y escribir sobre el LCD. Arduino simplifca el trabajo de escribir sobre un LCD hasta un punto que resulta muy facil. Aqui un ejemplo de cédigo para escribir una frase sobre un LCD. 2] //eJenplo Frase “Helle World" en LCD con Arduino 3] inctude //incluinos 1a Libreria de control del Leo $] Lsoutcrystat teeta, 1, 5, 4 3, 295 //InkcLlisonos 20 Libreria con los pines 9 vtsltear 2| Yearvegingls, 29; //contiguranos et numero ce caracteres y filas a utilizar > 12| void loop() ¢ 12| ed.sercursor(o, 0); //Situaros el cursor en el caracter @, fila @ 33] led.print(*Hello world") //Esertbinos sobre el LCD wy ‘Yo he preferido hacer algo més interesante que los ejemplos que vienen en dicha web, asi que me he puesto a programar un temporizador. Empezando porla conexién del circuit, la siguiente imagen creada con Extzing (purivzing org! (Fantastico programa freeware y multiplataforma para crear esquemas) nos muestra como conectar el LCD con Arduino y algunos componentes mas necesarios para este proyectllo, como son pulsadores, led 6 un buzzer. (httpsulelectronicavms files wordpress.com/2011i06/esquema.png) El esquema consta de un Arduino UNO, un display LCD 16-2, un potenciémetro para el control de contraste del LCD, un led de sei de fin de temporizacién, y 4 pulsadores con su resistencia Pull-down de 10KQ, los 3 pulsadores cuyos cables son naranje son los que permitian la eleccién. del tiempo (Horas, Minutos y Segundos) mientras que el 4to pulsador, el del cable azul, es que que dard la sefial de inicio del temporizador. Una vez. conectado todo, solo queda la programacién y ponerto en funcionamiento, Mi cédigo es algo largo asi que dejaré el archivo Temporizados.pde (http! /electronicavim comuy.com/Temporizador pd de Arduino para el que uiera descargarlo y echarle un vistazo. Ya funcionar! Temporizador con Arduino + LCD foc rices space for eet © ARDUINO, COMPONENTES FLECTRONICOS ARDUINO, DISPLAY LCD, HD478), VOLTIMETRO 172 comentarios en “Temporizador: Arduino + LCD” Estefania dice: (0109/2005 alas 1204 1 Vota este comentario Hola Buenas tardes, Ya no aparece el eédigo para descargar me manda a otra pagina serias tan amable de enviarmelo. Gracias, RESPONDER MikiCOC dice: 2/07/2016 a las Vota este comentario ‘A mi igual! RESPONDER JHON VERA dice: (0400/2015 9 las 1452 2 Vota este comentario POR FAVOR QUIEN ME PUEDE PASAR EL CODIGO RESPONDER Juan Felipe Acevedo dice: 1210922015 alas O14 a ° ° Vota este comentario Amigo muchas gracias por compartir tus disefos con nosotros, pero por alguna razon no he conseguide bajar el codigo te agradeceria si melo puedes enviar al correo RESPONDER Papa dice: 2UD9/2015 alas 1317 4 ° ° Vota este comentario El proyecto esta bien, Pero sin cddigo no vale para nada. A buscar otto proyecto. Vota este comentario Primero para programar deben estudiar el codigo en base a ejemplos, Estos los consiguen en la pagina ofician de arduino o en la Gui de «ejemplos del compilaror . Hay que tener logica del codigo y saber que hace cada linea. No es satisfactorio para ningun aprendiz solo pedir codigo, copiar y pegar. RESPONDER abe dice ‘5072016 a as 2021 ° ° Vota este comentario andaaaaaa hacete cojer puta loca RESPONDER david dice 2510922015 alas 0859 Vota este comentario amigo por favor me podrias hacer Iigear el codigo, es que lo necesito pronto y el imnk envia a otra pagina RESPONDER John dice: (08/10/2015 2 as 01:53 ‘Vota este comentario ditpulforum arduino.c/index php?topic-90086.0 RESPONDER Fabio dice: 2015 a las Vota este comentario Gostaria do codigo se possivel RESPONDER John dice: (08/10/2015 2 las 01-41 ‘Vota este comentario ppara los que no tienen todavia Ia programacion o codigos de esta pagina visiten hitp forum arduino co/index.php?topic-90086 0 al parecer alguien la tenia y Ia resubio en otta pagina RESPONDER Fabio dice: (08/10/2015 9 las 03:25 ‘Vota este comentario finclude indude define TONO_ERROR 600 define TIME_INTERVAL 3000 LiquidCrystal led, 7, 9,10, 11,12); Inicializar a biblioteca com o niimero de pinos utlizados fi Pinos do UNO {define Linhal AO // Linha 1 do teclado no pino 4 define Linha? Al // Linha 2 do teelado no pino 5 fdefine Linha A2 // Linha 3 do teclado no pino 6 define Linhad A3 // Linha 4 do teelado no pino 7 {define Row! 3// Coluna I do tecado no pino 8 #éefine Row? 4 /} Coluna 2 do teclado no pino 9 define Row3 13 // Coluna 3 do teclado no pino 10 7 {Pinos do Mega {define Linhal 34 // Linha 1 do teclado no pino 34 define Linha2 35 // Lina 2 do teclado no pino 38 {define Linha® 36 /! Linha 3 do teclado no pino 36 ##define Linhad 37 / Linha 4 do teclado no pino 37 {define Row! 38 // Coluna 1 do teclado no pino 38, define Row2 39 // Coluna 2 do teclado no pino 39 {define Row3 40 // Coluna 3 do teclado no pine 40 byte Digito 0; / Variave Digitodigitado byte byte contagem =; / Numero de digitos digitados ‘unsigned long Acumulado =O; Vaiavel Digites acumulados ‘unsigned long Tempo = 0; // variavel Tempo de atraso = Digito Acumulado ‘unsigned Inicio =0; “unsigned int horas = 0; Variavel para moslar no LCD as Horas ‘unsigned int minutos =O; / Varidvel para mostar no LCD as Minutos “unsigned int segundos = 0; // Variével para mostar no LCD as segundos: unsigned int segundostotal =O; //Tempo Total int rele~5; /Rele int buzzer = 6;//Alarme Int msg~ 0; //Barreira para mensagem de boas vindas ae ‘void setup) ( led. begin(16, 2); Defini o numero de colunas elinhas do LD 16%2 pinMode(rele, OUTPUT); /Define o pino como saida pinMode(ouzzer, OUTPUT); //Pino de alarme — Salida msg = 0; (Barrera para mensagem de boas vindas Serial begin(9600); ) WH void loop) ( if{msg-0) Mostrar a mesnsagem de boas vindas apenas uma vez. ( led setCursor(00); led print("Peneirador PVE"), led setCursor(1,1); led print(” Temporizador"); delay(8500); msg; ledicleat: /} Leitura dos botdes de selegao de tempo J] Nao sai do loop ate precionar botio de inicio while (nico = 0) Ndo sai da rotin detelado enguanto Inicio for igual a0 ( Ted setCursor.1 if (horas < 10) led print'0); / Seas horas estio a menos de 10, cologue um "0" na frente as); [Sem esse cdigo, ele mostra assim : HM (IIMS) if (einutos < 10) led print"07; Se as minutos esto a menos de 10, cologue um 0" na frente, led. print{minutos); led. print); if Gegundos < 10) led.print led print{segundos); {1 Se as segundos estio a menos de 10, coloque um for (int porta = 4; porta 0 )digitalWriterel, HIGH; Seo tempo for maior que 0 segundos inicia 0 rele segundostotal ~ segundos + (minutos * 60) + (horas * 40 * 60); //Converteo tempo selecionado em segundos! while (segundostotal >0) ( delay (1000); segundostotal~ horas = ((segundostotal / 60)/ 60); /torna os segundos totais em horas minutos = (egundostotal/ 60) % 60; f/toma os segundos totais em minutos segundos = segundostotal % 60; tora os segundos totais em periodos de 60 segundos led setCursor(0.0): led print(” Tempo Restante”); led. setCursor(4); if (horas < 10) led print(’07, led printthoras); led. print"), if (eimutos < 10) led print); led. print(minutos), led. print if Segundos «< 10) led.print(0"); led. print{segundos); if (segundostotal = 0) ( while(1) ( Ied.clearQ; led setCursort5.0): led.print("Tempo"}, led setCursor(3,1) led print(Finalizado") igitalWrite(tele, LOW); /[Ao fnalizar processo destiga o rele sonarTono(TONO_ERROR,TIME_INTERVAL}; ledicleat); setur; fest); void sonarTonofinttono, int duracion) ( tone(buzzer 4500); delay(1000); {Destigando o buzzer. noTone(buzzer); =3) & (contagem 60) minutos ) if (ontagem >) & (contagem 60) segundos =0; Se segundos maior que 24 faa igual 0. ) ) iF Digito 1 Se minutos maior que 24 faca igual 0 123) jf Se for igual a ¢ equivalente a enter Masa Inicio 1; Sai da rotina do teclado if (Digito = 0x24) / Se for igual a* equivalentea cancela HI Faca contag horas ~0; / Zera Resultado minutos = 0; Zera Resultado segundos = 0; / Zera Resultado Ignacio dice: 29/11/2015 alas 19:33 ‘Vota este comentario ‘oye amigo, podrias ayudarme diciendo que elementos lleva este proyecto? te lo agradeceria mucho RESPONDER Ignacio dice: 2O/112015 3 las 1803 8 Vota este comentario alguien podria decirme que elementos se necesitan para llevar a cabo este proyecto? Io agradeceria mucho RESPONDER John dice: Vota este comentario Unarduino de cualquiera (uno, mega, ..) un buzzer, 3 interuptores, una pantalla led para arduino, y To demas solo es cables (las conexiones del arduino ala led los interruptores y la fuente de alimentacién del arduino RESPONDER Lucas Cruz dice: 29/05/2016 3 las 154 8 Vota este comentario code please RESPONDER Antonio dice: (01/07/2016 3 las 0739 10 Vota este comentario yet Padnano Podrias ayudarme con un eédigo, necesito hace go parecide a esto pero con unos motores podrias ayudarme?? RESPONDER gabriel dice: 4082016 8 as 03.97 1. ° ° Vota este comentario Hasta ahora no recibo los cédigos de programacién, RESPONDER BLOG DE WORDPRESS.COM,

También podría gustarte