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
main.cpp@2:70793ff108a5, 2016-02-25 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |