Controlando Display LCD I2C Con Arduino

by sabas1080 in Circuits > Arduino

6319 Views, 24 Favorites, 0 Comments

Controlando Display LCD I2C Con Arduino

LCDdisplay.jpg

Hace unos días nos llegaron unas LCD’s I2C de 16×2 y no se si alguna vez te ha pasado que estas haciendo un proyecto con muchos componentes y debes usar una pantalla LCD que se lleva 6 pines de tu Arduino y todo se vuelve un caos porque ya no tienes pines disponibles en tu Arduino

Aquí es donde entran las pantallas LCD I2C como una posible solución en estos casos porque solo usara 2 pines de tu Arduino, así es solo dos cables (sin considerar VCC y GND) ademas de obtener los beneficios del I2C de poder conectar en ese mismo cable otros dispositivos I2C con distinta direccion

Material

LCDdisplay.jpg
ArduinoUno_R3_Front.jpg
IMG_20150718_175148110.jpg

El material que necesitamos para hacer esta prueba es:

  • Arduino UNO
  • LCD 16x2 I2C
  • Cables Macho-Macho
  • Protoboard

Diagrama De Conexión

esquemalcdI2C.png
esquemalcd.jpg

Si tu ya tienes una pantalla LCD de 16×2 como la que se muestra en la imagen, debes conectarlo como en el circuito anterior, como te podrás dar cuenta la conexión es muy sencilla solo debemos conectar cuatro cables de los cuales dos son alimentación VCC y GND, los otros dos son SDA y SCL que son para el control del dispositivo

Programacion

Después debes descargar la libreria agregarlo a nuestro IDE de arduino y reiniciar

www.4tronix.co.uk/arduino/sketches/LiquidCrystal_V1.2.1.zip

Ahora si queremos probar nuestra pantalla pueden cargar el siguiente sketch, si se pueden dar cuenta no hay gran diferencia en como se maneja una LCD normal

/*-----( Import needed libraries )-----*/
#include // Comes with Arduino IDE // Get the LCD I2C Library here: // www.4tronix.co.uk/arduino/sketches/LiquidCrystal_... // Move any other LCD libraries to another folder or delete them // See Library "Docs" folder for possible commands etc. #include

/*-----( Declare Constants )-----*/ /*-----( Declare objects )-----*/ // set the LCD address to 0x27 for a 16 chars 2 line display // Set the pins on the I2C chip used for LCD connections: // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address /*-----( Declare Variables )-----*/ //NONE void setup() /*----( SETUP: RUNS ONCE )----*/ { Serial.begin(9600); // Used to type in characters lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight // ------- Quick 3 blinks of backlight ------------- for(int i = 0; i< 3; i++) { lcd.backlight(); delay(250); lcd.noBacklight(); delay(250); } lcd.backlight(); // finish with backlight on //-------- Write characters on the display ------------------ // NOTE: Cursor Position: (CHAR, LINE) start at 0 lcd.setCursor(0,0); //Start at character 4 on line 0 lcd.print("Hello, world!"); delay(1000); lcd.setCursor(0,1); lcd.print("TIH I2C LCD"); // Print text on second line delay(8000); // Wait and then tell user they can start the Serial Monitor and type in characters to // Display. (Set Serial Monitor option to "No Line Ending") /* lcd.clear(); lcd.setCursor(0,0); //Start at character 0 on line 0 lcd.print("Use Serial Mon"); lcd.setCursor(0,1); lcd.print("Type to display"); */ }/*--(end setup )---*/ void loop() /*----( LOOP: RUNS CONSTANTLY )----*/ { { // when characters arrive over the serial port... if (Serial.available()) { // wait a bit for the entire message to arrive delay(100); // clear the screen //lcd.clear(); // read all the available characters while (Serial.available() > 0) { // display each character to the LCD //lcd.write(Serial.read()); } } } }

Si la pantalla no es detectada por el arduino prueba con cambiar POSITIVE por NEGATIVE o en como fue en mi caso cambiar la direccion en I2C de la pantalla fue también una solución