E2i3 2015/2016 / Mbed 2 deprecated 2014-LCD_RGB_Blacklight_Basics

Dependencies:   mbed

Committer:
Natsy
Date:
Thu Feb 25 11:07:17 2016 +0000
Revision:
2:70793ff108a5
Parent:
1:ba258e2ff0b0
Good 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 2:70793ff108a5 86 int ValPot;
Natsy 0:29b4d3e2ad2b 87
Natsy 0:29b4d3e2ad2b 88 Init(); // Exécution de la fonction d'initialisation générale
Natsy 0:29b4d3e2ad2b 89 initRGB(); // Exécution de la fonction d'initialisation des couleurs RGB
Natsy 0:29b4d3e2ad2b 90
Natsy 0:29b4d3e2ad2b 91 data[0] = 0x40; // 0x40 indique que les valeurs envoyé ensuite sont des données
Natsy 0:29b4d3e2ad2b 92 data[1] = 'H'; // Indication des caractères à envoyer
Natsy 0:29b4d3e2ad2b 93 data[2] = 'e';
Natsy 0:29b4d3e2ad2b 94 data[3] = 'l';
Natsy 0:29b4d3e2ad2b 95 data[4] = 'l';
Natsy 0:29b4d3e2ad2b 96 data[5] = 'o';
Natsy 0:29b4d3e2ad2b 97 data[6] = ' ';
Natsy 0:29b4d3e2ad2b 98 data[7] = 'W';
Natsy 0:29b4d3e2ad2b 99 data[8] = 'o';
Natsy 0:29b4d3e2ad2b 100 data[9] = 'r';
Natsy 0:29b4d3e2ad2b 101 data[10] = 'l';
Natsy 0:29b4d3e2ad2b 102 data[11] = 'd';
Natsy 0:29b4d3e2ad2b 103
Natsy 1:ba258e2ff0b0 104 link.write(addr,data,12); // Envoi du tableau data à l'écran
Natsy 2:70793ff108a5 105
Natsy 2:70793ff108a5 106
Natsy 2:70793ff108a5 107
Natsy 0:29b4d3e2ad2b 108
Natsy 0:29b4d3e2ad2b 109 /* --- Boucle de test de la valeur du potentiomètre ---*/
Natsy 0:29b4d3e2ad2b 110
Natsy 0:29b4d3e2ad2b 111 while(1){ //
Natsy 2:70793ff108a5 112 char cmd[2]; // Création d'une variable commande qui servira à envoyer un tableau d'ordres à l'écran LCD
Natsy 2:70793ff108a5 113 cmd[0] = 0x80; // 0x80 indique que la valeur envoyé ensuite est une commande
Natsy 2:70793ff108a5 114 cmd[1] = 0x01; // Commande : Power ON et Ecriture sur ligne du haut
Natsy 2:70793ff108a5 115 link.write(addr,cmd,2); // Envoi de la commande à l'écran
Natsy 2:70793ff108a5 116 wait_ms(2); // Pause de 2s
Natsy 2:70793ff108a5 117 sprintf(data," %f",(float)Pot);
Natsy 2:70793ff108a5 118 data[0] = 0x40;
Natsy 2:70793ff108a5 119 link.write(addr,data,6);
Natsy 2:70793ff108a5 120 wait_ms(10);
Natsy 2:70793ff108a5 121
Natsy 2:70793ff108a5 122 if( (Pot<=0.5f)){ // Couleur Rouge si pot<0.5f
Natsy 1:ba258e2ff0b0 123 R = 0x00; // Valeur de R = 0
Natsy 1:ba258e2ff0b0 124 G = 0x00; // Valeur de G = 0
Natsy 1:ba258e2ff0b0 125 B = 0xFF; // Valeur de B = 255
Natsy 2:70793ff108a5 126 }else if( (Pot>0.5f) & (Pot<=0.95f) ){ // Couleur Verte si 0.5f<pot<0.95f
Natsy 2:70793ff108a5 127 R = 0xFF; // Valeur de R = 255
Natsy 2:70793ff108a5 128 G = 0x00; // Valeur de G = 0
Natsy 2:70793ff108a5 129 B= 0xFF; // Valeur de B = 255
Natsy 2:70793ff108a5 130 }else if( (Pot>0.90f) ){ // Couleur Bleu si 0.95f<pot
Natsy 2:70793ff108a5 131 R = 0xFF; // Valeur de R = 0
Natsy 2:70793ff108a5 132 G = 0x00; // Valeur de G = 0
Natsy 2:70793ff108a5 133 B = 0x00; // Valeur de B = 255
Natsy 2:70793ff108a5 134 }/*else{ // Aucune couleur si pot<0.2f
Natsy 1:ba258e2ff0b0 135 R = 0x00; // Valeur de R = 0
Natsy 1:ba258e2ff0b0 136 G = 0x00; // Valeur de G = 0
Natsy 1:ba258e2ff0b0 137 B = 0x00; // Valeur de B = 0
Natsy 2:70793ff108a5 138 }*/
Natsy 0:29b4d3e2ad2b 139 setup(R,G,B); //Envoi du nouveau code RGB pour rétroéclairer l'écran de couleur différente
Natsy 0:29b4d3e2ad2b 140 }
Natsy 0:29b4d3e2ad2b 141 }