E2i3 2015/2016 / Mbed 2 deprecated 2014-LCD_RGB_Blacklight_Basics

Dependencies:   mbed

Committer:
Natsy
Date:
Thu Feb 25 09:24:59 2016 +0000
Revision:
1:ba258e2ff0b0
Parent:
0:29b4d3e2ad2b
Child:
2:70793ff108a5
Child:
3:1718804b469f
Last Version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Natsy 0:29b4d3e2ad2b 1 /* --- Exercice 3 TP1 - 2015/2016 E2I3 ---*/
Natsy 0:29b4d3e2ad2b 2 /* --- Pilotage de l'ecran LCD ---*/
Natsy 0:29b4d3e2ad2b 3
Natsy 0:29b4d3e2ad2b 4 /* --- Include des librairies necessaires ---*/
Natsy 0:29b4d3e2ad2b 5 #include "mbed.h"
Natsy 0:29b4d3e2ad2b 6
Natsy 0:29b4d3e2ad2b 7 /* --- Initialisation des constantes ---*/
Natsy 0:29b4d3e2ad2b 8
Natsy 0:29b4d3e2ad2b 9 I2C link(I2C_SDA, I2C_SCL); //Initialisation du lien I2C
Natsy 0:29b4d3e2ad2b 10 const int addr = 0x7C; //Création de la variable addr ( Adresse pour communiquer avec l'ecran )
Natsy 0:29b4d3e2ad2b 11
Natsy 0:29b4d3e2ad2b 12 /* --- Fonction d'initialisation générale ---*/
Natsy 0:29b4d3e2ad2b 13
Natsy 0:29b4d3e2ad2b 14 void Init(void){
Natsy 0:29b4d3e2ad2b 15 char cmd[2]; // Création d'une variable commande qui servira à envoyer un tableau d'ordres à l'écran LCD
Natsy 0:29b4d3e2ad2b 16 cmd[0] = 0x80; // 0x80 indique que la valeur envoyé ensuite est une commande
Natsy 0:29b4d3e2ad2b 17 cmd[1] = 0x3C; // Commande : Power ON et Ecriture sur ligne du haut
Natsy 0:29b4d3e2ad2b 18 link.write(addr,cmd,2); // Envoi de la commande à l'écran
Natsy 0:29b4d3e2ad2b 19 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 20
Natsy 0:29b4d3e2ad2b 21 cmd[1] = 0x0F; // Commande : Paramétrage de l'affichage ( Cursor et Blink ON )
Natsy 0:29b4d3e2ad2b 22 link.write(addr,cmd,2); // Envoi de la commande à l'écran
Natsy 0:29b4d3e2ad2b 23 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 24
Natsy 0:29b4d3e2ad2b 25 cmd[1] = 0x01; // Commande : Display Clear
Natsy 0:29b4d3e2ad2b 26 link.write(addr,cmd,2); // Envoi de la commande à l'écran
Natsy 0:29b4d3e2ad2b 27 wait_ms(2); // Pause de 2ms
Natsy 0:29b4d3e2ad2b 28
Natsy 0:29b4d3e2ad2b 29 cmd[1] = 0x06; // Commande : Entry Mode Set ( Shift Off & Increment Mode )
Natsy 0:29b4d3e2ad2b 30 link.write(addr,cmd,2); // Envoi de la commande à l'écran
Natsy 0:29b4d3e2ad2b 31 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 32 }
Natsy 0:29b4d3e2ad2b 33
Natsy 0:29b4d3e2ad2b 34 /* --- Fonction d'initialisation de l'affichage des couleurs sur l'écran LCD ---*/
Natsy 0:29b4d3e2ad2b 35
Natsy 0:29b4d3e2ad2b 36 void initRGB(void){ //
Natsy 0:29b4d3e2ad2b 37
Natsy 0:29b4d3e2ad2b 38 char cmd[2]; // Création d'une variable commande qui servira à envoyer un tableau d'ordres à l'écran LCD
Natsy 0:29b4d3e2ad2b 39
Natsy 1:ba258e2ff0b0 40 cmd[0] = 0x00; // Registre à contacter : MODE0
Natsy 1:ba258e2ff0b0 41 cmd[1] = 0x00; // Valeur à écrire dans le registre (0x00) => Registre de réglage
Natsy 0:29b4d3e2ad2b 42 link.write(0xC4,cmd,2); // Envoi de la commande à l'écran ( ici l'adresse est 0xC4 pour commander le Blacklight )
Natsy 0:29b4d3e2ad2b 43 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 44
Natsy 1:ba258e2ff0b0 45 cmd[0] = 0x01; // Registre à contacter : MODE1
Natsy 1:ba258e2ff0b0 46 cmd[1] = 0x00; // Valeur à écrire dans le registre (0x00) => Registre de réglage
Natsy 0:29b4d3e2ad2b 47 link.write(0xC4,cmd,2); // Envoi de la commande à l'écran
Natsy 0:29b4d3e2ad2b 48 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 49
Natsy 1:ba258e2ff0b0 50 cmd[0] = 0x08; // Registre à contacter : LEDOUT
Natsy 1:ba258e2ff0b0 51 cmd[1] = 0xAA; // Valeur à écrire dans le registre (0xAA) => Registre de réglage
Natsy 0:29b4d3e2ad2b 52 link.write(0xC4,cmd,2); // Envoi de la commande à l'écran
Natsy 0:29b4d3e2ad2b 53 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 54 }
Natsy 0:29b4d3e2ad2b 55
Natsy 0:29b4d3e2ad2b 56 /* --- Fonction de changement de couleur ---*/
Natsy 0:29b4d3e2ad2b 57 /* --- En entrée, trois variables R, G et B ---*/
Natsy 0:29b4d3e2ad2b 58
Natsy 0:29b4d3e2ad2b 59 void setup(char R,char G, char B){ //
Natsy 0:29b4d3e2ad2b 60
Natsy 0:29b4d3e2ad2b 61 char cmd[2]; // Création d'une variable commande qui servira à envoyer un tableau d'ordres à l'écran LCD
Natsy 0:29b4d3e2ad2b 62
Natsy 1:ba258e2ff0b0 63 cmd[0] = 0x02; // Emplacement du registre PWM0 pour controler la lumière bleue
Natsy 1:ba258e2ff0b0 64 cmd[1] = B; // Variable contenant la valeur à afficher en bleu ( de 0 à 255 )
Natsy 1:ba258e2ff0b0 65 link.write(0xC4,cmd,2); // Envoi de la commande à l'écran
Natsy 1:ba258e2ff0b0 66 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 67
Natsy 1:ba258e2ff0b0 68 cmd[0] = 0x03; // Emplacement du registre PWM1 pour controler la lumière verte
Natsy 1:ba258e2ff0b0 69 cmd[1] = G; // Variable contenant la valeur à afficher en vert ( de 0 à 255 )
Natsy 1:ba258e2ff0b0 70 link.write(0xC4,cmd,2); // Envoi de la commande à l'écran
Natsy 1:ba258e2ff0b0 71 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 72
Natsy 1:ba258e2ff0b0 73 cmd[0] = 0x04; // Emplacement du registre PWM2 pour controler la lumière rouge
Natsy 1:ba258e2ff0b0 74 cmd[1] = R; // Variable contenant la valeur à afficher en rouge ( de 0 à 255 )
Natsy 1:ba258e2ff0b0 75 link.write(0xC4,cmd,2); // Envoi de la commande à l'écran
Natsy 1:ba258e2ff0b0 76 wait_us(100); // Pause de 100us
Natsy 0:29b4d3e2ad2b 77 }
Natsy 0:29b4d3e2ad2b 78
Natsy 0:29b4d3e2ad2b 79 /* --- Programme principal ---*/
Natsy 0:29b4d3e2ad2b 80
Natsy 0:29b4d3e2ad2b 81 int main(void){
Natsy 0:29b4d3e2ad2b 82
Natsy 0:29b4d3e2ad2b 83 AnalogIn Pot(A0); // Initialisation du potentiomètre branché en A0
Natsy 0:29b4d3e2ad2b 84 char data[12]; // Initialisation du tableau data pour envoyer des caractères sur l'écran LCD
Natsy 0:29b4d3e2ad2b 85 char R,G,B; // Initialisation des variables R,G et B pour la couleur de l'écran LCD
Natsy 0:29b4d3e2ad2b 86
Natsy 0:29b4d3e2ad2b 87 Init(); // Exécution de la fonction d'initialisation générale
Natsy 0:29b4d3e2ad2b 88 initRGB(); // Exécution de la fonction d'initialisation des couleurs RGB
Natsy 0:29b4d3e2ad2b 89
Natsy 0:29b4d3e2ad2b 90 data[0] = 0x40; // 0x40 indique que les valeurs envoyé ensuite sont des données
Natsy 0:29b4d3e2ad2b 91 data[1] = 'H'; // Indication des caractères à envoyer
Natsy 0:29b4d3e2ad2b 92 data[2] = 'e';
Natsy 0:29b4d3e2ad2b 93 data[3] = 'l';
Natsy 0:29b4d3e2ad2b 94 data[4] = 'l';
Natsy 0:29b4d3e2ad2b 95 data[5] = 'o';
Natsy 0:29b4d3e2ad2b 96 data[6] = ' ';
Natsy 0:29b4d3e2ad2b 97 data[7] = 'W';
Natsy 0:29b4d3e2ad2b 98 data[8] = 'o';
Natsy 0:29b4d3e2ad2b 99 data[9] = 'r';
Natsy 0:29b4d3e2ad2b 100 data[10] = 'l';
Natsy 0:29b4d3e2ad2b 101 data[11] = 'd';
Natsy 0:29b4d3e2ad2b 102
Natsy 1:ba258e2ff0b0 103 link.write(addr,data,12); // Envoi du tableau data à l'écran
Natsy 0:29b4d3e2ad2b 104
Natsy 0:29b4d3e2ad2b 105 /* --- Boucle de test de la valeur du potentiomètre ---*/
Natsy 0:29b4d3e2ad2b 106
Natsy 0:29b4d3e2ad2b 107 while(1){ //
Natsy 0:29b4d3e2ad2b 108 if( (Pot>0.2f) & (Pot<=0.4f)){ // Couleur Rouge si 0.2f<pot<0.4f
Natsy 1:ba258e2ff0b0 109 R = 0xFF; // Valeur de R = 255
Natsy 1:ba258e2ff0b0 110 G = 0x00; // Valeur de G = 0
Natsy 1:ba258e2ff0b0 111 B = 0x00; // Valeur de B = 0
Natsy 0:29b4d3e2ad2b 112 }else if( (Pot>0.4f) & (Pot<=0.6f) ){ // Couleur Verte si 0.4f<pot<0.6f
Natsy 1:ba258e2ff0b0 113 R = 0x00; // Valeur de R = 0
Natsy 1:ba258e2ff0b0 114 G = 0xFF; // Valeur de G = 255
Natsy 1:ba258e2ff0b0 115 B= 0x00; // Valeur de B = 0
Natsy 0:29b4d3e2ad2b 116 }else if( (Pot>0.6f) ){ // Couleur Bleu si 0.6f<pot
Natsy 1:ba258e2ff0b0 117 R = 0x00; // Valeur de R = 0
Natsy 1:ba258e2ff0b0 118 G = 0x00; // Valeur de G = 0
Natsy 1:ba258e2ff0b0 119 B = 0xFF; // Valeur de B = 255
Natsy 0:29b4d3e2ad2b 120 }else{ // Aucune couleur si pot<0.2f
Natsy 1:ba258e2ff0b0 121 R = 0x00; // Valeur de R = 0
Natsy 1:ba258e2ff0b0 122 G = 0x00; // Valeur de G = 0
Natsy 1:ba258e2ff0b0 123 B = 0x00; // Valeur de B = 0
Natsy 0:29b4d3e2ad2b 124 }
Natsy 0:29b4d3e2ad2b 125 setup(R,G,B); //Envoi du nouveau code RGB pour rétroéclairer l'écran de couleur différente
Natsy 0:29b4d3e2ad2b 126 }
Natsy 0:29b4d3e2ad2b 127 }