Écran LCD TV bricolage avec Arduino et Smart à distance (4 / 5 étapes)

Étape 4: Faire le codage et la connexion de la télécommande intelligente

La prochaine étape est techniquement le plus difficile, le codage. Ne lisent pas tout le code ici, ce code se trouve dans le langage de code C, obtenir un environnement de programmer une carte avec le récepteur qui reçoit les vagues de la télécommande intelligente, j’ai un formulaire distant intelligent et kit de Osepp et il est compatible avec l’arduino. Copiez ce code sur votre environnement et la programmer à l’arduino ou le Conseil qui est connecté à l’écran LCD/TV.

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

LCD-AVR-4d.c - utilisez un HD44780U en fonction LCD doté d’un processeur Atmel ATmega Copyright (C) 2013 Donald Weiman (weimandn ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier sous les termes de la GNU General Public License telle que publiée par la Free Software Foundation, soit la version 3 de la licence, ou (à votre choix) toute version ultérieure. Ce programme est distribué dans l’espoir qu’il sera utile, mais sans aucune garantie ; sans même la garantie implicite de qualité marchande ou d’ADEQUATION a un usage particulier. Voir la GNU General Public License pour plus de détails. Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Si ce n’est pas le cas, voir. * / / *** Fichier: LCD-AVR-4d.c Date : 16 septembre 2013 cible : compilateur ATmega328 : avr-gcc (AVR Studio 6) auteur : Donald Weiman Summary : interface de données de 4 bits, pavillon occupé ne pas mis en œuvre. Aucune broche LCD peut être connecté à n’importe quel port d’e/s disponible. Comprend une routine de chaîne simple d’écrire. * / / *** Notes de programme *** ce programme utilise une interface de données 4 bits, mais n’utilise pas l’indicateur occupé pour déterminer quand le contrôleur LCD est prêt. La ligne LCD RW (broche 5) n’est pas connectée à la place, et il doit être connecté à la broche GND pour le programme de la fonction. Tous les délais sont plus longs que ceux spécifiés dans la plupart des fiches afin d’accueillir plus lentement que les modules LCD normaux. Cette exigence est bien documentée, mais presque toujours ignorée. L’information est définie dans une note en bas de la colonne de droite (temps d’exécution) de l’instruction. Les lignes de quatre données ainsi que les lignes de deux contrôle peuvent être implémentés sur aucune broche I/O disponible de n’importe quel port. Ce sont les connexions utilisées pour ce programme:------| ATmega328 || LCD | | | | | | PD7|---------------->| D7 || PD6|---------------->| D6 || PD5|---------------->| D5 || PD4|---------------->| D4 | | | | D3 | | | | D2 | | | | D1 | | | | D0 | | | | | | PB1|---------------->| E | | | GND---> |RW || PB0|---------------->| RS | ----------- ---------- **************************************************************************/

#define F_CPU 16000000UL

#include #include

Interface LCD (doit convenir avec le schéma ci-dessus) / / Assurez-vous que la broche RW LCD est connectée au GND #define lcd_D7_port PORTD / / lcd D7 connexion #define lcd_D7_bit PORTD7 #define lcd_D7_ddr DDDR

#define lcd_D6_port PORTD / / lcd D6 connexion #define lcd_D6_bit PORTD6 #define lcd_D6_ddr DDDR

#define lcd_D5_port PORTD / / lcd D5 connexion #define lcd_D5_bit PORTD5 #define lcd_D5_ddr DDDR

#define lcd_D4_port PORTD / / lcd D4 connexion #define lcd_D4_bit PORTD4 #define lcd_D4_ddr DDDR

#define lcd_E_port PORTB / lcd activer / broche #define lcd_E_bit PORTB1 #define lcd_E_ddr DDRB

#define lcd_RS_port PORTB / / lcd Registre sélectionnez NIP #define lcd_RS_bit PORTB0 #define lcd_RS_ddr DDRB

Écran LCD module information #define lcd_LineOne 0 x 00 / / début de la ligne 1 #define lcd_LineTwo 0 x 40 / / début de la ligne 2 //#define lcd_LineThree 0 x 14 / / début de la ligne 3 (20 x 4) //#define lcd_lineFour 0 x 54 / / début de la ligne 4 (20 x 4) //#define lcd_LineThree 0 x 10 / / début de la ligne 3 (16 x 4) //#define lcd_lineFour 0 x 50 / / début de la ligne 4 (16 x 4)

LCD instructions #define lcd_Clear 0b00000001 / / Remplacez tous les caractères ASCII « espace » #define lcd_Home 0b00000010 / / retourner le curseur à la première position sur la première ligne #define lcd_EntryMode 0b00000110 / / déplacer le curseur de gauche à droite sur lecture/écriture #define lcd_DisplayOff 0b00001000 / / activer désactiver #define lcd_DisplayOn 0b00001100 l’affichage / / affichez sur, curseur hors, ne pas cligner des yeux caractère #define lcd_FunctionReset 0b00110000 / / reset le LCD #define lcd_FunctionSet4bit 0b00101000 / / 4 bits données , 2 lignes d’affichage, 5 x 7 polices #define lcd_SetCursor 0b10000000 / / définir la position du curseur

Programme de ID uint8_t program_author [] = "Donald Weiman" ; uint8_t program_version [] = "LCD-AVR - 4D (CCG)" ; uint8_t program_date [] = "16 septembre 2013" ;

Les Prototypes de fonction 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) ;

