BRICOLAJE TV de pantalla LCD con Arduino y mando a distancia inteligente (4 / 5 paso)

Paso 4: Hacer la codificación y conectar el remoto inteligente

El siguiente paso es técnicamente la más dura, la codificación. No leer todo el código aquí, este código es en el lenguaje de código C, conseguir un entorno para programar una junta con el receptor que recibe las ondas del mando a distancia inteligente, tengo una forma remota inteligente y kit de Osepp y es compatible con arduino. Copia este código en su entorno y programa al arduino o placa que se conecta a la pantalla de LCD/TV.

/****************************************************************************

LCD-AVR-4d.c - uso un HD44780U basado en LCD con procesador Atmel ATmega Copyright (C) 2013 Donald Weiman (weimandn este programa es software libre: usted puede redistribuirlo y/o modificarlo bajo los términos de la GNU General Public License publicada por la Free Software Foundation, ya sea versión 3 de la licencia o (a su opción) cualquier versión posterior. Este programa se distribuye con la esperanza de que será útil, pero sin ninguna garantía; ni siquiera la garantía implícita de comerciabilidad o idoneidad para un propósito PARTICULAR. Consulte la GNU General Public License para más detalles. Usted debe han recibido una copia de la GNU General Public License con este programa. Si no, a ver. * / / *** Archivo: LCD-AVR-4d.c Fecha: 16 de septiembre de 2013 objetivo: ATmega328 compilador: avr-gcc (AVR Studio 6) autor: Donald Weiman Summary: interfaz de datos de 4 bits, bandera ocupado no implementado. Cualquier pin de LCD puede conectarse a cualquier puerto disponible de la entrada-salida. Incluye una rutina de cadena simple de la escritura. * / / *** Programa notas *** este programa utiliza una interfaz de datos de 4 bits pero no utiliza la bandera de ocupado para determinar cuando el controlador del LCD es listo. La línea de LCD RW (pin 5) no está conectada a la marcha y deben conectarse a GND para el programa a la función. Los retrasos son más largos que los especificados en fichas más para acomodar más lento de lo normales módulos LCD. Este requisito está bien documentada pero casi siempre ignorado. La información es en una nota en la parte inferior de la columna de la derecha (tiempo de ejecución) de la instrucción set. Las líneas de cuatro datos así como las líneas de dos control pueden implementarse en cualquier pin de I/O disponible de cualquier puerto. Estas son las conexiones que se utilizan para este programa:------| ATmega328 || LCD | | | | | | PD7|---------------->| D7 || PD6|---------------->| D6 || PD5|---------------->| D5 || PD4|---------------->| D4 | | | | D3 | | | | D2 | | | | D1 | | | | D0 | | | | | | PB1|---------------->| E | | | Tierra---> |RW || PB0|---------------->| RS | ----------- ---------- **************************************************************************/

#define F_CPU 16000000UL

#include #include

Interfaz LCD (debe estar de acuerdo con el diagrama de arriba) / Asegúrese de que el pin RW del LCD está conectado a GND #define lcd_D7_port PORTD / / lcd D7 conexión #define lcd_D7_bit PORTD7 #define lcd_D7_ddr DDRD

#define lcd_D6_port PORTD / / lcd D6 conexión #define lcd_D6_bit PORTD6 #define lcd_D6_ddr DDRD

#define lcd_D5_port PORTD / / lcd D5 conexión #define lcd_D5_bit PORTD5 #define lcd_D5_ddr DDRD

#define lcd_D4_port PORTD / / lcd D4 conexión #define lcd_D4_bit PORTD4 #define lcd_D4_ddr DDRD

#define lcd_E_port PORTB / / lcd activar pin #define lcd_E_bit PORTB1 #define lcd_E_ddr DDRB

#define lcd_RS_port PORTB / / lcd Registro seleccione pin #define lcd_RS_bit PORTB0 #define lcd_RS_ddr DDRB

LCD módulo información #define lcd_LineOne 0 x 00 / / comienzo de la línea 1 #define lcd_LineTwo 0 x 40 / / comienzo de la línea 2 //#define lcd_LineThree 0x14 / / inicio de la línea 3 (20 x 4) //#define lcd_lineFour 0x54 / / inicio de la línea 4 (20 x 4) //#define lcd_LineThree 0 x 10 / / comienzo de la línea 3 (16 x 4) //#define lcd_lineFour 0 x 50 / / comienzo de la línea 4 (16 x 4)

