E2i3 2015/2016 / Mbed 2 deprecated 2014-LCD_RGB_Blacklight_Basics

Dependencies:   mbed

Revision:
0:29b4d3e2ad2b
Child:
1:ba258e2ff0b0
diff -r 000000000000 -r 29b4d3e2ad2b main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Feb 25 08:45:38 2016 +0000
@@ -0,0 +1,127 @@
+/* --- Exercice 3 TP1 - 2015/2016 E2I3 ---*/
+/* --- Pilotage de l'ecran LCD ---*/
+
+/* --- Include des librairies necessaires ---*/
+#include "mbed.h"
+
+/* --- Initialisation des constantes ---*/
+
+I2C link(I2C_SDA, I2C_SCL);     //Initialisation du lien I2C
+const int addr = 0x7C;          //Création de la variable addr ( Adresse pour communiquer avec l'ecran )
+
+/* --- Fonction d'initialisation générale ---*/
+
+void Init(void){
+    char cmd[2];                // Création d'une variable commande qui servira à envoyer un tableau d'ordres à l'écran LCD
+    cmd[0] = 0x80;              // 0x80 indique que la valeur envoyé ensuite est une commande
+    cmd[1] = 0x3C;              // Commande : Power ON et Ecriture sur ligne du haut
+    link.write(addr,cmd,2);     // Envoi de la commande à l'écran
+    wait_us(100);               // Pause de 100us
+    
+    cmd[1] = 0x0F;              // Commande : Paramétrage de l'affichage ( Cursor et Blink ON )
+    link.write(addr,cmd,2);     // Envoi de la commande à l'écran
+    wait_us(100);               // Pause de 100us
+    
+    cmd[1] = 0x01;              // Commande : Display Clear
+    link.write(addr,cmd,2);     // Envoi de la commande à l'écran
+    wait_ms(2);                 // Pause de 2ms
+    
+    cmd[1] = 0x06;              // Commande : Entry Mode Set ( Shift Off & Increment Mode )
+    link.write(addr,cmd,2);     // Envoi de la commande à l'écran
+    wait_us(100);               // Pause de 100us
+}
+
+/* --- Fonction d'initialisation de l'affichage des couleurs sur l'écran LCD ---*/
+
+void initRGB(void){      //
+
+    char cmd[2];                // Création d'une variable commande qui servira à envoyer un tableau d'ordres à l'écran LCD
+    
+    cmd[0] = 0x00;                      //
+    cmd[1] = 0x00;                      //
+    link.write(0xC4,cmd,2);             // Envoi de la commande à l'écran ( ici l'adresse est 0xC4 pour commander le Blacklight )
+    wait_us(100);                       // Pause de 100us
+    
+    cmd[0] = 0x01;                      //
+    cmd[1] = 0x00;                      //
+    link.write(0xC4,cmd,2);             // Envoi de la commande à l'écran
+    wait_us(100);                       // Pause de 100us
+    
+    cmd[0] = 0x08;                      //
+    cmd[1] = 0xAA;                      //
+    link.write(0xC4,cmd,2);             // Envoi de la commande à l'écran
+    wait_us(100);                       // Pause de 100us
+}
+
+/* --- Fonction de changement de couleur ---*/
+/* --- En entrée, trois variables R, G et B ---*/
+
+void setup(char R,char G, char B){  //
+    
+    char cmd[2];                    // Création d'une variable commande qui servira à envoyer un tableau d'ordres à l'écran LCD
+    
+    cmd[0] = 0x02;                  //
+    cmd[1] = B;                     //
+    link.write(0xC4,cmd,2);         //
+    wait_us(100);                   //
+    
+    cmd[0] = 0x03;                  //
+    cmd[1] = G;                     //
+    link.write(0xC4,cmd,2);         //
+    wait_us(100);                   //
+    
+    cmd[0] = 0x04;                  //
+    cmd[1] = R;                     //
+    link.write(0xC4,cmd,2);         //
+    wait_us(100);                   //
+}
+
+/* --- Programme principal ---*/
+
+int main(void){
+    
+    AnalogIn Pot(A0);       // Initialisation du potentiomètre branché en A0
+    char data[12];          // Initialisation du tableau data pour envoyer des caractères sur l'écran LCD
+    char R,G,B;             // Initialisation des variables R,G et B pour la couleur de l'écran LCD
+    
+    Init();                 // Exécution de la fonction d'initialisation générale
+    initRGB();              // Exécution de la fonction d'initialisation des couleurs RGB
+    
+    data[0] = 0x40;         // 0x40 indique que les valeurs envoyé ensuite sont des données
+    data[1] = 'H';          // Indication des caractères à envoyer
+    data[2] = 'e';              
+    data[3] = 'l';
+    data[4] = 'l';
+    data[5] = 'o';
+    data[6] = ' ';
+    data[7] = 'W';
+    data[8] = 'o';
+    data[9] = 'r';
+    data[10] = 'l';
+    data[11] = 'd';
+    
+    link.write(addr,data,12);           // Envoi du tableau data sur l'écran 
+
+/* --- Boucle de test de la valeur du potentiomètre ---*/
+
+    while(1){           //
+        if( (Pot>0.2f) & (Pot<=0.4f)){            // Couleur Rouge si 0.2f<pot<0.4f
+            R = 0xFF;                                   //
+            G = 0x00;                                   //
+            B = 0x00;                                   //
+        }else if( (Pot>0.4f) & (Pot<=0.6f) ){     // Couleur Verte si 0.4f<pot<0.6f
+            R = 0x00;                                   //
+            G = 0xFF;                                   //
+            B= 0x00;                                    //
+        }else if( (Pot>0.6f) ){                   // Couleur Bleu si 0.6f<pot
+            R = 0x00;                                   //
+            G = 0x00;                                   //
+            B = 0xFF;                                   //
+        }else{                                    // Aucune couleur si pot<0.2f
+            R = 0x00;                                   //
+            G = 0x00;                                   //
+            B = 0x00;                                   //
+        }
+        setup(R,G,B);                   //Envoi du nouveau code RGB pour rétroéclairer l'écran de couleur différente
+    }
+}
\ No newline at end of file