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@1:ba258e2ff0b0, 2016-02-25 (annotated)
- 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?
| 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 | 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 | } |