Pantalla LCD instrucciones #define lcd_Clear 0b00000001 / / reemplazar todos los caracteres con ASCII 'espacio' #define lcd_Home 0b00000010 / / retorno de cursor a la primera posición en primera línea #define lcd_EntryMode 0b00000110 / / cambio de cursor de izquierda a derecha en lectura y escritura #define lcd_DisplayOff 0b00001000 / / activar la visualización de #define lcd_DisplayOn 0b00001100 / / pantalla on, cursor off, no parpadear carácter #define lcd_FunctionReset 0b00110000 / rearme el LCD #define lcd_FunctionSet4bit 0b00101000 / / 4 bits datos , pantalla de 2 líneas, 5 x 7 font #define lcd_SetCursor 0b10000000 / ajustar la posición del cursor

Programa ID uint8_t program_author [] = "Donald Weiman"; uint8_t program_version [] = "LCD-AVR - 4 d (CCG)"; uint8_t program_date [] = "Sep 16, 2013";

Prototipos de la función void lcd_write_4(uint8_t); void lcd_write_instruction_4d(uint8_t); void lcd_write_character_4d(uint8_t); void lcd_write_string_4d(uint8_t *); void lcd_init_4d(void);

/ *** El código del programa principal *** / int Main {/ / configurar los pines del microprocesador para la lcd_D7_ddr de líneas de datos | = (1 <

configurar los pines de microprocesador para el control las líneas lcd_E_ddr | = (1 <

inicializar el controlador del LCD según lo determinado por la define lcd_init_4d() (instrucciones LCD); inicializar la pantalla LCD para una interfaz de 4 bits

Mostrar la primera línea de información lcd_write_string_4d(program_author);

coloca el cursor al inicio de la segunda línea lcd_write_instruction_4d(lcd_SetCursor | lcd_LineTwo); _delay_us(80); Estados Unidos 40 retardo (min)

Mostrar la segunda línea de información lcd_write_string_4d(program_version);

while(1) de bucle sin fin; return 0; } / *** Fin del código principal del programa ***

* === 4 bits LCD funciones === * / / * nombre: lcd_init_4d propósito: Inicializa el módulo LCD para una interfaz de datos de 4 bits entrada: equivale (instrucciones del LCD) configuración para la operación deseada salida: sin parámetros notas: usos tiempo demoras en lugar de comprobar la bandera de ocupado * / void lcd_init_4d(void) {/ encendido retardo _delay_ms(100); / / inicial retraso de MS 40

IMPORTANTE - en este momento el módulo LCD está en el modo de 8 bits y está esperando para recibir / / 8 bits de datos, un bit en cada una de sus líneas de 8 datos, cada vez que la línea 'E' es pulsada. / / Desde el módulo LCD está conectado para el modo 4 bits, sólo las líneas de cuatro datos superiores están conectadas a / el microprocesador y las líneas de cuatro datos inferiores son típicamente a la izquierda abiertas. Por lo tanto, cuando / / la línea 'E' es pulsada, el controlador LCD leerá lo que los datos se ha establecido en la parte superior / cuatro datos líneas y las líneas de cuatro datos inferiores será altas (debido a la circuitería interna de pull-up). / / Afortunadamente la instrucción 'FunctionReset' no se preocupa lo que está en los cuatro bits inferiores así / / esta instrucción puede enviarse en apenas las cuatro líneas de datos disponibles y se interpretará / / correctamente por el controlador del LCD. La subrutina 'lcd_write_4' cumplirá este si la / / líneas de control previamente se han configurado correctamente.

Configurar las líneas RS y E para la subrutina de 'lcd_write_4'. lcd_RS_port & = ~(1<

Restablecer los lcd_write_4(lcd_FunctionReset) de controlador de LCD; primera parte del _delay_ms(10) de la secuencia de reset; 4,1 mS retardo (min)

lcd_write_4(lcd_FunctionReset); segunda parte de _delay_us(200) de la secuencia de reset; 100uS delay (min)

lcd_write_4(lcd_FunctionReset); tercera parte del _delay_us(200) de la secuencia de reset; este retraso se omite en la hoja de datos

Preliminar instrucción función - solo permite configurar el modo de 4 bits. El número de líneas o la fuente no se puede establecer en este momento ya que el controlador es todavía en el / / modo de 8 bits, pero el modo de transferencia de datos puede ser cambiado ya que este parámetro está determinado por una / / de los superiores cuatro bits de la instrucción. lcd_write_4(lcd_FunctionSet4bit); establecer modo de 4 bits _delay_us(80); 40uS delay (min)

Función Set instrucción lcd_write_instruction_4d(lcd_FunctionSet4bit); seleccionar modo, líneas y fuente _delay_us(80); 40uS delay (min)

Las siguientes tres instrucciones que se especifican en la hoja de datos como parte de la rutina de inicialización, / / por lo que es una buena idea (pero probablemente no es necesario) hacer sólo como se especifica y luego rehacerlos / / más adelante si la aplicación requiere una configuración diferente.

Pantalla ON/OFF Control instrucción lcd_write_instruction_4d(lcd_DisplayOff); girar pantalla OFF _delay_us(80); 40uS delay (min)

Clara lcd_write_instruction_4d(lcd_Clear) de la instrucción de pantalla; borrar pantalla RAM _delay_ms(4); 1,64 mS retardo (min)

// ; Entrada modo instrucción lcd_write_instruction_4d(lcd_EntryMode); conjunto cambio deseado características _delay_us(80); 40uS delay (min)

Este es el final de la inicialización del controlador de LCD como se especifica en la hoja de datos, pero la pantalla / / se ha dejado en la condición de apagado. Este es un buen momento para apagar la pantalla back ON. Pantalla ON/OFF Control instrucción lcd_write_instruction_4d(lcd_DisplayOn); Gire la pantalla ON _delay_us(80); 40uS delay (min)}

/*........................................................................... Nombre: lcd_write_string_4d; Propósito: mostrar una cadena de caracteres en la entrada de LCD: (theString) es la cadena que muestra la salida: sin parámetros notas: usos tiempo demoras en lugar de comprobar la bandera ocupada * / void lcd_write_string_4d (uint8_t theString[]) {volátil int i = 0; / / carácter de contador/mientras (theString [i]! = 0) {lcd_write_character_4d(theString[i]); i ++; _delay_us(80); / uS 40 retardo (min)}}

/*........................................................................... Nombre: lcd_write_character_4d propósito: enviar un byte de información para el registro de datos del LCD entrada: (datos) es la información a los datos de registro de salida: sin parámetros notas: no se ocupa de RW (bandera de ocupado no está implementado) * /

void lcd_write_character_4d(uint8_t theData) {lcd_RS_port | = (1 <

/*........................................................................... Nombre: lcd_write_instruction_4d propósito: enviar un byte de información para el registro de instrucción LCD entrada: (theInstruction) es la información a enviarse el registro de instrucción salida: sin parámetros notas: no se ocupa de RW (bandera de ocupado no está implementado) * / void lcd_write_instruction_4d(uint8_t theInstruction) {lcd_RS_port & = ~(1<

/*........................................................................... Nombre: lcd_write_4 propósito: enviar un byte de información al entrada del módulo del LCD: (theByte) es la información al registro deseado LCD RS está configurado para el deseado registro de LCD E es baja RW salida baja: sin parámetros notas: utilizar retardos o la bandera de ocupado * / void lcd_write_4(uint8_t theByte) {lcd_D7_port & = ~(1<

lcd_D6_port & = ~(1<

lcd_D5_port & = ~(1<

lcd_D4_port & = ~(1<

escribir los datos / dirección de tiempo de preparación (40 nS) lcd_E_port | = (1 <

La siguiente cosa que podría hacer es opcional, puede conectar su teléfono inteligente o Samsung a arduino, esto es bastante difícil hacerlo, pero pude descargar una app y tiene este código desde el mando IR con la aplicación y personalizar.

Artículos Relacionados

Cómo utilizar la pantalla LCD con arduino tutorial

Cómo utilizar la pantalla LCD con arduino tutorial

Hola todos espero que bien :)Hoy yo soy va a enseñarle a utilizar un LCD display con Arduino (sólo un mensaje de mundo infierno).Si eres un principiante o nunca jugaste con pantalla de LCD con Arduino antes, este instructable definitivamente para ust
Conectar una pantalla LCD con Arduino

Conectar una pantalla LCD con Arduino

en este instructable nos va a ver cómo conectar un LCD paralelo a un Arduino. La pantalla LCD que estoy usando utiliza la interfaz de HD44780 común.  Muchos LCDs tienen esto, usted puede decir generalmente por la interfaz de 16 pines. Sólo necesita 1
Interfaz lcd con arduino

Interfaz lcd con arduino

entretela de 16 x 2 lcd con arduinoPantalla de cristal líquido es una parte muy esencial en los dispositivos encajados forma claculater para máquinas de impresión, pantalla LCD funciona con más tensión, con dos es más controladores ic en módulo del l
Cómo interfaz LCD con Arduino

Cómo interfaz LCD con Arduino

Hoy en este instructable va a mostrar cómo puede interactuar un LCD con arduino.Su instrcutable DIY muy fácil que todo el mundo lo hizo en menos de 10 minutos...Este proyecto también le ayuda a mostrar los datos en la pantalla LCD que se recoge de lo
Termohigrómetro con reloj y pantalla LCD en Arduino UNO

Termohigrómetro con reloj y pantalla LCD en Arduino UNO

Estos 7 pasos le conducirá a través de la "construcción" de un termo-higrómetro con reloj en el Arduino UNO.Datos y tiempo, la humedad y temperatura se mostrará en una pantalla LCD 16 x 2 pantalla. Si ha adquirido una pantalla LCD y quiero saber
Regla ultrasónica con pantalla LCD y Arduino

Regla ultrasónica con pantalla LCD y Arduino

debeUna pantalla LCDUn Arduino Uno (tengo un escudo de ethernet en la mía, que no cualquier cosa en este proyecto, pero es un dolor para tomar encendido y apagado)Un módulo de Sensor de ultrasonidos20 - 30 cables de puenteEste es un proyecto bastante
A la temperatura. Sensor pantalla en LCD con Arduino

A la temperatura. Sensor pantalla en LCD con Arduino

Lo que básicamente hace:Este proyecto de arduino detecta la temperatura del sensor de temperatura. Obviamente cuando detecta la temperatura muestra en el monitor serial, que personalmente creo que es muy incómodo. Ahora para resolver que incorporan u
Distancia transmisor con receptor LCD con Arduino inalámbrico

Distancia transmisor con receptor LCD con Arduino inalámbrico

Este instructables muestra cómo hacer un sensor de distancia de arduino powered con telémetro del ultasonic que la distancia medida en el receptor. En este proyecto utilizamos un transmisor de 433 mhz y un receptor para enviar los datos desde uno ard
Escribir mensajes en una pantalla nokia5110 con arduino.

Escribir mensajes en una pantalla nokia5110 con arduino.

Con las siguientes instrucciones podrás imprimir fácilmente mensajes en un nokia 5110 LCD pantalla con la ayuda de un Arduino microcontroler.Lo que necesitamos:Hardware:Pantalla LCD pantalla LCD de Nokia 5110Arduino (en este ejemplo estoy usando el m
Medida de la distancia del LCD con Arduino

Medida de la distancia del LCD con Arduino

Y después de la publicación de algunos tutoriales robóticas, decidió moverse en más detalle acerca de los sensores. Para empezar de con elegir un sensor de ultrasonidos y un Arduino como el microcontrolador.Este Instructable es puramente thosewho son
Pantalla LCD en Arduino UNO

Pantalla LCD en Arduino UNO

lista de hardware:1 arduiniotablero de pan 23 pantalla LCD 16 * 2registro 10 4 kPaso 1: Pinconfiguration Configurar el pin según el picturre,considerar que otros objetos como 10k registrar.Este programa en Arduino LCDLibrary.Programa:/*Librería Liqui
Interfaz Lcd con Arduino para principiantes guía

Interfaz Lcd con Arduino para principiantes guía

Es parte de ser necesario1. JHD162A LCD2 placa Arduino3. potenciómetro4 los cables de puente¿Qué es LCD?LCD (pantalla de cristal líquido) es la tecnología utilizada para las exhibiciones en portátiles y otros equipos más pequeños. Como diodo emisor d
Streaming de vídeo desde la tarjeta SD para Nokia LCD con Arduino

Streaming de vídeo desde la tarjeta SD para Nokia LCD con Arduino

Durante mucho tiempo con que pensé en reproducción de video audio no fue posible en el Arduino. Entonces un día decidí darle una oportunidad y que resultó para ser más sencillo de lo que pensaba.Me decidí a escribir los pasos de un instructivo en ben
Pantalla LCD de Arduino Twitter

Pantalla LCD de Arduino Twitter

a.k.a. el complicado gratuitamente bidireccionalmente comunicar pantalla de Twitter de desplazamiento basados en Arduino y notificador.----Este proyecto fue hecho principalmente como una excusa para aprender a usar pantallas LCD de caracteres con mi