/ *** Code de programme principal *** / int main (void) {/ / configurer les broches de microprocesseur pour les lcd_D7_ddr de lignes de données | = (1 <

configurer les broches de microprocesseur pour les lcd_E_ddr de lignes de commande | = (1 <

initialiser le contrôleur LCD tel que déterminé par le définit (instructions de LCD) lcd_init_4d() ; initialiser l’écran LCD pour une interface 4 bits

afficher la première ligne de renseignements lcd_write_string_4d(program_author) ;

Placez le curseur au début du deuxième ligne lcd_write_instruction_4d(lcd_SetCursor | lcd_LineTwo) ; _delay_us(80) ; 40 uS retarder (min)

afficher la deuxième ligne de renseignements lcd_write_string_4d(program_version) ;

boucle sans fin while(1) ; return 0 ; } / *** Fin du Code programme principal ***

* === 4-bit LCD fonctions === * / / * nom : lcd_init_4d but : initialiser le module LCD pour une interface de données 4 bits entrée : assimile (instructions de LCD) mis en place pour l’opération de sortie souhaitée : aucun paramètre Notes : temps retard plutôt que de vérifier l’indicateur occupé * / void lcd_init_4d(void) {/ / Power-up delay _delay_ms(100); / / initial 40 retard mSec

IMPORTANT - à ce stade le module LCD est en mode 8 bits et il s’attend à recevoir / / 8 bits de données, un bit sur chacune de ses lignes de 8 données, chaque fois que la ligne « E » est pulsée. / / Puisque le module LCD est câblé pour le mode 4 bits, uniquement les lignes de quatre données supérieures sont connectés à / / le microprocesseur et les lignes de quatre données inférieures sont généralement laissés ouverts. Par conséquent, quand / / la ligne « E » est pulsée, le contrôleur LCD indiquera quelles que soient les données a été mises en place sur la partie supérieure / / quatre données et les lignes de quatre données inférieurs sera élevés (en raison d’un circuit interne de pull-up). / / Heureusement l’instruction « FunctionReset » ne se soucie pas sur ce qui est sur les quatre bits inférieurs si / / cette instruction peut être envoyée sur tout les quatre lignes de données disponibles et elle sera interprétée / / correctement par le contrôleur LCD. La sous-routine de « lcd_write_4 » accomplira cela si le / / lignes de contrôle ont déjà été configurés correctement.

Mettre en place les lignes r et E pour la sous-routine de « lcd_write_4 ». lcd_RS_port & = ~(1<

Réinitialiser le lcd_write_4(lcd_FunctionReset) de contrôleur LCD ; première partie de _delay_ms(10) de remise à zéro de séquence ; retard de 4,1 mS (min)

lcd_write_4(lcd_FunctionReset) ; deuxième partie de _delay_us(200) de remise à zéro de séquence ; retard de 100uS (min)

lcd_write_4(lcd_FunctionReset) ; troisième partie de reset séquence _delay_us(200) ; ce retard est omis dans la feuille de données

Préliminaire Public Function Set instruction - utilisé seulement pour définir le mode de 4 bits. Le nombre de lignes ou la police ne peut être défini en ce moment, puisque le contrôleur est encore dans le / / mode 8 bits, mais le mode de transfert de données peut être modifiée, puisque ce paramètre est déterminé par un / / des quatre bits supérieurs de l’instruction. lcd_write_4(lcd_FunctionSet4bit) ; Définissez le mode 4 bits _delay_us(80) ; 40uS retard (min)

Fonction instruction Set lcd_write_instruction_4d(lcd_FunctionSet4bit) ; la valeur mode, lignes et _delay_us(80) de polices ; 40uS retard (min)

Les trois instructions sont spécifiées dans la feuille de données dans le cadre de la routine d’initialisation, / / donc c’est une bonne idée (mais probablement pas nécessaire) pour les faire juste comme spécifié et puis refaire / / plus tard si l’application requiert une configuration différente.

Commande marche/arrêt affichage instruction lcd_write_instruction_4d(lcd_DisplayOff) ; tourner l’affichage OFF _delay_us(80) ; 40uS retard (min)

Désactivez l’affichage d’instructions lcd_write_instruction_4d(lcd_Clear) ; Désactivez l’affichage RAM _delay_ms(4) ; retard de 1,64 mS (min)

// ; Entrée en mode instruction lcd_write_instruction_4d(lcd_EntryMode) ; la valeur désirée Maj caractéristiques _delay_us(80) ; 40uS retard (min)

Il s’agit de la fin de l’initialisation du contrôleur LCD comme spécifié dans la feuille de données, mais l’écran / / a été laissé en l’État OFF. Il s’agit d’un bon moment pour activer l’affichage sur ON. Commande marche/arrêt affichage instruction lcd_write_instruction_4d(lcd_DisplayOn) ; tourner l’affichage ON _delay_us(80) ; 40uS retard (min)}

/*........................................................................... Nom : lcd_write_string_4d ; Objectif : afficher une chaîne de caractères sur l’entrée de l’écran LCD: (corde) est la chaîne soit affiché sortie : aucun paramètre Notes : temps retard plutôt que de vérifier l’indicateur occupé * / void lcd_write_string_4d (uint8_t theString[]) {volatile int i = 0; / / caractère compteur * / while (theString [i]! = 0) {lcd_write_character_4d(theString[i]); i ++; _delay_us(80); / / retard de 40 uS (min)}}

/*........................................................................... Nom : lcd_write_character_4d but : envoyer un octet de données au registre de données LCD entrée: (nominatif), c’est les informations à envoyer pour les données de registre de sortie : aucun paramètre Notes : ne traite pas de RW (pavillon occupé n’est pas implémenté) * /

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

/*........................................................................... Nom : lcd_write_instruction_4d but : envoyer un octet de données dans le registre d’instruction LCD entrée: (theInstruction) est l’information qui seront envoyés au registre instruction Exit : aucun paramètre Notes : ne traite pas de RW (pavillon occupé n’est pas implémenté) * / void lcd_write_instruction_4d(uint8_t theInstruction) {lcd_RS_port & = ~(1<

/*........................................................................... Nom : lcd_write_4 but : envoyer un octet de données au module LCD entrée: (theByte) est l’information qui seront envoyés au registre désiré LCD RS est configuré pour le registre de LCD désiré E est faible RW est sortie basse : aucun paramètre Notes : utiliser des retards ou l’indicateur occupé * / void lcd_write_4(uint8_t theByte) {lcd_D7_port & = ~(1<

lcd_D6_port & = ~(1<

lcd_D5_port & = ~(1<

lcd_D4_port & = ~(1<

écrire les données / / "Adresse temps de calage" (40 nS) lcd_E_port | = (1 <

La très prochaine chose que vous pourriez faire est facultative, vous pouvez vous connecter à votre téléphone intelligent ou Samsung à l’arduino, c’est assez difficile à faire, mais vous pourriez télécharger une application et avoir ce code de la télécommande avec l’application et personnalisez-le.

Articles Liés

Écran LCD I2C bricolage avec entrées

Écran LCD I2C bricolage avec entrées

Le LCD parallèle typique utilisé avec un Arduino (16 x 2 ou 20 x 4) possède 16 broches. Seulement 6 broches d'e/s sont requises sur l'Arduino, mais que se passe-t-il si vous pourriez descendre qu'à deux broches d'e/s et ont encore ces broches disponi
Dj Laser bricolage avec Arduino

Dj Laser bricolage avec Arduino

Cette vidéo c'est une petite démonstration de la puissance de l'Arduino. Consiste en deux ou trois LASERs que danser de façon synchrone avec la musique à l'aide de différents effets et mouvements, dès que je peux, je vais vous expliquer les démarches
Comment connecter un écran LCD de série avec un Arduino Nano

Comment connecter un écran LCD de série avec un Arduino Nano

Dans une précédente instructable j'ai démontré comment connecter l'écran LCD série à un Arduino UNOHier, je voulais utiliser deux Arduinos pour un projet de RF et s'est rendu compte que je ne sais pas comment faire pour utiliser l'écran LCD série ave
Comment faire une veste Emoticon avec écran LCD

Comment faire une veste Emoticon avec écran LCD

Concept :Je voudrais faire une veste qui a un petit écran LCD pour créer les sous-textes pour l'interaction humaine interpersonnelle. L'utilisateur utiliserait un limitée « clavier » avec des boutons et des capteurs de force sous clés de silicone sou
Écrire des messages dans un écran de nokia5110 avec arduino.

Écrire des messages dans un écran de nokia5110 avec arduino.

Avec les instructions suivantes, vous serez en mesure d'imprimer facilement des messages dans un nokia 5110 LCD à l'aide d'un microcontroleur Arduino.Ce qu'il faut :Matériel :Écran LCD écran LCD Nokia 5110Arduino (dans cet exemple, j'utilise le modèl
Détecter la température ambiante et l’affichage sur écran LCD en utilisant Simulink et Arduino UNO

Détecter la température ambiante et l’affichage sur écran LCD en utilisant Simulink et Arduino UNO

Détection et affichage de la température ambiante en utilisant Arduino sont très fréquent, et vous y trouverez plein de tutoriel instructablesand autres sites similaires. Mais, je n'ai pas trouvé n'importe où, n'importe quel tutoriel Comment faire ce
Interface Lcd avec Arduino débutant Guide

Interface Lcd avec Arduino débutant Guide

Partie requis1. JHD162A LCD2. carte Arduino3. potentiomètre4. fils de raccordement deCe qui est LCD ?Écran LCD (affichage à cristaux liquides) est la technologie utilisée pour les écrans portables et autres ordinateurs plus petits. Comme les diodes é
Connexion d’un écran LCD à l’Arduino

Connexion d’un écran LCD à l’Arduino

dans ce instructable nous regarderons comment connecter un écran LCD parallèle à un Arduino. L'écran LCD que j'utilise utilise l'interface commune de HD44780 .  Plusieurs écrans LCD ont cela, vous pouvez généralement dire par l'interface 16 broches. 
Réinitialiser votre horloge circadienne « horloge biologique de corps » avec Arduino

Réinitialiser votre horloge circadienne « horloge biologique de corps » avec Arduino

Source d'inspiration pour réinitialiser l'horloge biologique de votre corps et améliorer votre hygiène santé et sommeil avec ArduinoUne horloge circadienne n'est pas une horloge que nous regardons l'heure. C'est plutôt un chronométreur et un oscillat
Affichage de la température sur écran LCD

Affichage de la température sur écran LCD

J'ai réunira deux projets dans ce instructable.Je démontrerai comment mesurer la température à l'aide d'une sonde de température LM35 et un Arduino, puis affichez la température sur une série LCD 16 X 2 en Celsius et Fahrenheit.Vous pouvez trouver le
Commencer avec des capteurs de distance et Arduino

Commencer avec des capteurs de distance et Arduino

Il s'agit d'un guide de démarrage pour l'utilisation des capteurs de distance avec Arduino et un traitement. Nous avons utilisé ces capteurs :SHARP GP2Y0A21YK0FUnité de capteur de mesure de distanceComposé d'une combinaison intégrée de PSD (détecteur
Jeu de Tetris avec Arduino

Jeu de Tetris avec Arduino

Développer Tetris jeu via Arduino et apprendre à développer un jeu de simulation rapidement pour reproduire le classique. Tetris Jeux aide maker pour étudier l'utilisation de l'écran LCD et le programme Arduino.Démo de :Arduino advanced kit fourni pa
Comment utiliser l’affichage à cristaux liquides avec arduino tutoriel

Comment utiliser l’affichage à cristaux liquides avec arduino tutoriel

Salut tout le monde espère que vous êtes bien:)Aujourd'hui je suis va pour vous apprendre à utiliser un écran LCD display avec Arduino (juste un message monde d'enfer).Si vous êtes débutant ou vous jamais joué avec afficheur LCD avec Arduino avant, c
Mettez en surbrillance une ligne unique de l’écran LCD, comment à

Mettez en surbrillance une ligne unique de l’écran LCD, comment à

La bibliothèque de cristaux liquides a deux fonctions très utiles scrollDisplayLeft() et scrollDisplayRight(). Ces fonctions, faites défiler l'écran entier. Autrement dit, ils faire défiler les lignes sur un écran LCD de 1602 et toutes les quatre lig