Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- 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