LCD I2C Library New depot for last update : https://github.com/YSI-LPS/lib_LCD_i2c_SPTLYI

Dependents:   TD1_exo1 TD1_exe1_suite TP3_exo1 TP3_exo2 ... more

New depot for last update : https://github.com/YSI-LPS/lib_LCD_i2c_SPTLYI

Library for Character / Alphanumeric LCD Module 2 lines of 16 characters - 2 x 16

http://fr.farnell.com/midas/mccog21605b6w-sptlyi/lcd-cog-2x16-stn-vert-b-l-i2c/dp/2063208

Committer:
YSI
Date:
Wed May 02 15:03:36 2018 +0000
Revision:
13:b0c643bbf1fa
Parent:
11:86ebe0fc54f9
update interrupt bug

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YSI 1:a805daa83dd0 1 /** LCD i2c SPTLYI class
YSI 4:38d0fe9c8eb6 2 *
YSI 4:38d0fe9c8eb6 3 * @purpose library for i2c LCD
YSI 4:38d0fe9c8eb6 4 *
YSI 4:38d0fe9c8eb6 5 * Utilisée pour écrire sur l'afficheur i2c SPTLYI 2x16.
YSI 1:a805daa83dd0 6 *
YSI 5:feba12f32d06 7 * http://fr.farnell.com/midas/mccog21605b6w-sptlyi/lcd-cog-2x16-stn-vert-b-l-i2c/dp/2063208
YSI 5:feba12f32d06 8 *
YSI 2:cd7437c66c6b 9 * Copyright (c) 2014, cstyles (http://mbed.org)
YSI 2:cd7437c66c6b 10 *
YSI 1:a805daa83dd0 11 * Exemple:
YSI 1:a805daa83dd0 12 * @code
YSI 1:a805daa83dd0 13 * #include "mbed.h"
YSI 1:a805daa83dd0 14 * #include "lib_LCD_i2c_SPTLYI.h"
YSI 9:0acc7e2330c6 15 *
YSI 9:0acc7e2330c6 16 * LCD_I2C LCD;
YSI 9:0acc7e2330c6 17 * //LCD_I2C LCD(p28, p27, p26, 0x7C); //sda, scl, rst, only 4 slave address 0x7C 0x7D 0x7E 0x7F
YSI 1:a805daa83dd0 18 *
YSI 4:38d0fe9c8eb6 19 * int main()
YSI 4:38d0fe9c8eb6 20 * {
YSI 9:0acc7e2330c6 21 * while(1)
YSI 9:0acc7e2330c6 22 * {
YSI 9:0acc7e2330c6 23 * for(int i = 0; i < 9999; i++)
YSI 9:0acc7e2330c6 24 * {
YSI 9:0acc7e2330c6 25 * LCD.clear();
YSI 9:0acc7e2330c6 26 * LCD.print(i);
YSI 9:0acc7e2330c6 27 * wait(0.25);
YSI 9:0acc7e2330c6 28 * }
YSI 9:0acc7e2330c6 29 * }
YSI 1:a805daa83dd0 30 * }
YSI 1:a805daa83dd0 31 * @endcode
YSI 2:cd7437c66c6b 32 * @file lib_LCD_i2c_SPTLYI.h
YSI 2:cd7437c66c6b 33 * @date Jan 2014
YSI 2:cd7437c66c6b 34 * @author Yannic Simon
YSI 1:a805daa83dd0 35 */
YSI 1:a805daa83dd0 36
YSI 0:0549f4c4896c 37 #ifndef DEF_lib_LCD_i2c_SPTLYI_H
YSI 0:0549f4c4896c 38 #define DEF_lib_LCD_i2c_SPTLYI_H
YSI 0:0549f4c4896c 39
YSI 0:0549f4c4896c 40 #include "mbed.h"
YSI 4:38d0fe9c8eb6 41 #include <cstdarg>
YSI 0:0549f4c4896c 42
YSI 3:7ac1d2432a96 43 /** LCD_I2C class
YSI 3:7ac1d2432a96 44 */
YSI 0:0549f4c4896c 45 class LCD_I2C : public I2C
YSI 0:0549f4c4896c 46 {
YSI 0:0549f4c4896c 47 public:
YSI 1:a805daa83dd0 48 /** Creer une instance LCD_I2C
YSI 9:0acc7e2330c6 49 * sur les pins sda, scl, rst avec 1 des 4 adresses possiblent 0x7C 0x7D 0x7E 0x7F
YSI 5:feba12f32d06 50 *
YSI 9:0acc7e2330c6 51 * @param pin_sda par defaut p28
YSI 9:0acc7e2330c6 52 * @param pin_scl par defaut p27
YSI 9:0acc7e2330c6 53 * @param pin_rst par defaut p26
YSI 9:0acc7e2330c6 54 * @param address par defaut 0x7C
YSI 1:a805daa83dd0 55 */
YSI 9:0acc7e2330c6 56 LCD_I2C(PinName pin_sda = p28, PinName pin_scl = p27, PinName pin_rst = p26, int address = 0x7C);
YSI 0:0549f4c4896c 57
YSI 1:a805daa83dd0 58 /** Efface l'afficheur et renvoie le curseur en position X = 0 et Y = 0
YSI 1:a805daa83dd0 59 *
YSI 1:a805daa83dd0 60 * @param aucun
YSI 1:a805daa83dd0 61 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 62 */
YSI 0:0549f4c4896c 63 int clear(void);
YSI 4:38d0fe9c8eb6 64
YSI 1:a805daa83dd0 65 /** renvoie le curseur en position X = 0 et Y = 0
YSI 1:a805daa83dd0 66 *
YSI 1:a805daa83dd0 67 * @param aucun
YSI 1:a805daa83dd0 68 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 69 */
YSI 0:0549f4c4896c 70 int return_home_cursor(void);
YSI 4:38d0fe9c8eb6 71
YSI 4:38d0fe9c8eb6 72 /** positionne le curseur sur la ligne (0 à 39)
YSI 1:a805daa83dd0 73 *
YSI 1:a805daa83dd0 74 * @param X est la position sur la ligne
YSI 1:a805daa83dd0 75 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 76 */
YSI 10:246c6f2dc45b 77 int set_position_cursor(int X);
YSI 4:38d0fe9c8eb6 78
YSI 4:38d0fe9c8eb6 79 /** positionne le curseur horizontalement (0 à 39) et verticalement (0 à 1)
YSI 1:a805daa83dd0 80 *
YSI 1:a805daa83dd0 81 * @param X est la position sur la ligne
YSI 5:feba12f32d06 82 * @param Y est la position sur la colone
YSI 1:a805daa83dd0 83 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 84 */
YSI 10:246c6f2dc45b 85 int set_position_cursor(int X, int Y);
YSI 4:38d0fe9c8eb6 86
YSI 1:a805daa83dd0 87 /** renvoie la position horizontale du curseur
YSI 1:a805daa83dd0 88 *
YSI 1:a805daa83dd0 89 * @param aucun
YSI 4:38d0fe9c8eb6 90 * @returns X est la position sur la ligne (0 à 39)
YSI 1:a805daa83dd0 91 */
YSI 1:a805daa83dd0 92 int get_X_position_cursor(void);
YSI 4:38d0fe9c8eb6 93
YSI 1:a805daa83dd0 94 /** renvoie la position verticale du curseur
YSI 1:a805daa83dd0 95 *
YSI 1:a805daa83dd0 96 * @param aucun
YSI 4:38d0fe9c8eb6 97 * @returns Y est la position sur la colone (0 à 1)
YSI 1:a805daa83dd0 98 */
YSI 1:a805daa83dd0 99 int get_Y_position_cursor(void);
YSI 4:38d0fe9c8eb6 100
YSI 4:38d0fe9c8eb6 101 /** positionne le curseur au début de la ligne suivante
YSI 1:a805daa83dd0 102 *
YSI 1:a805daa83dd0 103 * @param aucun
YSI 1:a805daa83dd0 104 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 105 */
YSI 0:0549f4c4896c 106 int shift_line_cursor(void);
YSI 4:38d0fe9c8eb6 107
YSI 1:a805daa83dd0 108 /** active l'affichage du curseur
YSI 1:a805daa83dd0 109 *
YSI 1:a805daa83dd0 110 * @param aucun
YSI 1:a805daa83dd0 111 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 112 */
YSI 1:a805daa83dd0 113 int turn_on_cursor(void);
YSI 4:38d0fe9c8eb6 114
YSI 1:a805daa83dd0 115 /** désactive l'affichage du curseur
YSI 1:a805daa83dd0 116 *
YSI 1:a805daa83dd0 117 * @param aucun
YSI 1:a805daa83dd0 118 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 119 */
YSI 1:a805daa83dd0 120 int turn_off_cursor(void);
YSI 4:38d0fe9c8eb6 121
YSI 1:a805daa83dd0 122 /** active l'affichage
YSI 1:a805daa83dd0 123 *
YSI 1:a805daa83dd0 124 * @param aucun
YSI 1:a805daa83dd0 125 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 126 */
YSI 1:a805daa83dd0 127 int turn_on_display(void);
YSI 4:38d0fe9c8eb6 128
YSI 1:a805daa83dd0 129 /** désactive l'affichage
YSI 1:a805daa83dd0 130 *
YSI 1:a805daa83dd0 131 * @param aucun
YSI 1:a805daa83dd0 132 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 133 */
YSI 1:a805daa83dd0 134 int turn_off_display(void);
YSI 4:38d0fe9c8eb6 135
YSI 1:a805daa83dd0 136 /** déplace le curseur vers la gauche
YSI 1:a805daa83dd0 137 *
YSI 1:a805daa83dd0 138 * @param n est le nombre de déplacement du curseur
YSI 1:a805daa83dd0 139 * @returns aucun
YSI 1:a805daa83dd0 140 */
YSI 9:0acc7e2330c6 141 void shift_left_cursor(int n=1);
YSI 4:38d0fe9c8eb6 142
YSI 1:a805daa83dd0 143 /** déplace le curseur vers la droite
YSI 1:a805daa83dd0 144 *
YSI 1:a805daa83dd0 145 * @param n est le nombre de déplacement du curseur
YSI 1:a805daa83dd0 146 * @returns aucun
YSI 1:a805daa83dd0 147 */
YSI 9:0acc7e2330c6 148 void shift_right_cursor(int n=1);
YSI 4:38d0fe9c8eb6 149
YSI 1:a805daa83dd0 150 /** déplace l'affichage vers la gauche
YSI 1:a805daa83dd0 151 *
YSI 1:a805daa83dd0 152 * @param n est le nombre de déplacement de l'affichage
YSI 1:a805daa83dd0 153 * @returns aucun
YSI 1:a805daa83dd0 154 */
YSI 9:0acc7e2330c6 155 void shift_left_display(int n=1);
YSI 4:38d0fe9c8eb6 156
YSI 1:a805daa83dd0 157 /** déplace l'affichage vers la droite
YSI 1:a805daa83dd0 158 *
YSI 1:a805daa83dd0 159 * @param n est le nombre de déplacement de l'affichage
YSI 1:a805daa83dd0 160 * @returns aucun
YSI 1:a805daa83dd0 161 */
YSI 9:0acc7e2330c6 162 void shift_right_display(int n=1);
YSI 4:38d0fe9c8eb6 163
YSI 1:a805daa83dd0 164 /** active le déplacement automatique de l'affichage vers la droite
YSI 1:a805daa83dd0 165 *
YSI 1:a805daa83dd0 166 * @param aucun
YSI 1:a805daa83dd0 167 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 168 */
YSI 0:0549f4c4896c 169 int enable_auto_shift_right_display(void);
YSI 4:38d0fe9c8eb6 170
YSI 1:a805daa83dd0 171 /** active le déplacement automatique de l'affichage vers la gauche
YSI 1:a805daa83dd0 172 *
YSI 1:a805daa83dd0 173 * @param aucun
YSI 1:a805daa83dd0 174 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 175 */
YSI 0:0549f4c4896c 176 int enable_auto_shift_left_display(void);
YSI 4:38d0fe9c8eb6 177
YSI 1:a805daa83dd0 178 /** désactive le déplacement automatique de l'affichage
YSI 1:a805daa83dd0 179 *
YSI 1:a805daa83dd0 180 * @param aucun
YSI 1:a805daa83dd0 181 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 182 */
YSI 0:0549f4c4896c 183 int disable_auto_shift_display(void);
YSI 4:38d0fe9c8eb6 184
YSI 1:a805daa83dd0 185 /** configure le déplacement automatique du curseur vers la droite
YSI 1:a805daa83dd0 186 *
YSI 1:a805daa83dd0 187 * @param aucun
YSI 1:a805daa83dd0 188 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 189 */
YSI 0:0549f4c4896c 190 int auto_shift_right_cursor(void);
YSI 4:38d0fe9c8eb6 191
YSI 1:a805daa83dd0 192 /** configure le déplacement automatique du curseur vers la droite
YSI 1:a805daa83dd0 193 *
YSI 1:a805daa83dd0 194 * @param aucun
YSI 1:a805daa83dd0 195 * @returns acknoledge write i2c
YSI 1:a805daa83dd0 196 */
YSI 0:0549f4c4896c 197 int auto_shift_left_cursor(void);
YSI 4:38d0fe9c8eb6 198
YSI 4:38d0fe9c8eb6 199 /** renvoie le caractere se trouvant à la position du curseur
YSI 4:38d0fe9c8eb6 200 *
YSI 5:feba12f32d06 201 * @param aucun
YSI 5:feba12f32d06 202 * @returns le caractere se trouvant à position du curseur
YSI 4:38d0fe9c8eb6 203 */
YSI 4:38d0fe9c8eb6 204 char read(void);
YSI 4:38d0fe9c8eb6 205
YSI 4:38d0fe9c8eb6 206 /** renvoie le caractere se trouvant à la position spécifiée
YSI 4:38d0fe9c8eb6 207 *
YSI 4:38d0fe9c8eb6 208 * @param X est la position sur la ligne
YSI 5:feba12f32d06 209 * @param Y est la position sur la colone
YSI 5:feba12f32d06 210 * @returns le caractere se trouvant à position X et Y
YSI 4:38d0fe9c8eb6 211 */
YSI 4:38d0fe9c8eb6 212 char read(int X, int Y);
YSI 4:38d0fe9c8eb6 213
YSI 10:246c6f2dc45b 214 /** affiche une variable sur l'afficheur
YSI 1:a805daa83dd0 215 *
YSI 11:86ebe0fc54f9 216 * @param nb la variable à afficher
YSI 1:a805daa83dd0 217 * @returns acknoledge write i2c
YSI 5:feba12f32d06 218 */
YSI 10:246c6f2dc45b 219 int print(int nb);
YSI 10:246c6f2dc45b 220 int print(unsigned int nb);
YSI 1:a805daa83dd0 221 int print(short nb);
YSI 1:a805daa83dd0 222 int print(unsigned short nb);
YSI 1:a805daa83dd0 223 int print(long long nb);
YSI 1:a805daa83dd0 224 int print(unsigned long long nb);
YSI 1:a805daa83dd0 225 int print(float nb);
YSI 0:0549f4c4896c 226 int print(double nb);
YSI 10:246c6f2dc45b 227 int print(char c);
YSI 10:246c6f2dc45b 228 int print(char *s);
YSI 1:a805daa83dd0 229
YSI 10:246c6f2dc45b 230 /** affiche une chaine formaté sur l'afficheur
YSI 10:246c6f2dc45b 231 *
YSI 11:86ebe0fc54f9 232 * @param format la chaine de format à afficher
YSI 10:246c6f2dc45b 233 * @param ... les arguments à afficher
YSI 10:246c6f2dc45b 234 * @returns acknoledge write i2c
YSI 10:246c6f2dc45b 235 */
YSI 11:86ebe0fc54f9 236 int print(const char *format, ... );
YSI 1:a805daa83dd0 237
YSI 1:a805daa83dd0 238 private:
YSI 0:0549f4c4896c 239 DigitalInOut m_pin_rst;
YSI 0:0549f4c4896c 240 int m_address;
YSI 0:0549f4c4896c 241
YSI 0:0549f4c4896c 242 int init(void);
YSI 0:0549f4c4896c 243 void reset(void);
YSI 1:a805daa83dd0 244 int putnc(char *s, int n);
YSI 1:a805daa83dd0 245
YSI 1:a805daa83dd0 246 void X_move_position(int n);
YSI 4:38d0fe9c8eb6 247 int X40_position_cursor;
YSI 4:38d0fe9c8eb6 248 int X80_position_cursor;
YSI 4:38d0fe9c8eb6 249 int Y2_position_cursor;
YSI 4:38d0fe9c8eb6 250 char LCD_Data_Register[80];
YSI 0:0549f4c4896c 251 };
YSI 0:0549f4c4896c 252
YSI 0:0549f4c4896c 253 #endif